Session Manager のカスタム IAM ロールを作成 - AWS Systems Manager

Session Manager のカスタム IAM ロールを作成

Amazon EC2 マネージドインスタンスでアクションを実行する許可を Session Manager に付与する AWS Identity and Access Management (IAM) ロールを作成できます。Amazon Simple Storage Service (Amazon S3) と Amazon CloudWatch Logs に送信されるセッションログの許可を付与するポリシーを作成することもできます。

IAM ロールを作成後、インスタンスのロールをアタッチする情報については、AWS re:Post ウェブサイトの「インスタンスプロファイルをアタッチまたは置き換え」を参照してください。IAM インスタンスのプロファイルとロールの詳細については、「IAM ユーザーガイド」の「インスタンスプロファイルの使用」と、「Linux インスタンス用 Amazon Elastic Compute Cloud ユーザーガイド」の「Amazon EC2 の IAM ロールの使用」を参照してください。オンプレミスマシンの IAM サービスロールの作成における詳細については、「ハイブリッドおよびマルチクラウド環境で Systems Manager に必要な IAM サービスロールを作成する」を参照してください。

最小限の Session Manager 許可 (コンソール) を付与した IAM ロールの作成

以下の手順にしたがって、インスタンス上の Session Manager アクションのみに許可を付与するポリシーが付いたカスタム IAM ロールを作成します。

最小限の Session Manager アクセス権限でインスタンスプロファイルを作成するには (コンソール)
  1. AWS Management Console にサインインして、IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. ナビゲーションペインで、[Policies] を選択し、次に [Create policy] を選択します。([Get Started] ボタンが表示された場合は、そのボタンを選択してから、[Create Policy] を選択します)。

  3. [JSON] タブを選択します。

  4. デフォルトの内容を次のポリシーに置き換えます。AWS Key Management Service (AWS KMS) を使用してセッションデータを暗号化するには、key-name を、使用する AWS KMS key の Amazon リソースネーム (ARN) に置き換えます。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:UpdateInstanceInformation", "ssmmessages:CreateControlChannel", "ssmmessages:CreateDataChannel", "ssmmessages:OpenControlChannel", "ssmmessages:OpenDataChannel" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "key-name" } ] }

    セッションデータを暗号化するための KMS キーの使用については、「セッションデータの KMS キー暗号化を有効にする (コンソール)」を参照してください。

    セッションデータに AWS KMS 暗号化を使用しない場合は、ポリシーから以下のコンテンツを削除できます。

    , { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "key-name" }
  5. [Next: Tags] (次へ: タグ) を選択します。

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

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

  8. [Review policy (ポリシーの確認)] ページで、[Name (名前)] にインラインポリシーの名前を入力します (SessionManagerPermissions など)。

  9. (オプション) [Description (説明)] に、ポリシーの説明を入力します。

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

  11. ナビゲーションペインで [Roles] を選択し、続いて [Create role] を選択します。

  12. [ロールを作成] ページで [AWS サービス] を選択して、[ユースケース][EC2] を選択します。

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

  14. [Add permissions] (アクセス許可を追加) ページで、先ほど作成したポリシーの名前 (SessionManagerPermissions など) の左側にあるチェックボックスをオンにします。

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

  16. [Name, review, and create] (名前、確認、および作成) ページの [Role name] (ロール名) に、IAM ロールの名前 (MySessionManagerRole など) を入力します。

  17. (オプション) [Role description (ロールの説明)] に、インスタンスプロファイルの説明を入力します。

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

    [ロールの作成] を選択します。

ssmmessages アクションの詳細については、「リファレンス: ec2messages、ssmmessages およびその他の API オペレーション」を参照してください。

Session Manager、Amazon S3、CloudWatch Logs (コンソール) の許可を持つIAM ロールの作成

以下の手順にしたがって、インスタンス上の Session Manager アクションに許可を付与するポリシーが付いたカスタム IAM ロールを作成します。このポリシーは、セッションログを Amazon Simple Storage Service (Amazon S3) バケットおよび Amazon CloudWatch Logs ロググループに保存するために必要なアクセス許可も提供します。

重要

セッションログを別の AWS アカウント によって所有されている Amazon S3 バケットに出力するには、IAM ロールポリシーに s3:PutObjectAcl の許可を追加する必要があります。さらに、バケットポリシーで、所有アカウントが使用する IAM ロールへのクロスアカウントアクセスを許可して、管理対象インスタンスに Systems Manager 許可を付与するようにする必要があります。バケットが Key Management Service (KMS) 暗号化を使用している場合は、バケットの KMS ポリシーでもこのクロスアカウントアクセスを許可する必要があります。Amazon S3 クロスアカウントバケットの許可の詳細については、「Amazon Simple Storage Service ユーザーガイド」の「クロスアカウントバケットパーミッションを付与する」を参照してください。クロスアカウントの許可が追加されていないと、Amazon S3 バケットを所有するアカウントはセッション出力ログにアクセスできません。

セッションログを保存するための設定の指定方法については、「セッションアクティビティロギングの有効化と無効化」を参照してください。

Session Manager、Amazon S3、CloudWatch Logs (コンソール) の許可を持つIAM ロールの作成方法
  1. AWS Management Console にサインインして、IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. ナビゲーションペインで、[Policies] を選択し、次に [Create policy] を選択します。([Get Started] ボタンが表示された場合は、そのボタンを選択してから、[Create Policy] を選択します)。

  3. [JSON] タブを選択します。

  4. デフォルトの内容を次のポリシーに置き換えます。各リソースプレースホルダーの例をユーザー自身の情報に置き換えます。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssmmessages:CreateControlChannel", "ssmmessages:CreateDataChannel", "ssmmessages:OpenControlChannel", "ssmmessages:OpenDataChannel", "ssm:UpdateInstanceInformation" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogGroups", "logs:DescribeLogStreams" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/s3-prefix/*" }, { "Effect": "Allow", "Action": [ "s3:GetEncryptionConfiguration" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "key-name" }, { "Effect": "Allow", "Action": "kms:GenerateDataKey", "Resource": "*" } ] }
  5. [Next: Tags] (次へ: タグ) を選択します。

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

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

  8. [Review policy (ポリシーの確認)] ページで、[Name (名前)] にインラインポリシーの名前を入力します (SessionManagerPermissions など)。

  9. (オプション) [Description (説明)] に、ポリシーの説明を入力します。

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

  11. ナビゲーションペインで [Roles] を選択し、続いて [Create role] を選択します。

  12. [ロールを作成] ページで [AWS サービス] を選択して、[ユースケース][EC2] を選択します。

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

  14. [Add permissions] (アクセス許可を追加) ページで、先ほど作成したポリシーの名前 (SessionManagerPermissions など) の左側にあるチェックボックスをオンにします。

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

  16. [Name, review, and create] (名前、確認、および作成) ページの [Role name] (ロール名) に、IAM ロールの名前 (MySessionManagerRole など) を入力します。

  17. (オプション) [Role description] (ロールの説明) に、ロールの説明を入力します。

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

  19. [ロールの作成] を選択します。