メンテナンスウィンドウへのアクセスをコントロールする (Tools for Windows PowerShell) - AWS Systems Manager

メンテナンスウィンドウへのアクセスをコントロールする (Tools for Windows PowerShell)

以下の手順では、AWS Tools for Windows PowerShell を使用して、AWS Systems Manager の一機能である Maintenance Windows に必要なロールとアクセス許可を作成する方法を説明します。

タスク 1: (オプション) メンテナンスウィンドウのカスタムサービスロールを作成する (Tools for Windows PowerShell)

重要

Systems Manager サービスにリンクされたロールを使用してユーザーの代わりにメンテナンスウィンドウでタスクを実行する場合、カスタムサービスロールは必要ありません。アカウントに Systems Manager サービスにリンクされたロールがない場合は、Systems Manager コンソールを使用してメンテナンスウィンドウタスクを作成または更新するときに、そのロールを作成できます。詳細については、以下のトピックを参照してください。

  1. 次のトラストポリシーをテキストファイルに貼り付けます。次の名前と拡張子でファイルを保存します: mw-role-trust-policy.json

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. Tools for Windows PowerShell を開き、次のコマンドを実行してロールを作成します。ロール名は、これをメンテナンスウィンドウロールとして識別する名前です。例: my-maintenance-window-role。このロールは、前のステップで作成したポリシーを使用します。

    New-IAMRole ` -RoleName "my-maintenance-window-role" ` -AssumeRolePolicyDocument (Get-Content -raw .\mw-role-trust-policy.json)

    システムが以下のような情報を返します。

    Arn : arn:aws:iam::123456789012:role/mw-task-role
    AssumeRolePolicyDocument : ExampleDoc12345678
    CreateDate : 4/4/2017 11:24:43
    Path : /
    RoleId : AROAIIZKPBKS2LEXAMPLE
    RoleName : my-maintenance-window-role
  3. 次のコマンドを実行して、前のステップで作成したロールに AmazonSSMMaintenanceWindowRole マネージドポリシーをアタッチします。

    Register-IAMRolePolicy ` -RoleName "my-maintenance-window-role" ` -PolicyArn "arn:aws:iam::aws:policy/service-role/AmazonSSMMaintenanceWindowRole"

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

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

  1. 次の AWS Identity and Access Management (IAM) ポリシーをコピーしてテキストエディタに貼り付け、mw-passrole-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 を、前に作成したカスタムメンテナンスウィンドウロールの名前に置き換えます。

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

  2. Tools for Windows PowerShell を開く

  3. IAM ユーザーまたはグループのどちらにアクセス許可を追加するかに応じて、以下のいずれかのコマンドを実行します。

    • IAM ユーザーの場合:

      Write-IAMUserPolicy ` -UserName "user-name" ` -PolicyDocument (Get-Content -raw path-to-document) ` -PolicyName "policy-name"

      user-name で、メンテナンスウィンドウにタスクを割り当てる IAM ユーザーを指定します。policy-name では、ポリシーを識別するための名前を入力します (例: my-iam-passrole-policy)。path-to-document では、ステップ 1 で保存したファイルへのパスを指定します。例: C:\temp\passrole-policy.json

      注記

      AWS Systems Manager コンソールを使用してメンテナンスウィンドウのタスクを登録する場合は、ユーザーアカウントに AmazonSSMFullAccess ポリシーも割り当てる必要があります。このポリシーをアカウントに割り当てるには、次のコマンドを実行します。

      Register-IAMUserPolicy ` -UserName "user-name" ` -PolicyArn "arn:aws:iam::aws:policy/AmazonSSMFullAccess"
    • IAM グループの場合:

      Write-IAMGroupPolicy ` -GroupName "group-name" ` -PolicyDocument (Get-Content -raw path-to-document) ` -PolicyName "policy-name"

      group-name で、メンテナンスウィンドウにタスクを割り当てる IAM グループを指定します。policy-name では、ポリシーを識別するための名前を入力します (例: my-iam-passrole-policy)。path-to-document では、ステップ 1 で保存したファイルへのパスを指定します。例: C:\temp\passrole-policy.json

    注記

    AWS Systems Manager コンソールを使用してメンテナンスウィンドウのタスクを登録する場合は、ユーザーアカウントに AmazonSSMFullAccess ポリシーも割り当てる必要があります。このポリシーをグループに割り当てるには、次のコマンドを実行します。

    Register-IAMGroupPolicy ` -GroupName "group-name" ` -PolicyArn "arn:aws:iam::aws:policy/AmazonSSMFullAccess"
  4. ポリシーがグループに割り当てられたことを確認するには、次のコマンドを実行します。

    Get-IAMGroupPolicies ` -GroupName "group-name"

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

  1. 次の IAM ポリシーをコピーしてテキストエディタに貼り付け、deny-mw-tasks-policy.json というファイル名および拡張子で保存します。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "ssm:RegisterTaskWithMaintenanceWindow", "Resource": "*" } ] }
  2. Tools for Windows PowerShell を開く

  3. IAM ユーザーまたはグループのどちらにアクセス許可を追加するかに応じて、以下のいずれかのコマンドを実行します。

    • IAM ユーザーの場合:

      Write-IAMUserPolicy ` -UserName "user-name" ` -PolicyDocument (Get-Content -raw path-to-document) ` -PolicyName "policy-name"

      user-name には、メンテナンスウィンドウにタスクを割り当てられないようにする IAM ユーザーを指定します。policy-name では、ポリシーを識別するための名前を入力します (例: my-deny-mw-tasks-policy)。path-to-document では、ステップ 1 で保存したファイルへのパスを指定します。例: C:\temp\deny-mw-tasks-policy.json

    • IAM グループの場合:

      Write-IAMGroupPolicy ` -GroupName "group-name" ` -PolicyDocument (Get-Content -raw path-to-document) ` -PolicyName "policy-name"

      group-name には、メンテナンスウィンドウにタスクを割り当てられないようにする IAM グループを指定します。policy-name では、ポリシーを識別するための名前を入力します (例: my-deny-mw-tasks-policy)。path-to-document では、ステップ 1 で保存したファイルへのパスを指定します。例: C:\temp\deny-mw-tasks-policy.json

  4. ポリシーがグループに割り当てられたことを確認するには、次のコマンドを実行します。

    Get-IAMGroupPolicies ` -GroupName "group-name"