ステップ 4: Systems Manager の IAM インスタンスプロファイルを作成する
デフォルトでは、AWS Systems Manager にはインスタンスでアクションを実行する権限がありません。AWS Identity and Access Management (IAM) インスタンスプロファイルを使用してアクセスを許可する必要があります。インスタンスプロファイルは、起動時に Amazon Elastic Compute Cloud (Amazon EC2) インスタンスに IAM ロール情報を渡すコンテナです。Systems Manager のインスタンスプロファイルを作成するには、必要なアクセス許可を定義する 1 つ以上の IAM ポリシーを、新しいロールか、作成済みのロールにアタッチします。
Systems Manager 高速セットアップを使用すると、AWS アカウントのすべてのインスタンスでインスタンスプロファイルをすばやく設定できます。高速セットアップでは、Systems Manager がユーザーに代わってインスタンスでコマンドを安全に実行できるようにする、IAM サービスロール (継承ロール) を作成することもできます。高速セットアップを使用すると、このステップ (ステップ 4) とステップ 5 をスキップできます。詳細については、「AWS Systems Manager 高速セットアップ」を参照してください。
IAM インスタンスプロファイルの作成に関する次の詳細情報に注意してください。
-
Systems Manager のハイブリッド環境でサーバーあるいは仮想マシン (VM) を設定する場合、インスタンスプロファイルを作成する必要はありません。代わりに、IAM サービス ロールを使用するようにサーバーと VM を設定する必要があります。詳細については、「ハイブリッド環境用の IAM サービスロールを作成する」を参照してください。
-
IAM インスタンスプロファイルを変更した場合、インスタンスの認証情報が更新されるまでに時間がかかることがあります。更新されるまで、SSM エージェント はリクエストを処理しません。更新プロセスを高速化するには、SSM エージェント を再起動するか、インスタンスを再起動します。
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 のサービス、および PrivateLink を搭載した VPC エンドポイントサービスに VPC をプライベート接続しています。
SSM エージェント は、インスタンスにインストールされている Amazon ソフトウェアであり、Systems Manager タスクを実行します。このエージェントは、特定の Amazon 所有の S3 バケットへのアクセスが必要です。これらのバケットはパブリックアクセス可能です。
ただし、プライベートの VPC エンドポイント環境では、これらのバケットへのアクセスを明示的に付与する必要があります。
arn:aws:s3:::patch-baseline-snapshot-
region
/* arn:aws:s3:::aws-ssm-region
/*詳細については、Amazon VPC ユーザーガイド の「ステップ 6: (オプション) Virtual Private Cloud エンドポイントの作成」、「SSM エージェント の最小 S3 バケットアクセス許可について」、および「VPC エンドポイント」を参照してください。
-
ケース 2: Systems Manager オペレーションの一環として作成する S3 バケットを使用します。
Systems Manager の EC2 インスタンスプロファイルで、次のようなタスク用に所有している S3 バケットへのアクセスを許可する必要があります。
-
実行するコマンドで使用する、S3 バケットに保存したスクリプトにアクセスする。
-
Run Command コマンドまたは Session Manager セッションの完全な出力を保存する。
-
インスタンスにパッチを適用するときに使用するカスタムパッチリストにアクセスする。
-
注記 S3 バケットに出力ログデータを保存することはオプションですが、使用することを決定した場合は、Systems Manager 設定プロセスの最初に設定することをお勧めします。詳細については、Amazon Simple Storage Service 入門ガイド の「バケットの作成」を参照してください。
-
- ポリシー: AmazonSSMDirectoryServiceAccess
-
Windows Server の EC2 インスタンスを Microsoft AD ディレクトリに結合する場合にのみ必要です。
AWS 管理ポリシーでは、マネージドインスタンスによるドメインの結合リクエストに対して、SSM エージェント による AWS Directory Service へのアクセスをお客様の代わりに許可します。詳細については、AWS Directory Service Administration Guide の「Windows EC2 インスタンスをシームレスに結合する」を参照してください。
- ポリシー: CloudWatchAgentServerPolicy
-
メトリクスを読み取り、インスタンスにデータのログを記録して Amazon CloudWatch に書き込むために、インスタンスに CloudWatch エージェント をインストールして実行する場合にのみ必要です。これらは、AWS リソースの問題や変更をモニタリング、分析、および迅速に対応するのに役立ちます。
このポリシーは、機能 (例: Amazon EventBridge または CloudWatch Logs) を使用する場合にのみ、インスタンスプロファイルに必要です。(たとえば、特定の CloudWatch Logs ログストリームへの書き込みアクセスを制限する、より制限の厳しいポリシーを作成することもできます。)
注記 EventBridge および CloudWatch Logs 機能の使用はオプションですが、使用することにした場合は、Systems Manager 設定プロセスの開始時にそれらを設定することをお勧めします。詳細については、Amazon EventBridge ユーザーガイド と Amazon CloudWatch Logs User Guide を参照してください。
追加の Systems Manager サービスのアクセス許可を持つインスタンスプロファイルを作成するには、次のリソースを参照してください。
タスク 1: (オプション) S3 バケットアクセスのカスタムポリシーを作成する
Amazon S3 アクセス用のカスタムポリシーは、VPC エンドポイントを使用している場合、または Systems Manager オペレーションに独自の S3 バケットを使用している場合にのみ作成する必要があります。
以下のポリシーでアクセスを付与する AWS マネージドの S3 バケットの詳細については、SSM エージェント の最小 S3 バケットアクセス許可について を参照してください。
-
IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
ナビゲーションペインで、[Policies] を選択し、次に [Create policy] を選択します。
-
[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 ユーザー、グループ、またはロールには、ルートバケットへのアクセスを設定する必要があります。 -
オペレーションで VPC エンドポイントを使用する場合は、以下の操作を行います。
最初の
Statement
エレメントで、region
の各プレースホルダーを、このポリシーが使用される AWS リージョンの識別子に置き換えます。たとえば、米国東部 (オハイオ) リージョン では、us-east-2
を使用します。サポートされているregion
値のリストについては、アマゾン ウェブ サービス全般のリファレンスの「Systems Manager サービスエンドポイント」のリージョン列を参照してください。重要 このポリシーの特定のリージョンの代わりにワイルドカード文字 (*) を使用しないことをお勧めします。たとえば、
arn:aws:s3:::aws-ssm-us-east-2/*
を使用して、arn:aws:s3:::aws-ssm-*/*
は使用しないでください。ワイルドカードを使用すると、アクセスを付与する S3 バケットへのアクセス権が付与される場合があります。複数のリージョンでインスタンスプロファイルを使用する場合は、各リージョンの最初のStatement
エレメントを繰り返すことをお勧めします。-または-
オペレーションで VPC エンドポイントを使用する場合は、最初の
Statement
エレメントは削除することができます。 -
Systems Manager オペレーションで独自の S3 バケットを使用する場合は、以下の操作を行います。
2 つめの
Statement
エレメントで、
をアカウントの S3 バケットの名前に置き換えます。このバケットは、Systems Manager オペレーションに使用します。バケットのオブジェクトにアクセス許可を付与します。この際、DOC-EXAMPLE-BUCKET
"arn:aws:s3:::my-bucket-name/*"
をリソースとして使用します。バケット、またはバケットオブジェクトにアクセス許可を付与する方法については、Amazon Simple Storage Service 開発者ガイド の「ポリシーでのアクセス許可の指定」、および AWS のブログ投稿「IAM ポリシーとバケットポリシーと ACL! 」を参照してください。 Oh, My! (Controlling Access to S3 Resources). 注記 複数のバケットを使用する場合は、それぞれの ARN を入力します。たとえば、バケットのアクセス許可の場合は次のように行います。
"Resource": [ "arn:aws:s3:::
/*", "arn:aws:s3:::DOC-EXAMPLE-BUCKET1
/*" ]DOC-EXAMPLE-BUCKET2
-または-
Systems Manager オペレーションで独自の S3 バケットを使用していない場合は、2 つめの
Statement
エレメントは削除できます。 -
[ポリシーの確認] を選択します。
-
[名前] に、ポリシーの識別名 (
SSMInstanceProfileS3Policy
など) を入力するか、希望する別の名前を入力します。 -
[Create policy] を選択します。
タスク 2: Systems Manager インスタンスプロファイルにアクセス許可を追加する (コンソール)
インスタンスプロファイルに新しいロールを作成するか、既存のロールに必要なアクセス許可を追加するかに応じて、以下のいずれかの手順を実行します。
Systems Manager マネージドインスタンスのインスタンスプロファイルを作成するには (コンソール)
-
IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
ナビゲーションペインで [Roles] を選択し、続いて [Create role] を選択します。
-
[信頼されたエンティティの種類を選択] で、[AWS のサービス] を選択します。
-
[このロールを使用するサービスを選択] のすぐ下で、[EC2]、[次へ: アクセス許可] を選択します。
-
[Attach permissions policies (アクセス許可ポリシーのアタッチ)] ページで、以下の操作を行います。
-
[検索] フィールドを使用して、[AmazonSSMManagedInstanceCore] を見つけます。名前の横にあるボックスを選択します。
他のポリシーを検索しても、コンソールでは選択内容が保持されます。
-
以前の手順 タスク 1: (オプション) S3 バケットアクセスのカスタムポリシーを作成する でカスタムの S3 バケットポリシーを作成した場合は、それを検索してその名前の横にあるチェックボックスをオンにします。
-
AWS Directory Service によって管理されている Active Directory にインスタンスを結合する場合は、[AmazonSSMDirectoryServiceAccess] を検索し、その名前の横にあるチェックボックスをオンにします。
-
EventBridge または CloudWatch Logs を使用して、インスタンスを管理またはモニタリングする場合は、[CloudWatchAgentServerPolicy] を検索し、その名前の横にあるチェックボックスをオンにします。
-
-
[次へ: タグ] を選択します。
-
(オプション) 1 つ以上のタグ/値ペアを追加して、このロールのアクセスを整理、追跡、または制御し、[次へ: 確認] を選択します。
-
[ロール名] に、新しいインスタンスプロファイルの名前を入力 (
SSMInstanceProfile
など) するか、希望する別の名前を入力します。注記 ロール名を書き留めます。このロール名は、Systems Manager を使用して管理するインスタンスを新しく作成する際に選択します。
-
(オプション) [Role description (ロールの説明)] に、インスタンスプロファイルの説明を入力します。
-
[ロールの作成] を選択します。システムでは、[Roles] ページが返されます。
Systems Manager のインスタンスプロファイルのアクセス許可を既存のロールに追加するには (コンソール)
-
IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
ナビゲーションペインで、[Roles (ロール)] を選択して、Systems Manager オペレーションのためにインスタンスプロファイルに関連付ける既存のロールを選択します。
-
[Permissions (アクセス許可)] タブで、[Attach policy (ポリシーのアタッチ)] を選択します。
-
[Attach permission policies (アクセス許可ポリシーのアタッチ)] ページで、以下の操作を行います。
-
必要な [AmazonSSMManagedInstanceCore] 管理ポリシーの横にあるチェックボックスをオンにします。
-
カスタムの S3 バケットポリシーを作成した場合は、その名前の横にあるチェックボックスをオンにします。インスタンスプロファイルのカスタム S3 バケットポリシーについては、タスク 1: (オプション) S3 バケットアクセスのカスタムポリシーを作成する を参照してください。
-
AWS Directory Service によって管理されている Active Directory にインスタンスを結合する場合は、[AmazonSSMDirectoryServiceAccess] の横にあるチェックボックスをオンにします。
-
EventBridge または CloudWatch Logs を使用して、インスタンスを管理またはモニタリングする場合は、[CloudWatchAgentServerPolicy] の横にあるチェックボックスをオンにします。
-
-
[Attach policy] を選択します。
信頼できるエンティティを含むように、またはさらにアクセスを制限するようにロールを更新する方法については、IAM ユーザーガイド の「ロールの修正」を参照してください。
「ステップ 5: IAM インスタンスプロファイルを EC2 インスタンスにアタッチする」に進んでください。