Systems Manager に必要なインスタンスのアクセス許可を設定する - AWS Systems Manager

Systems Manager に必要なインスタンスのアクセス許可を設定する

デフォルトでは、AWS Systems Manager にはインスタンスでアクションを実行する権限がありません。インスタンスのアクセス許可は、AWS Identity and Access Management (IAM) ロールを使用してアカウントレベルで付与するか、またはインスタンスプロファイルを使用してインスタンスレベルで付与することができます。可能であれば、デフォルトのホスト管理設定を使用してアカウントレベルでアクセスを付与することをお勧めします。

EC2 インスタンスのアクセス許可の推奨設定

デフォルトのホスト管理設定では、Systems Manager が Amazon EC2 インスタンスを自動的に管理することができます。この設定をオンにすると、SSM Agent バージョン 3.2.582.0 以降がインストールされている AWS リージョン および AWS アカウント で、インスタンスメタデータサービスバージョン 2 (IMDSv2) を使用しているすべてのインスタンスが、自動的にマネージドインスタンスになります。デフォルトのホスト管理設定は、インスタンスメタデータサービスバージョン 1 をサポートしていません。IMDSv2 への移行の詳細については、「Amazon EC2 ユーザーガイド」の「インスタンスメタデータサービスバージョン 2 の使用への移行」を参照してください。インスタンスにインストールされている SSM Agent のバージョンを確認する方法については、「SSM Agent バージョン番号の確認」を参照してください。SSM Agent の更新方法については、「SSM Agent の自動更新」を参照してください。マネージドインスタンスには、次のような利点があります。

  • Session Manager を使用して安全にインスタンスに接続する。

  • Patch Manager を使用して自動パッチスキャンを実行する。

  • Systems Manager インベントリを使用して、インスタンスに関する詳細情報を表示する。

  • Fleet Manager を使用してインスタンスを追跡、管理する。

  • SSM Agent を自動的に最新の状態に保つ。

Fleet Manager、インベントリ、Patch Manager、Session Manager は、AWS Systems Manager の機能です。

デフォルトのホスト管理設定では、インスタンスプロファイルを使用せずにインスタンスを管理でき、Systems Manager にリージョンとアカウント内のすべてのインスタンスを管理するアクセス許可が付与されていることを確認できます。付与されたアクセス許可がユースケースに十分でない場合は、デフォルトのホスト管理設定で作成されたデフォルトの IAM ロールにポリシーを追加することもできます。また、デフォルトの IAM ロールで提供されるすべての機能の一部に対してのみアクセス許可が必要な場合は、独自のカスタムロールとポリシーを作成できます。デフォルトのホスト管理設定で選択した IAM ロールに加えられた変更は、リージョンとアカウントのすべてのマネージド Amazon EC2 インスタンスに適用されます。デフォルトのホスト管理設定で使用するポリシーの詳細については、「AWS マネージドポリシー: AmazonSSMManagedEC2InstanceDefaultPolicy」を参照してください。デフォルトのホスト管理設定に関する詳細については、「Default Host Management Configuration を使用した EC2 インスタンスの自動管理」を参照してください。

重要

デフォルトのホスト管理設定を使用して登録されたインスタンスは、登録情報を /lib/amazon/ssm または C:\ProgramData\Amazon ディレクトリへローカルに保存します。これらのディレクトリやファイルを削除すると、インスタンスはデフォルトのホスト管理設定を使用して Systems Manager に接続するために必要な認証情報を取得できなくなります。このような場合は、インスタンスプロファイルを使用してインスタンスに必要なアクセス許可を付与するか、インスタンスを再作成する必要があります。

注記

この手順を実行できるのは、管理者のみです。ユーザー個人がデフォルトのホスト管理設定を設定または変更できるようにする場合は、最小特権アクセス許可を実装してください。デフォルトのホスト管理設定は、Amazon EC2 インスタンスを自動的に管理したい AWS リージョン でオンにする必要があります。

デフォルトのホスト管理設定を有効にするには

デフォルトのホスト管理設定は、Fleet Manager コンソールからオンにできます。AWS Management Console または任意のコマンドラインツールを使用してこの手順を正常に完了するには、API オペレーション (GetServiceSettingResetServiceSettingUpdateServiceSetting) のアクセス許可が必要です。さらに、AWSSystemsManagerDefaultEC2InstanceManagementRole IAM ロールの iam:PassRole アクセス許可を付与する権限が必要です。以下は、ポリシーの例です。各リソースプレースホルダーの例をユーザー自身の情報に置き換えます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetServiceSetting", "ssm:ResetServiceSetting", "ssm:UpdateServiceSetting" ], "Resource": "arn:aws:ssm:region:account-id:servicesetting/ssm/managed-instance/default-ec2-instance-management-role" }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::account-id:role/service-role/AWSSystemsManagerDefaultEC2InstanceManagementRole", "Condition": { "StringEquals": { "iam:PassedToService": [ "ssm.amazonaws.com" ] } } } ] }

開始する前に、Amazon EC2 インスタンスにインスタンスプロファイルが添付されている場合は、ssm:UpdateInstanceInformation オペレーションを許可する権限をすべて削除してください。SSM Agent は、デフォルトのホスト管理設定のアクセス許可を使用する前に、インスタンスプロファイルのアクセス許可を使用しようとします。インスタンスプロファイルで ssm:UpdateInstanceInformation オペレーションを許可すると、インスタンスはデフォルトのホスト管理設定のアクセス許可を使用しません。

  1. AWS Systems Manager コンソール (https://console.aws.amazon.com/systems-manager/) を開きます。

  2. ナビゲーションペインで、[Fleet Manager] を選択します。

  3. [アカウント管理] ドロップダウンの一覧で [デフォルトのホスト管理設定] をクリックします。

  4. [デフォルトのホスト管理設定を有効にする] をオンにします。

  5. インスタンスの Systems Manager 機能を有効にするために使用する IAM ロールを選択します。デフォルトのホスト管理設定で提供されるデフォルトのロールを使用することをお勧めします。このロールには、Systems Manager を使用して Amazon EC2 インスタンスを管理するために必要となる最小限のアクセス許可のセットが含まれています。カスタムロールを使用する場合は、ロールの信頼ポリシーで Systems Manager を信頼できるエンティティとして許可する必要があります。

  6. [設定] をクリックして、セットアップを完了します。

デフォルトのホスト管理設定をオンにした後、選択したロールの認証情報をインスタンスが使用できるようになるまでに 30 分かかる場合があります。デフォルトのホスト管理設定は、Amazon EC2 インスタンスを自動的に管理したい各リージョンで有効にする必要があります。

EC2 インスタンスのアクセス許可の代替設定

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 を使用すると、このステップ (ステップ 3) とステップ 4 をスキップできます。詳細については、「AWS Systems Manager Quick Setup」を参照してください。

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

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

Systems Manager マネージドインスタンスのインスタンスプロファイルを作成するには (コンソール)
  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

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

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

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

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

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

      AmazonSSMManagedInstanceCore の行のチェックボックスがオンになっています。

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

    • 以前の手順 (オプション) 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] (ロールの作成) を選択します。ロールページが再度表示されます。

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 バケットポリシーについては、「(オプション) S3 バケットへのアクセスのカスタムポリシーを作成する」を参照してください。

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

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

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

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

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

Amazon S3 アクセス用のカスタムポリシーは、VPC エンドポイントを使用している場合、または Systems Manager オペレーションに独自の S3 バケットを使用している場合にのみ作成する必要があります。このポリシーは、デフォルトのホスト管理設定で作成されたデフォルトの IAM ロール、または前の手順で作成したインスタンスプロファイルにアタッチできます。

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

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

  2. ナビゲーションペインで ポリシーを選択してから ポリシーの作成を選択します。

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

    { "Version": "2012-10-17", "Statement": [ Footnote callout 1 to explain a line in a JSON policy{ "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/*" ] }, Footnote callout 2 to explain a line in a JSON policy{ "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:PutObjectAcl", Footnote callout 3 to explain a line in a JSON policy "s3:GetEncryptionConfiguration" Footnote callout 4 to explain a line in a JSON policy ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*", "arn:aws:s3:::amzn-s3-demo-bucket" Footnote callout 5 to explain a line in a JSON policy ] } ] }

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

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

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

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

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

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

    最初の Statement エレメントで、region の各プレースホルダーを、このポリシーが使用される AWS リージョン の識別子に置き換えます。例えば、米国東部 (オハイオ) リージョンの場合は、us-east-2 を使用します。サポートされている region 値の一覧については、「Amazon Web Services 全般のリファレンス」の「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 エレメントで、amzn-s3-demo-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:::amzn-s3-demo-bucket1/*", "arn:aws:s3:::amzn-s3-demo-bucket2/*" ]

    -または-

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

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

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

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

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

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

マネージドインスタンスのポリシーに関するその他の考慮事項

このセクションでは、デフォルトのホスト管理設定で作成されたデフォルトの IAM ロール、または AWS Systems Manager のインスタンスプロファイルに追加できるポリシーについて説明します。インスタンスと Systems Manager API 間における通信の許可を付与する場合、システムのニーズとセキュリティ要件を反映したカスタムポリシーを作成することをお勧めします。オペレーションプランによっては、他の 1 つまたは複数のポリシーに設定されているアクセス許可が必要になる場合があります。

ポリシー: 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 などの機能を使用する場合にのみ、デフォルトのホスト管理設定やインスタンスプロファイルで作成されたデフォルトの IAM ロールで必要になります。(例えば、特定の CloudWatch Logs ログストリームへの書き込みアクセスを制限する、より制限の厳しいポリシーを作成することもできます)。

注記

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

追加の Systems Manager 機能のアクセス許可を含む IAM ポリシーを作成するには、次のリソースを参照してください。

インスタンスに Systems Manager インスタンスプロファイルを添付する (コンソール)

次の手順は、Amazon EC2 コンソールを使用して、IAM インスタンスプロファイルを Amazon EC2 インスタンスにアタッチする方法を示します。

  1. AWS Management Console にサインインし、Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[Instances] の下にある [Instances] を選択します。

  3. リストから EC2 インスタンスに移動して選択します。

  4. [アクション] メニューで、[セキュリティ]、[IAM ロールの変更] の順に選択します。

  5. [IAM ロール] で、EC2 インスタンスのアクセス許可の代替設定 の手順に従って作成したインスタンスプロファイルを選択します。

  6. [Update IAM role] (IAM ロールの更新) を選択します。

インスタンスへの IAM ロールのアタッチの詳細については、選択したオペレーティングシステムのタイプに応じて、次のいずれかを選択してください。

Systems Manager のために VPC エンドポイントを使用して EC2 インスタンスのセキュリティを強化する」に進みます。