ハイブリッドおよびマルチクラウド環境で Systems Manager に必要な IAM サービスロールを作成する
ハイブリッドおよびマルチクラウド環境の非 EC2 (Amazon Elastic Compute Cloud) マシンでは、AWS Systems Manager サービスと通信するために AWS Identity and Access Management (IAM) サービスロールが必要です。ロールは、Systems Manager サービスに AWS Security Token Service (AWS STS) AssumeRole
の信頼を付与します。AWS アカウント ごとにハイブリッドおよびマルチクラウド環境用にサービスロールを一度のみ作成する必要があります。ただし、ハイブリッドおよびマルチクラウド環境のマシンに異なる許可が必要な場合、異なるハイブリッドアクティベーションに対して複数のサービスロールを作成することもできます。
以下の手順は、Systems Manager コンソールまたはお好みのコマンドラインツールを使用して、必要なサービスロールを作成する方法を説明します。
AWS Management Console を使用して Systems Manager ハイブリッドアクティベーション用の IAM サービスロールを作成する
ハイブリッドアクティベーションのサービスロールを作成するために、以下の手順にしたがいます。この手順では、Systems Manager の主要機能で AmazonSSMManagedInstanceCore
ポリシーを使用します。ユースケースによっては、オンプレミスマシン他の機能または AWS のサービスにアクセスできるようにするため、サービスロールにポリシーを追加する必要がある場合があります。例えば、必要な AWS マネージド型 Amazon Simple Storage Service (Amazon S3) バケットにアクセスがなければ、Patch Manager パッチ運用オペレーションが失敗します。
サービスロールを作成するには (コンソール)
IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。
-
ナビゲーションペインで ロール を選択し、続いて ロールを作成する を選択します。
-
[Select trusted entity] (信頼できるエンティティを選択) で、次のように選択します。
-
信頼できるエンティティタイプ で、AWS のサービス を選択します。
-
[その他の AWS のサービス のユースケース] で、[Systems Manager] を選択します。
-
以下のイメージに示されている、[Systems Manager] を選択します。
-
[Next] を選択します。
-
[アクセス許可を追加] ページで、以下を実行します。
-
[Search] (検索) フィールドを使用して、[AmazonSSMManagedInstanceCore] ポリシーを検索します。名前の横にあるチェックボックスを選択します。
-
他のポリシーを検索しても、コンソールでは選択内容が保持されます。
-
手順 (オプション) S3 バケットへのアクセスのカスタムポリシーを作成する でカスタムの S3 バケットポリシーを作成した場合は、それを検索してその名前の横にあるチェックボックスをオンにします。
-
AWS Directory Service によって管理されている Active Directory に、EC2 以外のマシンを結合する場合は、AmazonSSMDirectoryServiceAccess を検索し、その名前の横にあるチェックボックスをオンにします。
-
EventBridge または CloudWatch Logs を使用して、マネージドノードを管理またはモニタリングする場合は、[CloudWatchAgentServerPolicy] を検索し、その名前の横にあるチェックボックスをオンにします。
-
[Next] を選択します。
-
[ロール名] で、SSMServerRole
などの新しい IAM サーバーロールの名前を入力します。
ロール名を書き留めます。このロール名は、Systems Manager を使用して管理するマシンを新しく登録する際に選択します。
-
(オプション) [Description] (説明) で、この IAM サーバーロールの説明を更新します。
-
(オプション) [Tags] (タグ)で、タグとキーの値のペアを 1 つまたは複数追加して、このロールのアクセスを整理、追跡、または制御します。
-
[ロールの作成] を選択します。ロールページが再度表示されます。
AWS CLI を使用して Systems Manager ハイブリッドアクティベーション用の IAM サービスロールを作成する
ハイブリッドアクティベーションのサービスロールを作成するために、以下の手順にしたがいます。この手順では、Systems Manager の主要機能で AmazonSSMManagedInstanceCore
ポリシーを使用します。ユースケースによっては、ハイブリッドおよびマルチクラウド環境の EC2 以外のマシンのサービスロールにポリシーをさらに追加して、他の機能や AWS のサービス にアクセスできるようにする必要がある場合があります。
S3 バケットのポリシーの要件
次のいずれかのケースに当てはまる場合は、この手順を実行する前に Amazon Simple Storage Service (Amazon S3) バケット用のカスタム IAM アクセス許可ポリシーを作成する必要があります。
-
ケース 1 — VPC エンドポイントを使用して、サポートされている AWS のサービス、および AWS PrivateLink を搭載した VPC エンドポイントサービスに VPC をプライベート接続している。
-
ケース 2 — Run Command コマンドや Session Manager セッションの出力を S3 バケットに保存するなど、作成する Amazon S3 バケットを Systems Manager オペレーションの一環として使用する。先に進む前に、「インスタンスプロファイル用のカスタム S3 バケットポリシーを作成する」の手順に従います。そのトピックの S3 バケットポリシーに関する情報は、サービスロールにも適用されます。
- AWS CLI
-
ハイブリッドおよびマルチクラウド環境に IAM サービスロールを作成するには (AWS CLI)
まだ AWS Command Line Interface (AWS CLI) をインストールして設定していない場合は、インストールして設定します。
詳細については、「AWS CLI の最新バージョンをインストールまたは更新します。」を参照してください。
-
ローカルマシンで以下の信頼ポリシーを使用して、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
:*"
}
}
}
]
}
-
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
-
以下のように attach-role-policy を実行して、先ほど作成したサービスロールでセッショントークンを作成できるようにします。セッショントークンは、Systems Manager を使用してコマンドを実行するためのアクセス許可をマネージドノードに付与します。
ハイブリッドおよびマルチクラウド環境のマネージドノードのサービスプロファイルに追加するポリシーは、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスのインスタンスプロファイルの作成に使用されるものと同じです。以下のコマンドで使用する AWS ポリシーの詳細については、「Systems Manager に必要なインスタンスのアクセス許可を設定する」を参照してください。
(必須) 次のコマンドを使用して、マネージドノードで 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
と amzn-s3-demo-bucket
は、お使いの AWS アカウント ID とバケット名に置き換えてください。
Linux & macOSWindows
- Linux & macOS
aws iam attach-role-policy \
--role-name SSMServiceRole \
--policy-arn arn:aws:iam::account-id
:policy/amzn-s3-demo-bucket
- Windows
aws iam attach-role-policy ^
--role-name SSMServiceRole ^
--policy-arn arn:aws:iam::account-id
:policy/amzn-s3-demo-bucket
(オプション) 次のコマンドを実行して、マネージドノードによるドメインへの結合リクエストに対して、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)
AWS Tools for PowerShell (Tools for Windows PowerShell) をインストールして設定します (まだインストールしていない場合)。
詳細については、「AWS Tools for PowerShell のインストール」を参照してください。
-
ローカルマシンで以下の信頼ポリシーを使用して、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:region
:123456789012
:*"
}
}
}
]
}
-
PowerShell を管理モードで開き、JSON ファイルを作成したディレクトリで以下のように New-IAMRole を実行してサービスロールを作成します。この例では、SSMServiceRole
という名前のロールが作成されます。別の名前を選択することもできます。
New-IAMRole `
-RoleName SSMServiceRole `
-AssumeRolePolicyDocument (Get-Content -raw SSMService-Trust.json)
-
以下のように、Register-IAMRolePolicy を使用して、作成したサービスロールでセッショントークンを作成できます。セッショントークンは、Systems Manager を使用してコマンドを実行するためのアクセス許可をマネージドノードに付与します。
(必須) 次のコマンドを使用して、マネージドノードで 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
「ハイブリッドアクティベーションを作成して、Systems Manager にノードを登録する」に進みます。