ステップ 4: Systems Manager の IAM インスタンスプロファイルを作成する - AWS Systems Manager

ステップ 4: Systems Manager の IAM インスタンスプロファイルを作成する

デフォルトでは、AWS Systems Manager にはインスタンスでアクションを実行する権限がありません。AWS Identity and Access Management (IAM) インスタンスプロファイルを使用してアクセスを許可します。インスタンスプロファイルは、起動時に IAM ロール情報を Amazon Elastic Compute Cloud (Amazon EC2) インスタンスに渡すコンテナです。Systems Manager のインスタンスプロファイルを作成するには、必要なアクセス許可を定義する 1 つ以上の IAM ポリシーを、新しいロールか、作成済みのロールにアタッチします。

注記

AWS Systems Manager の一機能である Quick Setup を使用すると、AWS アカウント のあらゆるインスタンスでインスタンスプロファイルをすばやく設定できます。Quick Setup では、IAM サービスロール (またはロールの継承) を作成します。これにより、Systems Manager はユーザーに代わってインスタンスで安全にコマンドを実行できます。Quick Setup を使用すると、このステップ (ステップ 4) とステップ 5 をスキップできます。詳細については、「AWS Systems Manager Quick Setup」を参照してください。

IAM インスタンスプロファイルの作成に関する次の詳細情報に注意してください。

  • Systems Manager のハイブリッド環境でサーバーあるいは仮想マシン (VM) を設定する場合、インスタンスプロファイルを作成する必要はありません。代わりに、IAM サービス ロールを使用するようにサーバーと VM を設定します。詳細については、「ハイブリッド環境に IAM サービスロールを作成する」を参照してください。

  • IAM インスタンスプロファイルを変更した場合、インスタンスの認証情報が更新されるまでに時間がかかることがあります。更新されるまで、SSM Agent はリクエストを処理しません。更新プロセスを高速化するには、SSM Agent を再起動するか、インスタンスを再起動します。

Systems Manager インスタンスプロファイルのポリシーについて

このセクションでは、Systems Manager の EC2 インスタンスプロファイルに追加できるポリシーについて説明します。インスタンスと Systems Manager API 間における通信の許可を付与する場合、システムのニーズとセキュリティ要件を反映したカスタムポリシーを作成することをお勧めします。ただし、開始点として、Systems Manager がインスタンスとやり取りするためのアクセス許可を付与するために、以下の 1 つ以上のポリシーを使用できます。最初のポリシー、AmazonSSMManagedInstanceCore は、インスタンスが AWS Systems Manager サービスコア機能を使用できるようにします。オペレーションプランによっては、他の 3 つのポリシーの 1 つ以上のアクセス許可が必要になる場合があります。

ポリシー: AmazonSSMManagedInstanceCore

必要なアクセス許可。

この AWS マネージドポリシーにより、インスタンスは Systems Manager サービスコア機能を使用できます。

ポリシー: S3 バケットアクセスのカスタムポリシー

次のいずれかの場合に必要なアクセス許可:

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

    SSM Agent は、インスタンスにインストールされている Amazon ソフトウェアで、Systems Manager タスクを実行します。このエージェントは、特定の Amazon 所有の Amazon Simple Storage Service (Amazon S3) バケットにアクセスする必要があります。これらのバケットはパブリックアクセス可能です。

    ただし、プライベートの VPC エンドポイント環境では、これらのバケットへのアクセスを明示的に付与します。

    arn:aws:s3:::patch-baseline-snapshot-region/* arn:aws:s3:::aws-ssm-region/*

    詳細については、Amazon VPC ユーザーガイドステップ 6: (オプション) Virtual Private Cloud エンドポイントの作成SSM Agent と AWS マネージド S3 バケットとの通信、「AWS PrivateLink および VPC エンドポイント」を参照してください。

  • ケース 2: Systems Manager オペレーションの一環として作成する Amazon S3 バケットを使用します。

    Systems Manager の Amazon EC2 インスタンスプロファイルで、次のようなタスク用に所有している Amazon S3 バケットへのアクセスを許可する必要があります。

    • S3 バケットに保存した実行コマンドに使用するスクリプトをアクセスする。

    • Run Command コマンドまたは Session Manager セッションの完全な出力を保存する。

    • インスタンスにパッチを適用するときに使用するカスタムパッチリストにアクセスする。

注記

S3 バケットに出力ログデータを保存することはオプションですが、保存することにした場合は、Systems Manager 設定プロセスの最初に設定することをお勧めします。詳細については、Amazon Simple Storage Service ユーザーガイドの「バケットの作成」を参照してください。

ポリシー: AmazonSSMDirectoryServiceAccess

Windows Server の Amazon EC2 インスタンスを Microsoft AD ディレクトリに結合する場合にのみ必要です。

AWS 管理ポリシーでは、マネージドインスタンスによるドメインの結合リクエストに対して、SSM Agent による AWS Directory Service へのアクセスをお客様の代わりに許可します。詳細については、 AWS Directory Service 管理ガイドの 「Windows EC2 インスタンスにシームレスに参加する」を参照してください。

ポリシー: CloudWatchAgentServerPolicy

メトリクスを読み取り、インスタンスにデータのログを記録して Amazon CloudWatch に書き込むために、インスタンスに CloudWatch をインストールして実行する場合にのみ必要です。これらは、AWS リソースの問題や変更をモニタリング、分析、および迅速に対応するのに役立ちます。

このポリシーは、Amazon EventBridge や CloudWatch Logs などの機能を使用する場合にのみ、インスタンスプロファイルに必要です。(例えば、特定の CloudWatch Logs ログストリームへの書き込みアクセスを制限する、より制限の厳しいポリシーを作成することもできます)。

注記

EventBridge と CloudWatch Logs 機能の使用はオプションですが、使用することにした場合は、Systems Manager 設定プロセスの開始時にそれらを設定することをお勧めします。詳細については、Amazon EventBridge ユーザーガイドおよび Amazon CloudWatch Logs ユーザーガイドを参照してください。

追加の Systems Manager サービスのアクセス許可を持つインスタンスプロファイルを作成するには、次のリソースを参照してください。

タスク 1: Systems Manager インスタンスプロファイルに許可を追加する (コンソール)

インスタンスプロファイルに新しいロールを作成するか、既存のロールに必要なアクセス許可を追加するかに応じて、以下のいずれかの手順を実行します。

Systems Manager マネージドインスタンスのインスタンスプロファイルを作成するには (コンソール)

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

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

  3. [Select type of trusted entity ] (信頼されたエンティティの種類を選択) の下で、[AWS service ] (AWS サービス) を選択します。

  4. [Choose the service that will use this role] (このロールを使用するサービスを選択) のすぐ下で、[EC2] を選択し、次に [Next: Permissions] (次へ: アクセス許可) を選択します。

    
                                IAM コンソールで EC2 サービスを選択する
  5. [Attach permissions policies (アクセス許可ポリシーのアタッチ)] ページで、以下の操作を行います。

    • [検索] フィールドを使用して、[AmazonSSMManagedInstanceCore] を見つけます。名前の横にあるボックスを選択します。

      
                                        IAM コンソールで EC2 サービスを選択する

      他のポリシーを検索しても、コンソールでは選択内容が保持されます。

    • 以前の手順 タスク 2: (オプション) S3 バケットアクセスのカスタムポリシーを作成する でカスタムの S3 バケットポリシーを作成した場合は、それを検索してその名前の横にあるチェックボックスをオンにします。

    • AWS Directory Service によって管理されている Active Directory にインスタンスを結合する場合は、[AmazonSSMDirectoryServiceAccess] を検索し、その名前の横にあるチェックボックスをオンにします。

    • EventBridge または CloudWatch Logs を使用して、インスタンスを管理またはモニタリングする場合は、[CloudWatchAgentServerPolicy] を検索し、その名前の横にあるチェックボックスをオンにします。

  6. [次へ: タグ] を選択します。

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

  8. [ロール名] に、新しいインスタンスプロファイルの名前を入力 (SSMInstanceProfile など) するか、希望する別の名前を入力します。

    注記

    ロール名を書き留めます。このロール名は、Systems Manager を使用して管理するインスタンスを新しく作成する際に選択します。

  9. (オプション) [Role description (ロールの説明)] に、インスタンスプロファイルの説明を入力します。

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

Systems Manager のインスタンスプロファイルのアクセス許可を既存のロールに追加するには (コンソール)

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

  2. ナビゲーションペインで、[ロール] を選択して、Systems Manager オペレーションのためにインスタンスプロファイルに関連付ける既存のロールを選択します。

  3. [Permissions (アクセス許可)] タブで、[Attach policy (ポリシーのアタッチ)] を選択します。

  4. [Attach permission policies (アクセス許可ポリシーのアタッチ)] ページで、以下の操作を行います。

    • 必要な [AmazonSSMManagedInstanceCore] 管理ポリシーの横にあるチェックボックスをオンにします。

    • カスタムの S3 バケットポリシーを作成した場合は、その名前の横にあるチェックボックスをオンにします。インスタンスプロファイルのカスタム S3 バケットポリシーについては、「タスク 2: (オプション) S3 バケットアクセスのカスタムポリシーを作成する」を参照してください。

    • AWS Directory Service によって管理されている Active Directory にインスタンスを結合する場合は、[AmazonSSMDirectoryServiceAccess] の横にあるチェックボックスをオンにします。

    • EventBridge または CloudWatch Logs を使用してインスタンスを管理またはモニタリングする場合は、[CloudWatchAgentServerPolicy] の横にあるボックスを選択します。

  5. [ポリシーのアタッチ] を選択します。

信頼できるエンティティを含むように、またはさらにアクセスを制限するようにロールを更新する方法については、IAM ユーザーガイドの「ロールの修正」を参照してください。

ステップ 5: IAM インスタンスプロファイルを Amazon EC2 インスタンスにアタッチする」に進んでください。

タスク 2: (オプション) S3 バケットアクセスのカスタムポリシーを作成する

Amazon S3 アクセス用のカスタムポリシーは、VPC エンドポイントを使用している場合、または Systems Manager オペレーションに独自の S3 バケットを使用している場合にのみ作成する必要があります。

以下のポリシーでアクセスを付与する AWS マネージドの S3 バケットの詳細については、「SSM Agent と AWS マネージド S3 バケットとの通信」を参照してください。

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

  2. ナビゲーションペインで [Policies] (ポリシー) を選択してから [Create policy] (ポリシーの作成) を選択します。

  3. [JSON] をタブを選択し、デフォルトのテキストを以下に置き換えます。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": [ "arn:aws:s3:::aws-ssm-region/*", "arn:aws:s3:::aws-windows-downloads-region/*", "arn:aws:s3:::amazon-ssm-region/*", "arn:aws:s3:::amazon-ssm-packages-region/*", "arn:aws:s3:::region-birdwatcher-prod/*", "arn:aws:s3:::aws-ssm-distributor-file-region/*", "arn:aws:s3:::aws-ssm-document-attachments-region/*", "arn:aws:s3:::patch-baseline-snapshot-region/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:PutObjectAcl", "s3:GetEncryptionConfiguration" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "arn:aws:s3:::DOC-EXAMPLE-BUCKET" ] } ] }

    1 最初の Statement エレメントは、VPC エンドポイントを使用する場合にのみ必要です。

    2 2 番目の Statement エレメントは、Systems Manager オペレーションで使用するために作成した S3 バケットを使用する場合にのみ必要です。

    3 PutObjectAcl アクセスコントロールリストは、他のアカウントで S3 バケットへのクロスアカウントアクセスをサポートする場合にのみ必要です。

    4 S3 バケットが暗号化を使用するように設定されている場合、GetEncryptionConfiguration エレメントが必要です。

    5 S3 バケットが暗号化を使用するように設定されている場合、S3 バケットのルート (例: arn:aws:s3:::DOC-EXAMPLE-BUCKET) が [リソース] セクションに表示されている必要があります。IAM ユーザー、グループ、またはロールには、ルートバケットへのアクセスを設定する必要があります。

  4. オペレーションで VPC エンドポイントを使用する場合は、以下の操作を行います。

    最初の Statement エレメントで、region の各プレースホルダーを、このポリシーが使用される AWS リージョン の識別子に置き換えます。例えば、米国東部 (オハイオ) リージョンの場合は、us-east-2 を使用します。サポートされている region 値の一覧については、アマゾン ウェブ サービスの全般リファレンスの「Systems Manager サービスエンドポイント」にある Region 列を参照してください。

    重要

    このポリシーの特定のリージョンの代わりにワイルドカード文字 (*) を使用しないことをお勧めします。たとえば、arn:aws:s3:::aws-ssm-us-east-2/* を使用して、arn:aws:s3:::aws-ssm-*/* は使用しないでください。ワイルドカードを使用すると、アクセスを付与する S3 バケットへのアクセス権が付与される場合があります。複数のリージョンでインスタンスプロファイルを使用する場合は、各リージョンの最初の Statement エレメントを繰り返すことをお勧めします。

    -または-

    オペレーションで VPC エンドポイントを使用しない場合は、最初の Statement エレメントは削除することができます。

  5. Systems Manager オペレーションで独自の S3 バケットを使用する場合は、以下の操作を行います。

    2 つめの Statement エレメントで、DOC-EXAMPLE-BUCKET をアカウントの S3 バケットの名前に置き換えます。このバケットは、Systems Manager のオペレーションに使用します。バケットのオブジェクトにアクセス許可を付与します。この際、"arn:aws:s3:::my-bucket-name/*" をリソースとして使用します。バケット、またはバケットのオブジェクトに許可を付与する方法については、Amazon Simple Storage Service ユーザーガイドのトピック「Amazon S3 アクション」および AWS ブログ記事「IAM ポリシーとバケットポリシーと ACL!」を参照してください。Oh, My! (Controlling Access to S3 Resources).

    注記

    複数のバケットを使用する場合は、それぞれの ARN を入力します。たとえば、バケットのアクセス許可の場合は次のように行います。

    "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET1/*", "arn:aws:s3:::DOC-EXAMPLE-BUCKET2/*" ]

    -または-

    Systems Manager オペレーションで独自の S3 バケットを使用していない場合は、2 つめの Statement エレメントは削除できます。

  6. [ポリシーの確認] を選択します。

  7. [名前] に、ポリシーの識別名 (SSMInstanceProfileS3Policy など) を入力するか、希望する別の名前を入力します。

  8. [Create policy] を選択します。