ステップ 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 インスタンスプロファイルのポリシーについて

このセクションでは、AWS Systems Manager の EC2 インスタンスプロファイルに追加できるポリシーについて説明します。インスタンスと Systems Manager API 間における通信の許可を付与する場合、システムのニーズとセキュリティ要件を反映したカスタムポリシーを作成することをお勧めします。ただし、開始点として、Systems Manager がインスタンスとやり取りするためのアクセス許可を付与するために、以下の 1 つ以上のポリシーを使用できます。最初のポリシー AmazonSSMManagedInstanceCore により、インスタンスで 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: VPC エンドポイントの作成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 や Amazon CloudWatch Logs などの機能を使用する場合にのみ、インスタンスプロファイルに必要です。(例えば、特定の CloudWatch Logs ログストリームへの書き込みアクセスを制限する、より制限の厳しいポリシーを作成することもできます)。

注記

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

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

タスク 1: (オプション) 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. [Next: Tags] (次へ: タグ) を選択します。

  7. (オプション) [Add tag] (タグを追加) を選択してタグを追加し、ポリシーの優先タグを入力します。

  8. 次へ: レビューを選択します。

  9. [Name] (名前) に、このポリシーを識別するための名前 (SSMInstanceProfileS3Policy など) を入力します。

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

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

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

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

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

  2. ナビゲーションペインで [Roles] (ロール) を選択してから、[Create role] (ロールを作成する) を選択します。

  3. [Trusted entity type] (信頼できるエンティティタイプ) で、[AWS のサービス] を選択します。

  4. [Use case] (ユースケース) で [EC2] を選択し、[Next] (次へ) を選択します。

  5. [Add permissions] (アクセス許可を追加する) ページで、以下を実行します。

    • [Search] (検索) フィールドを使用して、[AmazonSSMManagedInstanceCore] ポリシーを検索します。名前の横にあるチェックボックスを選択します。

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

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

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

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

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

  6. [Next] を選択します。

  7. [Role name] (ロール名) に、新しいインスタンスプロファイルの名前 (SSMInstanceProfile など) を入力します。

    注記

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

  8. (オプション) [Description] (説明) にある、このインスタンスプロファイルの説明を更新します。

  9. (オプション) [Tags] (タグ) で、1 つ以上のタグキーと値のペアを追加し、このロールのアクセスを整理、追跡、制御して、[Create role] (ロールの作成) を選択します。[Roles] (ロール) ページが再度表示されます。

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

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

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

  3. [Permissions] (アクセス許可) タブで、[Add permissions, Attach policies] (アクセス許可の追加、ポリシーのアタッチ) をクリックします。

  4. [Attach Policy ] (ポリシーのアタッチ) ページで、次の操作を実行します。

    • [Search] (検索) フィールドを使用して、[AmazonSSMManagedInstanceCore] ポリシーを検索します。名前の横にあるチェックボックスを選択します。

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

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

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

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

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

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