コンソールを使用したメンテナンスウィンドウへのアクセスの制御 - AWS Systems Manager

コンソールを使用したメンテナンスウィンドウへのアクセスの制御

以下の手順では、AWS Systems Manager コンソールを使用して、メンテナンスウィンドウに必要なロールとアクセス許可を作成する方法を説明します。

タスク 1: コンソールを使用して、メンテナンスウィンドウサービスロール用にカスタムポリシーを作成する

メンテナンスウィンドウのタスクには、ターゲットリソースで実行するために必要なアクセス許可を提供するための IAM ロールが必要です。アクセス許可は、ロールにアタッチされた IAM ポリシーを通じて提供されます。実行するタスクのタイプおよびその他の運用要件によって、このポリシーの内容が決定されます。ユーザーのニーズに対応する基本ポリシーを提供しています。メンテナンスウィンドウで実行するタスクおよびタスクのタイプによっては、このポリシーのすべてのアクセス許可が必要ではなく、追加のアクセス許可を含める必要がある場合があります。後ほど タスク 2: コンソールを使用して、メンテナンスウィンドウのカスタムサービスロールを作成する に作成するロールに、このポリシーをアタッチします。

コンソールを使用してカスタムポリシーを作成するには
  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

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

  3. [ポリシーエディタ] 欄で、[JSON] を選択します。

  4. デフォルトのコンテンツを以下と置き換えます。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:SendCommand", "ssm:CancelCommand", "ssm:ListCommands", "ssm:ListCommandInvocations", "ssm:GetCommandInvocation", "ssm:GetAutomationExecution", "ssm:StartAutomationExecution", "ssm:ListTagsForResource", "ssm:GetParameters" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "states:DescribeExecution", "states:StartExecution" ], "Resource": [ "arn:aws:states:*:*:execution:*:*", "arn:aws:states:*:*:stateMachine:*" ] }, { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:*:*:function:*" ] }, { "Effect": "Allow", "Action": [ "resource-groups:ListGroups", "resource-groups:ListGroupResources" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "tag:GetResources" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": [ "ssm.amazonaws.com" ] } } } ] }
  5. 必要に応じて、アカウントで実行するメンテナンスタスクの JSON コンテンツを変更します。変更した内容は、ユーザーが計画したオペレーションに固有のものです。

    例:

    • ワイルドカード (*) 修飾子を使用する代わりに、特定の関数およびステートマシンに Amazon リソースネーム (ARN) を指定できます。

    • AWS Step Functions タスクを実行する予定がない場合は、states のアクセス許可と (ARN) を削除できます。

    • AWS Lambda タスクを実行する予定がない場合は、lambda のアクセス許可と ARN を削除できます。

    • オートメーションタスクを実行する予定がない場合は、ssm:GetAutomationExecution および ssm:StartAutomationExecution のアクセス許可を削除できます。

    • タスクの実行に必要な追加のアクセス許可を追加します。たとえば、一部のオートメーションアクションは AWS CloudFormation スタックと連携します。そのため、cloudformation:CreateStackcloudformation:DescribeStacks、および cloudformation:DeleteStack のアクセス許可が必要です。

      別の例: オートメーションランブックの AWS-CopySnapshot では、Amazon Elastic Block Store (Amazon EBS) スナップショットを作成するためのアクセス許可が必要です。このため、サービスロールに許可 ec2:CreateSnapshot が必要です。

      オートメーションランブックで必要なロールの許可については、「AWS Systems Manager オートメーションランブックレファレンス」にあるランブックの説明を参照してください。

  6. ポリシーのリビジョンを完了したら、[次へ] をクリックします。

  7. [ポリシー名] に、作成したサービスロールにアタッチするポリシーを識別するためのポリシー名を入力します。例: my-maintenance-window-role-policy

  8. (オプション) [タグを追加] 欄では、1 つ以上のタグキーと値のペアを追加して、このポリシーのアクセスを整理、追跡、または制御できます。

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

    ポリシーに指定した名前をメモしておきます。次の手順、「タスク 2: コンソールを使用して、メンテナンスウィンドウのカスタムサービスロールを作成する」で参照します。

タスク 2: コンソールを使用して、メンテナンスウィンドウのカスタムサービスロールを作成する

前のタスクで作成したポリシーを、このタスクで作成するメンテナンスウィンドウサービスロールにアタッチします。ユーザーがメンテナンスウィンドウタスクを登録すると、タスク設定の一部としてこの IAM ロールが指定されます。このロールでアクセス許可が付与され、Systems Manager がユーザーに代わって、メンテナンスウィンドウでタスクを実行できます。

重要

以前は、Systems Manager コンソールが、AWS マネージド IAM サービスリンクロール AWSServiceRoleForAmazonSSM を選択して、タスクのメンテナンスロールとして使用する機能を提供していました。メンテナンスウィンドウのタスクにおける、このロールとそれに関連するポリシーである AmazonSSMServiceRolePolicy の使用は推奨されなくなりました。このロールをメンテナンスウィンドウのタスクに使用している場合は、使用を中止することをお勧めします。代わりに、メンテナンスウィンドウのタスクが実行されたときに、Systems Manager と他の AWS のサービス間の通信を可能にする独自の IAM ロールを作成します。

以下の手順を使用して、Systems Manager がユーザーに代わって Maintenance Windows タスクを実行するための Maintenance Windows のカスタムサービスロールを作成します。前のタスクで作成したポリシーを、新しく作成したカスタムサービスロールにアタッチします。

コンソールを使用して、メンテナンスウィンドウのカスタムサービスロールを作成する
  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

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

  3. [Select trusted entity] (信頼できるエンティティを選択) で、次のように選択します。

    1. [信頼できるエンティティタイプ] で、[AWS サービス] を選択します。

    2. [ユースケース] で、[Systems Manager] を選択します

    3. [Systems Manager] を選択します。

      次の画像は、Systems Manager オプションの場所を示しています

      Systems Manager は、ユースケースのオプションの 1 つです。
  4. [Next] を選択します。

  5. [アクセス許可ポリシー] 欄で、タスク 1: コンソールを使用して、メンテナンスウィンドウサービスロール用にカスタムポリシーを作成する で作成したポリシー名を検索ボックスに入力します。名前の横にあるチェックボックスをオンにして、[次へ] を選択します。

  6. [Role name] (ロール名) に、このロールが Maintenance Windows ロールであることを識別できる名前を入力します。例: my-maintenance-window-role

  7. (オプション) デフォルトのロールの説明を変更して、このロールの目的を反映させます。例: Performs maintenance window tasks on your behalf

  8. [ステップ 1: 信頼できるエンティティを選択する] で、[信頼ポリシー] に次のポリシーが表示されていることを確認します。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  9. [ステップ 2: アクセス許可を追加する] で、タスク 1: コンソールを使用して、メンテナンスウィンドウサービスロール用にカスタムポリシーを作成する で作成したポリシーが存在するのを確認します。

  10. (オプション) [ステップ3: タグを追加する] で、タグとキーの値のペアを 1 つまたは複数追加して、このロールのアクセスを整理、追跡、または制御できます。

  11. [ロールの作成] を選択します。ロールページが再度表示されます。

  12. さきほど作成した IAM ロールの名前を選択します。

  13. [Summary] (概要) エリアのロール名と [ARN] をコピーするか、書き留めます。アカウントのユーザーは、メンテナンスウィンドウを作成するときにこの情報を指定します。

タスク 3: コンソールを使用して、特定のユーザーにメンテナンスウィンドウタスクを登録するアクセス許可を付与する

メンテナンスウィンドウのカスタムサービスロールにアクセスする許可をユーザーに付与すると、ユーサーはそのロールを自分のメンテナンスウィンドウタスクで使用できます。これは、Maintenance Windows 機能用に Systems Manager API コマンドを操作するために既に付与されているアクセス許可に追加されます。この IAM ロールは、メンテナンスウィンドウタスクを実行するために必要なアクセス許可を伝えます。このため、これらの IAM アクセス許可を渡す権限がないと、ユーザーは、カスタムサービスロールを使用してメンテナンスウィンドウにタスクを登録することができません。

メンテナンスウィンドウにタスクを登録する場合、実際のタスクオペレーションを実行するためのサービスロールを指定します。これは、サービスがユーザーに代わってタスクを実行するときに引き受けるロールです。その前に、タスク自体を登録するには、IAM PassRole ポリシーを IAM エンティティ (ユーザーまたはグループ) に割り当てます。これにより、これらのタスクをメンテナンスウィンドウに登録する一環として、タスク実行時に使用するロールを指定することを IAM エンティティに許可します。詳細については、「IAM ユーザーガイド」の「AWS のサービスにロールを渡すアクセス権限をユーザーに付与する」を参照してください。

メンテナンスウィンドウタスクの登録を許可するアクセス許可をユーザーに設定するには

IAM エンティティ (ユーザー、ロール、またはグループ) に管理者権限が設定されている場合、その IAM ユーザーまたはロールはメンテナンスウィンドウにアクセスできます。管理者権限のない IAM エンティティの場合、管理者は IAM エンティティに次の権限を付与する必要があります。タスクをメンテナンスウィンドウに登録するために必要な最低限の権限です。

  • AmazonSSMFullAccess マネージドポリシー、または同等のアクセス許可を付与するポリシー。

  • 次の iam:PassRole および iam:ListRoles のアクセス許可。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::account-id:role/my-maintenance-window-role" }, { "Effect": "Allow", "Action": "iam:ListRoles", "Resource": "arn:aws:iam::account-id:role/" }, { "Effect": "Allow", "Action": "iam:ListRoles", "Resource": "arn:aws:iam::account-id:role/aws-service-role/ssm.amazonaws.com/" } ] }

    my-maintenance-window-role は、前に作成したカスタムメンテナンスウィンドウ向けサービスロールの名前を表します。

    account-id は、AWS アカウント の ID を表します。リソース arn:aws:iam::account-id:role/ に対してこのアクセス許可を追加すると、ユーザーはメンテナンスウィンドウタスクを作成するときに、コンソールでカスタマーロールを表示および選択できます。arn:aws:iam::account-id:role/aws-service-role/ssm.amazonaws.com/ に対してこのアクセス許可を追加すると、ユーザーはメンテナンスウィンドウタスクを作成するときに、コンソールで Systems Manager サービスにリンクされたロールを選択できます。

    アクセス権限を付与するには、ユーザー、グループ、またはロールにアクセス許可を追加します。

コンソールを使用して、メンテナンスウィンドウタスクの登録を許可するグループのアクセス許可を設定するには
  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. ナビゲーションペインで、[ユーザーグループ] を選択します。

  3. グループリストで iam:PassRole のアクセス許可を割り当てるグループの名前を選択するか、必要に応じて新しいグループを作成します。

  4. [Permissions] (アクセス許可) タブで、[Add permissions, Create inline policy] (アクセス許可の追加、インラインポリシーの作成) をクリックします。

  5. [ポリシーエディタ] 欄で [JSON] を選択し、ボックスのデフォルトの内容を以下に置き換えます。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::account-id:role/my-maintenance-window-role" }, { "Effect": "Allow", "Action": "iam:ListRoles", "Resource": "arn:aws:iam::account-id:role/" }, { "Effect": "Allow", "Action": "iam:ListRoles", "Resource": "arn:aws:iam::account-id:role/aws-service-role/ssm.amazonaws.com/" } ] }

    my-maintenance-window-role は、前に作成したカスタムメンテナンスウィンドウロールの名前を表します。

    account-id は、AWS アカウント の ID を表します。リソース arn:aws:iam::account-id:role/ に対してこのアクセス許可を追加すると、ユーザーはメンテナンスウィンドウタスクを作成するときに、コンソールでカスタマーロールを表示および選択できます。arn:aws:iam::account-id:role/aws-service-role/ssm.amazonaws.com/ に対してこのアクセス許可を追加すると、ユーザーはメンテナンスウィンドウタスクを作成するときに、コンソールで Systems Manager サービスにリンクされたロールを選択できます。

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

  7. [レビューと確認] ページで、この PassRole ポリシーを識別するための名前を [ポリシー名] ボックスに入力し (my-group-iam-passrole-policy など)、[ポリシーの作成] を選択します。

タスク 4: 指定されたユーザーがコンソールを使用してメンテナンスウィンドウタスクを登録できないようにする

メンテナンスウィンドウでタスクを登録したくない AWS アカウント 内のユーザーに対する ssm:RegisterTaskWithMaintenanceWindow アクセス許可を拒否できます。これにより、メンテナンスウィンドウのタスクを登録してはいけないユーザーに対して、追加の予防レイヤーが提供されます。

コンソールを使用して、メンテナンスウィンドウタスクの登録を許可しないグループ向けのアクセス許可を設定するには
  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. ナビゲーションペインで、[ユーザーグループ] を選択します。

  3. グループのリストで、ssm:RegisterTaskWithMaintenanceWindow のアクセス許可を拒否するグループの名前を選択するか、もしくは必要に応じて新しいグループを作成します。

  4. [Permissions] (アクセス許可) タブで、[Add permissions, Create inline policy] (アクセス許可の追加、インラインポリシーの作成) をクリックします。

  5. [ポリシーエディタ] 欄で [JSON] を選択し、ボックスのデフォルトの内容を以下に置き換えます。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "ssm:RegisterTaskWithMaintenanceWindow", "Resource": "*" } ] }
  6. [Next] を選択します。

  7. [レビューと確認] ページで、このポリシーを識別するための名前 (my-groups-deny-mw-tasks-policy など) を [ポリシー名] ボックスに入力し、[ポリシーの作成] を選択します。