コンソールを使用したメンテナンスウィンドウへのアクセスの制御
以下の手順では、AWS Systems Manager コンソールを使用して、メンテナンスウィンドウに必要なロールとアクセス許可を作成する方法を説明します。
トピック
タスク 1: コンソールを使用して、メンテナンスウィンドウサービスロール用にカスタムポリシーを作成する
メンテナンスウィンドウのタスクには、ターゲットリソースで実行するために必要なアクセス許可を提供するための IAM ロールが必要です。アクセス許可は、ロールにアタッチされた IAM ポリシーを通じて提供されます。実行するタスクのタイプおよびその他の運用要件によって、このポリシーの内容が決定されます。ユーザーのニーズに対応する基本ポリシーを提供しています。メンテナンスウィンドウで実行するタスクおよびタスクのタイプによっては、このポリシーのすべてのアクセス許可が必要ではなく、追加のアクセス許可を含める必要がある場合があります。後ほど タスク 2: コンソールを使用して、メンテナンスウィンドウのカスタムサービスロールを作成する に作成するロールに、このポリシーをアタッチします。
コンソールを使用してカスタムポリシーを作成するには
IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
ナビゲーションペインで ポリシーを選択してから ポリシーの作成を選択します。
-
[ポリシーエディタ] 欄で、[JSON] を選択します。
-
デフォルトのコンテンツを以下と置き換えます。
{ "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" ] } } } ] }
-
必要に応じて、アカウントで実行するメンテナンスタスクの JSON コンテンツを変更します。変更した内容は、ユーザーが計画したオペレーションに固有のものです。
例:
-
ワイルドカード (*) 修飾子を使用する代わりに、特定の関数およびステートマシンに Amazon リソースネーム (ARN) を指定できます。
-
AWS Step Functions タスクを実行する予定がない場合は、
states
のアクセス許可と (ARN) を削除できます。 -
AWS Lambda タスクを実行する予定がない場合は、
lambda
のアクセス許可と ARN を削除できます。 -
オートメーションタスクを実行する予定がない場合は、
ssm:GetAutomationExecution
およびssm:StartAutomationExecution
のアクセス許可を削除できます。 -
タスクの実行に必要な追加のアクセス許可を追加します。たとえば、一部のオートメーションアクションは AWS CloudFormation スタックと連携します。そのため、
cloudformation:CreateStack
、cloudformation:DescribeStacks
、およびcloudformation:DeleteStack
のアクセス許可が必要です。別の例: オートメーションランブックの
AWS-CopySnapshot
では、Amazon Elastic Block Store (Amazon EBS) スナップショットを作成するためのアクセス許可が必要です。このため、サービスロールに許可ec2:CreateSnapshot
が必要です。オートメーションランブックで必要なロールの許可については、「AWS Systems Manager オートメーションランブックレファレンス」にあるランブックの説明を参照してください。
-
-
ポリシーのリビジョンを完了したら、[次へ] をクリックします。
-
[ポリシー名] に、作成したサービスロールにアタッチするポリシーを識別するためのポリシー名を入力します。例:
my-maintenance-window-role-policy
。 -
(オプション) [タグを追加] 欄では、1 つ以上のタグキーと値のペアを追加して、このポリシーのアクセスを整理、追跡、または制御できます。
-
[Create policy] を選択します。
ポリシーに指定した名前をメモしておきます。次の手順、「タスク 2: コンソールを使用して、メンテナンスウィンドウのカスタムサービスロールを作成する」で参照します。
タスク 2: コンソールを使用して、メンテナンスウィンドウのカスタムサービスロールを作成する
前のタスクで作成したポリシーを、このタスクで作成するメンテナンスウィンドウサービスロールにアタッチします。ユーザーがメンテナンスウィンドウタスクを登録すると、タスク設定の一部としてこの IAM ロールが指定されます。このロールでアクセス許可が付与され、Systems Manager がユーザーに代わって、メンテナンスウィンドウでタスクを実行できます。
重要
以前は、Systems Manager コンソールが、AWS マネージド IAM サービスリンクロール AWSServiceRoleForAmazonSSM
を選択して、タスクのメンテナンスロールとして使用する機能を提供していました。メンテナンスウィンドウのタスクにおける、このロールとそれに関連するポリシーである AmazonSSMServiceRolePolicy
の使用は推奨されなくなりました。このロールをメンテナンスウィンドウのタスクに使用している場合は、使用を中止することをお勧めします。代わりに、メンテナンスウィンドウのタスクが実行されたときに、Systems Manager と他の AWS のサービス間の通信を可能にする独自の IAM ロールを作成します。
以下の手順を使用して、Systems Manager がユーザーに代わって Maintenance Windows タスクを実行するための Maintenance Windows のカスタムサービスロールを作成します。前のタスクで作成したポリシーを、新しく作成したカスタムサービスロールにアタッチします。
コンソールを使用して、メンテナンスウィンドウのカスタムサービスロールを作成する
IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
ナビゲーションペインで ロール を選択してから、ロールを作成する を選択します。
-
[Select trusted entity] (信頼できるエンティティを選択) で、次のように選択します。
-
[信頼できるエンティティタイプ] で、[AWS サービス] を選択します。
-
[ユースケース] で、[Systems Manager] を選択します
-
[Systems Manager] を選択します。
次の画像は、Systems Manager オプションの場所を示しています。
-
-
[Next] を選択します。
-
[アクセス許可ポリシー] 欄で、タスク 1: コンソールを使用して、メンテナンスウィンドウサービスロール用にカスタムポリシーを作成する で作成したポリシー名を検索ボックスに入力します。名前の横にあるチェックボックスをオンにして、[次へ] を選択します。
-
[Role name] (ロール名) に、このロールが Maintenance Windows ロールであることを識別できる名前を入力します。例:
my-maintenance-window-role
。 -
(オプション) デフォルトのロールの説明を変更して、このロールの目的を反映させます。例:
Performs maintenance window tasks on your behalf
。 -
[ステップ 1: 信頼できるエンティティを選択する] で、[信頼ポリシー] に次のポリシーが表示されていることを確認します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
[ステップ 2: アクセス許可を追加する] で、タスク 1: コンソールを使用して、メンテナンスウィンドウサービスロール用にカスタムポリシーを作成する で作成したポリシーが存在するのを確認します。
-
(オプション) [ステップ3: タグを追加する] で、タグとキーの値のペアを 1 つまたは複数追加して、このロールのアクセスを整理、追跡、または制御できます。
-
[ロールの作成] を選択します。ロールページが再度表示されます。
-
さきほど作成した IAM ロールの名前を選択します。
-
[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::
に対してこのアクセス許可を追加すると、ユーザーはメンテナンスウィンドウタスクを作成するときに、コンソールで Systems Manager サービスにリンクされたロールを選択できます。account-id
:role/aws-service-role/ssm.amazonaws.com/アクセス権限を付与するには、ユーザー、グループ、またはロールにアクセス許可を追加します。
-
AWS IAM Identity Center のユーザーとグループ:
アクセス許可セットを作成します。「AWS IAM Identity Center ユーザーガイド」の「権限設定を作成する」の手順に従ってください。
-
IAM 内で、ID プロバイダーによって管理されているユーザー:
ID フェデレーションのロールを作成します。詳細については、「IAM ユーザーガイド」の「サードパーティー ID プロバイダー (フェデレーション) 用のロールの作成」を参照してください。
-
IAM ユーザー:
-
ユーザーが担当できるロールを作成します。手順については、「IAM ユーザーガイド」の「IAM ユーザー用ロールの作成」を参照してください。
-
(お奨めできない方法) ポリシーをユーザーに直接アタッチするか、ユーザーをユーザーグループに追加する。詳細については、「IAM ユーザーガイド」の「ユーザー (コンソール) へのアクセス権限の追加」を参照してください。
-
-
コンソールを使用して、メンテナンスウィンドウタスクの登録を許可するグループのアクセス許可を設定するには
IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
ナビゲーションペインで、[ユーザーグループ] を選択します。
-
グループリストで
iam:PassRole
のアクセス許可を割り当てるグループの名前を選択するか、必要に応じて新しいグループを作成します。 -
[Permissions] (アクセス許可) タブで、[Add permissions, Create inline policy] (アクセス許可の追加、インラインポリシーの作成) をクリックします。
-
[ポリシーエディタ] 欄で [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::
に対してこのアクセス許可を追加すると、ユーザーはメンテナンスウィンドウタスクを作成するときに、コンソールで Systems Manager サービスにリンクされたロールを選択できます。account-id
:role/aws-service-role/ssm.amazonaws.com/ -
[Next] を選択します。
-
[レビューと確認] ページで、この
PassRole
ポリシーを識別するための名前を [ポリシー名] ボックスに入力し (my-group-iam-passrole-policy
など)、[ポリシーの作成] を選択します。
タスク 4: 指定されたユーザーがコンソールを使用してメンテナンスウィンドウタスクを登録できないようにする
メンテナンスウィンドウでタスクを登録したくない AWS アカウント 内のユーザーに対する ssm:RegisterTaskWithMaintenanceWindow
アクセス許可を拒否できます。これにより、メンテナンスウィンドウのタスクを登録してはいけないユーザーに対して、追加の予防レイヤーが提供されます。
コンソールを使用して、メンテナンスウィンドウタスクの登録を許可しないグループ向けのアクセス許可を設定するには
IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
ナビゲーションペインで、[ユーザーグループ] を選択します。
-
グループのリストで、
ssm:RegisterTaskWithMaintenanceWindow
のアクセス許可を拒否するグループの名前を選択するか、もしくは必要に応じて新しいグループを作成します。 -
[Permissions] (アクセス許可) タブで、[Add permissions, Create inline policy] (アクセス許可の追加、インラインポリシーの作成) をクリックします。
-
[ポリシーエディタ] 欄で [JSON] を選択し、ボックスのデフォルトの内容を以下に置き換えます。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "ssm:RegisterTaskWithMaintenanceWindow", "Resource": "*" } ] }
-
[Next] を選択します。
-
[レビューと確認] ページで、このポリシーを識別するための名前 (
my-groups-deny-mw-tasks-policy
など) を [ポリシー名] ボックスに入力し、[ポリシーの作成] を選択します。