ステップ 2: ハイブリッド環境に IAM サービスロールを作成する - AWS Systems Manager

ステップ 2: ハイブリッド環境に IAM サービスロールを作成する

ハイブリッド環境のサーバーおよび仮想マシン (VM) が AWS Systems Manager サービスと通信するには、AWS Identity and Access Management (IAM) ロールが必要です。ロールは、Systems Manager サービスに AWS Security Token Service (AWS STS) AssumeRole の信頼を付与します。AWS アカウント ごとにハイブリッド環境の用にサービスロールを一度のみ作成する必要があります ただし、ハイブリッド環境のマシンに異なる権限が必要な場合、異なるハイブリッドアクティベーションに対して複数のサービスロールを作成することもできます。

以下の手順は、Systems Manager コンソールまたはお好みのコマンドラインツールを使用して、必要なサービスロールを作成する方法を説明します。

IAM サービスロール (コンソール)を作成

ハイブリッドアクティベーションのサービスロールを作成するために、以下の手順にしたがいます。この手順は Systems Manager の主要機能に AmazonSSMManagedInstanceCore ポリシーを使用することにご留意ください。ユースケースによっては、オンプレミスマシン他の機能または AWS のサービスにアクセスできるようにするため、サービスロールにポリシーを追加する必要がある場合があります。例えば、必要な AWS マネージド型 Amazon Simple Storage Service (Amazon S3) バケットにアクセスがなければ、Patch Manager パッチ運用オペレーションが失敗します。

サービスロールを作成するには (コンソール)

  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. ナビゲーションペインで [Roles] を選択し、続いて [Create role] を選択します。

  3. 以下の選択を行います。

    1. [Select type of trusted entity] (信頼されたエンティティの種類を選択) エリア: [AWS service] (AWS のサービス)

    2. [このロールを使用するサービスを選択] エリア: [Systems Manager]

  4. [Next: Permissions (次へ: アクセス許可)] を選択します。

  5. ポリシーのリストで、AmazonSSMManagedInstanceCoreのボックスを選択し、次へ: タグを選択します。

  6. (オプション) 1 つ以上のタグ/値ペアを追加して、このロールのアクセスを整理、追跡、または制御し、[次へ: 確認] を選択します。

  7. ロール名に、このロールをハイブリッドアクティベーション サービスロールとして識別する名前を入力します。例: my-hybrid-service-role

  8. (オプション) デフォルトのロールの説明を変更して、このロールの目的を反映させます。例: Provides permissions for on-premises machines

  9. [ロールの作成] を選択します。[Roles] (ロール) ページが再度表示されます。

IAM サービスロール (コマンドライン) を作成

ハイブリッドアクティベーションのサービスロールを作成するために、以下の手順にしたがいます。この手順は AmazonSSMManagedInstanceCore ポリシー Systems Manager の主要機能を使うことをご留意ください。ユースケースによっては、オンプレミスマシン他の機能または AWS のサービスにアクセスできるようにするため、サービスロールにポリシーを追加する必要がある場合があります。

S3 バケットのポリシーの要件

次のいずれかのケースに当てはまる場合は、この手順を実行する前に Amazon Simple Storage Service (Amazon S3) バケット用のカスタム IAM アクセス許可ポリシーを作成する必要があります。

  • ケース 1: VPC エンドポイントを使用して、サポートされている AWS のサービス、および AWS PrivateLink を搭載した VPC エンドポイントサービスに VPC をプライベート接続しています。

  • ケース 2: Run Command コマンドや Session Manager セッションの出力を Amazon S3 バケットに保存するなど、Systems Manager オペレーションの一環として作成する Amazon S3 バケットを使用します。先に進む前に、「インスタンスプロファイル用のカスタム S3 バケットポリシーを作成する」の手順に従います。そのトピックの S3 バケットポリシーに関する情報は、サービスロールにも適用されます。

AWS CLI

ハイブリッド環境に IAM サービスロールを作成するには (AWS CLI)

  1. まだ AWS Command Line Interface (AWS CLI) をインストールして設定していない場合は、インストールして設定します。

    詳細については、「AWS コマンドラインツールのインストールまたはアップグレード」を参照してください。

  2. ローカルマシンで以下の信頼ポリシーを使用して、SSMService-Trust.json のような名前でテキストファイルを作成します。ファイル保存時に、必ずファイル拡張子 (.json) を付けます。ハイブリッドアクティベーションを作成した際の ARN 内の AWS アカウント と AWS リージョン を必ず指定してください。

    { "Version":"2012-10-17", "Statement":[ { "Sid":"", "Effect":"Allow", "Principal":{ "Service":"ssm.amazonaws.com" }, "Action":"sts:AssumeRole", "Condition":{ "StringEquals":{ "aws:SourceAccount":"123456789012" }, "ArnEquals":{ "aws:SourceArn":"arn:aws:ssm:us-east-2:123456789012:*" } } } ] }
  3. AWS CLI を開き、JSON ファイルを作成したディレクトリで create-role コマンドを実行してサービスロールを作成します。この例では、SSMServiceRole という名前のロールが作成されます。別の名前を選択することもできます。

    Linux & macOSWindows
    Linux & macOS
    aws iam create-role \ --role-name SSMServiceRole \ --assume-role-policy-document file://SSMService-Trust.json
    Windows
    aws iam create-role ^ --role-name SSMServiceRole ^ --assume-role-policy-document file://SSMService-Trust.json
  4. 以下のように attach-role-policy を実行して、先ほど作成したサービスロールでセッショントークンを作成できるようにします。セッショントークンは、Systems Manager を使用してコマンドを実行するためのアクセス許可をマネージドインスタンスに付与します。

    注記

    ハイブリッド環境のマネージドインスタンスのサービスプロファイルに追加するポリシーは、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスのインスタンスプロファイルの作成に使用されるものと同じポリシーです。以下のコマンドで使用する AWS ポリシーの詳細については、「Systems Manager の IAM インスタンスプロファイルを作成する」を参照してください。

    (必須) 次のコマンドを使用して、マネージドインスタンスで AWS Systems Manager サービスの主要機能を使用できるようにします。

    Linux & macOSWindows
    Linux & macOS
    aws iam attach-role-policy \ --role-name SSMServiceRole \ --policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
    Windows
    aws iam attach-role-policy ^ --role-name SSMServiceRole ^ --policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore

    サービスロールのカスタム S3 バケットポリシーを作成した場合は、次のコマンドを実行して、ポリシーで指定したバケットに AWS Systems Manager Agent (SSM Agent) がアクセスできるようにします。account-id および my-bucket-policy-name を AWS アカウント ID およびバケット名に置き換えます。

    Linux & macOSWindows
    Linux & macOS
    aws iam attach-role-policy \ --role-name SSMServiceRole \ --policy-arn arn:aws:iam::account-id:policy/my-bucket-policy-name
    Windows
    aws iam attach-role-policy ^ --role-name SSMServiceRole ^ --policy-arn arn:aws:iam::account-id:policy/my-bucket-policy-name

    (オプション) 次のコマンドを実行して、マネージドインスタンスによるドメインへの結合リクエストに対して、代わりに SSM Agent が AWS Directory Service にアクセスできるようにします。インスタンスを Microsoft AD ディレクトリに結合する場合にのみ、インスタンスプロファイルにこのポリシーが必要です。

    Linux & macOSWindows
    Linux & macOS
    aws iam attach-role-policy \ --role-name SSMServiceRole \ --policy-arn arn:aws:iam::aws:policy/AmazonSSMDirectoryServiceAccess
    Windows
    aws iam attach-role-policy ^ --role-name SSMServiceRole ^ --policy-arn arn:aws:iam::aws:policy/AmazonSSMDirectoryServiceAccess

    (オプション) 次のコマンドを実行して、CloudWatch エージェントがマネージドインスタンスで実行できるようにします。このコマンドでは、インスタンスの情報を読み込み、CloudWatch に書き込むことができます。サービスプロファイルには、Amazon EventBridge や Amazon CloudWatch Logs などのサービスを利用する場合にのみ、このポリシーが必要です。

    aws iam attach-role-policy \ --role-name SSMServiceRole \ --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy
Tools for PowerShell

ハイブリッド環境に IAM サービスロールを作成するには (AWS Tools for Windows PowerShell)

  1. まだ AWS Tools for PowerShell をインストールして設定していない場合は、インストールして設定します。

    詳細については、「AWS コマンドラインツールのインストールまたはアップグレード」を参照してください。

  2. ローカルマシンで以下の信頼ポリシーを使用して、SSMService-Trust.json のような名前でテキストファイルを作成します。ファイル保存時に、必ずファイル拡張子 (.json) を付けます。ハイブリッドアクティベーションを作成した際の ARN 内の AWS アカウント と AWS リージョン を必ず指定してください。

    { "Version":"2012-10-17", "Statement":[ { "Sid":"", "Effect":"Allow", "Principal":{ "Service":"ssm.amazonaws.com" }, "Action":"sts:AssumeRole", "Condition":{ "StringEquals":{ "aws:SourceAccount":"123456789012" }, "ArnEquals":{ "aws:SourceArn":"arn:aws:ssm:us-east-2:123456789012:*" } } } ] }
  3. PowerShell を管理モードで開き、JSON ファイルを作成したディレクトリで以下のように New-IAMRole を実行してサービスロールを作成します。この例では、SSMServiceRole という名前のロールが作成されます。別の名前を選択することもできます。

    New-IAMRole ` -RoleName SSMServiceRole ` -AssumeRolePolicyDocument (Get-Content -raw SSMService-Trust.json)
  4. 以下のように、Register-IAMRolePolicy を使用して、作成したサービスロールでセッショントークンを作成できます。セッショントークンは、Systems Manager を使用してコマンドを実行するためのアクセス許可をマネージドインスタンスに付与します。

    注記

    ハイブリッド環境のマネージドインスタンスのサービスプロファイルに追加するポリシーは、EC2 インスタンスのインスタンスプロファイルの作成に使用されるものと同じポリシーです。以下のコマンドで使用する AWS ポリシーの詳細については、「Systems Manager の IAM インスタンスプロファイルを作成する」を参照してください。

    (必須) 次のコマンドを使用して、マネージドインスタンスで AWS Systems Manager サービスの主要機能を使用できるようにします。

    Register-IAMRolePolicy ` -RoleName SSMServiceRole ` -PolicyArn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore

    サービスロールのカスタム S3 バケットポリシーを作成した場合は、次のコマンドを実行し、ポリシーで指定したバケットに SSM Agent がアクセスできるようにします。account-id および my-bucket-policy-name を AWS アカウント ID およびバケット名に置き換えます。

    Register-IAMRolePolicy ` -RoleName SSMServiceRole ` -PolicyArn arn:aws:iam::account-id:policy/my-bucket-policy-name

    (オプション) 次のコマンドを実行して、マネージドインスタンスによるドメインへの結合リクエストに対して、代わりに SSM Agent が AWS Directory Service にアクセスできるようにします。インスタンスを Microsoft AD ディレクトリに結合する場合にのみ、インスタンスプロファイルにこのポリシーが必要です。

    Register-IAMRolePolicy ` -RoleName SSMServiceRole ` -PolicyArn arn:aws:iam::aws:policy/AmazonSSMDirectoryServiceAccess

    (オプション) 次のコマンドを実行して、CloudWatch エージェントがマネージドインスタンスで実行できるようにします。このコマンドでは、インスタンスの情報を読み込み、CloudWatch に書き込むことができます。サービスプロファイルには、Amazon EventBridge や Amazon CloudWatch Logs などのサービスを利用する場合にのみ、このポリシーが必要です。

    Register-IAMRolePolicy ` -RoleName SSMServiceRole ` -PolicyArn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy

ステップ 3: ハイブリッド環境用のマネージドインスタンスのアクティベーションを作成」に進みます。