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