コンソールを使用して、メンテナンスウィンドウのアクセス許可を設定します。 - AWS Systems Manager

コンソールを使用して、メンテナンスウィンドウのアクセス許可を設定します。

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

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

次のポリシーを JSON 形式で使用して、メンテナンスウィンドウのロールで使用するポリシーを作成できます。後ほど タスク 2: メンテナンスウィンドウのカスタムサービスロールを作成する (コンソール) に作成するロールに、このポリシーをアタッチします。

重要

メンテナンスウィンドウで実行するタスクおよびタスクのタイプによっては、このポリシーのすべてのアクセス許可が必要ではなく、追加のアクセス許可を含める必要がある場合があります。

カスタムメンテナンスウィンドウのサービスロール用にポリシーを作成するには

  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. ナビゲーションペインで、Policies を選択し、Create Policy を選択します。

  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. ポリシーのリビジョンを完了したら、[Next: Tags] (次へ: タグ) をクリックします。

  7. (オプション) 1 つ以上のタグ/値ペアを追加して、このポリシーのアクセスを整理、追跡、または制御し、[次へ: 確認] を選択します。

  8. [Name] (名前) に、作成した Maintenance Windows のサービスロールが使用するポリシーとして識別する名前を入力します。例: my-maintenance-window-role-policy

  9. [Create policy] (ポリシーの作成) を選択し、ポリシーに指定した名前をメモします。次の手順、「タスク 2: メンテナンスウィンドウのカスタムサービスロールを作成する (コンソール)」で参照します。

タスク 2: メンテナンスウィンドウのカスタムサービスロールを作成する (コンソール)

Systems Manager がユーザーに代わってタスクを実行できるように、Systems Manager の一機能である Maintenance Windows のカスタムサービスロールを作成するには、次の手順に従います。このタスクでは、前のタスクで作成したポリシーを、作成したロールにアタッチします。

重要

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

カスタムサービスロールを作成するには (コンソール)

  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

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

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

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

    2. [Use cases for other AWS services] (その他の AWS サービスのユースケース) で、[Systems Manager] を選択します。

    3. 以下のイメージに示されている、[Systems Manager] を選択します。

      
                                        ユースケースとして選択した Systems Manager のオプションを示すスクリーンショット。
  4. [Next] を選択します。

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

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

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

  8. (オプション) 1 つ以上のタグ/値ペアを追加して、このロールのアクセスを整理、追跡、または制御し、[次へ: 確認] を選択します。

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

  10. 作成したロールの名前を選択します。

  11. [Trust relationships] (信頼関係) タブをクリックし、次のポリシーが [Trusted entities] (信頼できるエンティティ) に表示されていることを確認します。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  12. [Summary] (概要) エリアのロール名と [ARN] をコピーするか、書き留めます。アカウントのユーザーは、メンテナンスウィンドウを作成するときにこの情報を指定します。

タスク 3: メンテナンスウィンドウのタスクの登録を許可されたユーザーの、アクセス許可を設定する (コンソール)

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

iam:Passrole アクセス許可を個別のユーザーまたはグループに割り当てるかどうかに応じて、以下のいずれかの手順を使用して、メンテナンスウィンドウによるタスクの登録に最低限必要なアクセス許可を付与します。

メンテナンスウィンドウタスクの登録を許可されているユーザーのアクセス許可を設定するには (コンソール)

  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. [ユーザー] を選択し、更新するユーザーアカウントの名前を選択します。

  3. [Permissions] (アクセス許可) タブのポリシーリストで、AmazonSSMFullAccess ポリシーが表示されていること、または Systems Manager API を呼び出す権限を IAM ユーザーに付与する同等のポリシーがあることを確認します。アクセス許可を追加します (まだ含まれていない場合)。詳細については、IAM ユーザーガイド の「IAM ID 許可の追加と削除」を参照してください。

  4. [Add inline policy] を選択し、次に [JSON] タブを選択します

  5. デフォルトのボックスの内容を以下に置き換えます。

    { "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. [ポリシーの確認] を選択します。

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

メンテナンスウィンドウタスクの登録を許可するグループのアクセス許可を設定するには (コンソール)

  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. ナビゲーションペインで、[User groups] を選択します。

  3. グループのリストで、iam:PassRole アクセス許可を割り当てる先のグループの名前を選択します。

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

  5. デフォルトのボックスの内容を以下に置き換えます。

    { "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. [ポリシーの確認] を選択します。

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

タスク 4: メンテナンスウィンドウタスクの登録を許可されていないユーザーの、アクセス許可を設定する (コンソール)

個別のユーザーまたはグループに ssm:RegisterTaskWithMaintenanceWindow アクセス許可を拒否するかどうかに応じ、以下の手順のいずれかを使用して、ユーザーがメンテナンスウィンドウにタスクを登録できないようにします。

メンテナンスウィンドウタスクの登録を許可されていないユーザーのアクセス許可を設定するには (コンソール)

  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. [ユーザー] を選択し、更新するユーザーアカウントの名前を選択します。

  3. [Add inline policy] を選択し、次に [JSON] タブを選択します

  4. デフォルトのボックスの内容を以下に置き換えます。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "ssm:RegisterTaskWithMaintenanceWindow", "Resource": "*" } ] }
  5. [ポリシーの確認] を選択します。

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

メンテナンスウィンドウタスクの登録を許可されていないグループのアクセス許可を設定するには (コンソール)

  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. ナビゲーションペインで、[User groups] を選択します。

  3. グループのリストで、ssm:RegisterTaskWithMaintenanceWindow アクセス許可を拒否する元のグループの名前を選択します。

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

  5. [JSON] タブを選択し、ボックスのデフォルトの内容を以下に置き換えます。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "ssm:RegisterTaskWithMaintenanceWindow", "Resource": "*" } ] }
  6. [ポリシーの確認] を選択します。

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