メンテナンスウィンドウへのアクセスの制御 (AWS CLI) - AWS Systems Manager

メンテナンスウィンドウへのアクセスの制御 (AWS CLI)

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

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

重要

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. AWS CLI を開いて mw-role-trust-policy.json を配置したディレクトリで次のコマンドを実行し、my-maintenance-window-role というメンテナンスウィンドウロールを作成します。このコマンドでは、前の手順で作成したポリシーをこのロールに割り当てます。

    Linux & macOS
    aws iam create-role \ --role-name "my-maintenance-window-role" \ --assume-role-policy-document file://mw-role-trust-policy.json
    Windows
    aws iam create-role ^ --role-name "my-maintenance-window-role" ^ --assume-role-policy-document file://mw-role-trust-policy.json

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

    {
        "Role": {
            "AssumeRolePolicyDocument": {
                "Version": "2012-10-17",
                "Statement": [
                    {
                        "Action": "sts:AssumeRole",
                        "Effect": "Allow",
                        "Principal": {
                            "Service": "ssm.amazonaws.com"
                        }
                    }
                ]
            },
            "RoleId": "AROAIIZKPBKS2LEXAMPLE",
            "CreateDate": "2017-04-04T03:40:17.373Z",
            "RoleName": "my-maintenance-window-role",
            "Path": "/",
            "Arn": "arn:aws:iam::123456789012:role/my-maintenance-window-role"
        }
    }
    注記

    RoleNameArn を書き留めておきます。これらは、このカスタムロールを使用するメンテナンスウィンドウの作成時に指定します。

  3. 次のコマンドを実行して、ステップ 2 で作成したロールに AmazonSSMMaintenanceWindowRole マネージドポリシーをアタッチします。

    Linux & macOS
    aws iam attach-role-policy \ --role-name "my-maintenance-window-role" \ --policy-arn "arn:aws:iam::aws:policy/service-role/AmazonSSMMaintenanceWindowRole"
    Windows
    aws iam attach-role-policy ^ --role-name "my-maintenance-window-role" ^ --policy-arn "arn:aws:iam::aws:policy/service-role/AmazonSSMMaintenanceWindowRole"

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

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

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

  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. AWS CLI を開きます。

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

    • IAM ユーザーの場合:

      Linux & macOS
      aws iam put-user-policy \ --user-name "user-name" \ --policy-name "policy-name" \ --policy-document file://path-to-document
      Windows
      aws iam put-user-policy ^ --user-name "user-name" ^ --policy-name "policy-name" ^ --policy-document file://path-to-document

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

      注記

      Systems Manager コンソールを使用してメンテナンスウィンドウのタスクを登録するためのアクセス許可をユーザーに付与するには、AmazonSSMFullAccess ポリシー (または、メンテナンスウィンドウのタスクを対象として限られた範囲のアクセス許可を Systems Manager に提供する IAM ポリシー) もユーザーアカウントに割り当てる必要があります。詳細については、「ユーザーグループを作成する」および「ユーザーを作成してアクセス許可を割り当てる」を参照してください。AmazonSSMFullAccess ポリシーをアカウントに割り当てるには、次のコマンドを実行します。

      Linux & macOS
      aws iam attach-user-policy \ --policy-arn "arn:aws:iam::aws:policy/AmazonSSMFullAccess" \ --user-name "user-name"
      Windows
      aws iam attach-user-policy ^ --policy-arn "arn:aws:iam::aws:policy/AmazonSSMFullAccess" ^ --user-name "user-name"
    • IAM グループの場合:

      Linux & macOS
      aws iam put-group-policy \ --group-name "group-name" \ --policy-name "policy-name" \ --policy-document file://path-to-document
      Windows
      aws iam put-group-policy ^ --group-name "group-name" ^ --policy-name "policy-name" ^ --policy-document file://path-to-document

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

      注記

      Systems Manager コンソールを使用してメンテナンスウィンドウのタスクを登録するためのアクセス許可をグループのメンバーに付与するには、AmazonSSMFullAccess ポリシーもグループに割り当てる必要があります。このポリシーをグループに割り当てるには、次のコマンドを実行します。

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

    Linux & macOS
    aws iam list-group-policies \ --group-name "group-name"
    Windows
    aws iam list-group-policies ^ --group-name "group-name"

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

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

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "ssm:RegisterTaskWithMaintenanceWindow", "Resource": "*" } ] }
  2. AWS CLI を開きます。

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

    • IAM ユーザーの場合:

      Linux & macOS
      aws iam put-user-policy \ --user-name "user-name" \ --policy-name "policy-name" \ --policy-document file://path-to-document
      Windows
      aws iam put-user-policy ^ --user-name "user-name" ^ --policy-name "policy-name" ^ --policy-document file://path-to-document

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

    • IAM グループの場合:

      Linux & macOS
      aws iam put-group-policy \ --group-name "group-name" \ --policy-name "policy-name" \ --policy-document file://path-to-document
      Windows
      aws iam put-group-policy ^ --group-name "group-name" ^ --policy-name "policy-name" ^ --policy-document file://path-to-document

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

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

    Linux & macOS
    aws iam list-group-policies \ --group-name "group-name"
    Windows
    aws iam list-group-policies ^ --group-name "group-name"