Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

AWS CLI を使用したメンテナンスウィンドウへのアクセスの制御

フォーカスモード
AWS CLI を使用したメンテナンスウィンドウへのアクセスの制御 - AWS Systems Manager

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

タスク 1: 信頼ポリシーとカスタマー管理ポリシーファイルを JSON 形式で作成する

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

このタスクでは、カスタムメンテナンスウィンドウロールに必要なアクセス許可を JSON ファイルのペアで指定します。後ほど タスク 2: AWS CLI を使用して、メンテナンスウィンドウ用にカスタムサービスロールを作成し確認する に作成するロールに、このポリシーをアタッチします。

信頼ポリシーとカスタマー管理ポリシーファイルを作成するには
  1. 次のトラストポリシーをテキストファイルに貼り付けます。次の名前と拡張子でファイルを保存します: mw-role-trust-policy.json

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. 次の JSON ポリシーを別のテキストファイルに貼り付けます。最初のファイルを作成したのと同じディレクトリに、このファイルを次の名前と拡張子で保存します: mw-role-custom-policy.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" ] } } } ] }
  3. 必要に応じて、アカウントで実行するメンテナンスタスク用に mw-role-custom-policy.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 オートメーションランブックレファレンス」にあるランブックの説明を参照してください。

    必要な変更を行った後、ファイルを再保存します。

タスク 2: AWS CLI を使用して、メンテナンスウィンドウ用にカスタムサービスロールを作成し確認する

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

重要

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

このタスクでは、CLI コマンドを実行してメンテナンスウィンドウサービスロールを作成し、作成した JSON ファイルからポリシーコンテンツを追加します。

AWS CLI を使用して、メンテナンスウィンドウ用にカスタムサービスロールを作成する
  1. mw-role-custom-policy.jsonmw-role-trust-policy.json を保存したディレクトリで、AWS CLI を開いて次のコマンドを実行します。このコマンドにより、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
    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": "2024-08-19T03:40:17.373Z",
            "RoleName": "my-maintenance-window-role",
            "Path": "/",
            "Arn": "arn:aws:iam::123456789012:role/my-maintenance-window-role"
        }
    }
    注記

    RoleNameArn を書き留めておきます。それらを次のコマンドに含めます。

  2. 次のコマンドを実行して、カスタマー管理ポリシーをロールにアタッチします。account-id のプレースホルダーをお使いのアカウント AWS アカウント ID に置き換えます。

    Linux & macOS
    aws iam attach-role-policy \ --role-name "my-maintenance-window-role" \ --policy-arn "arn:aws:iam::account-id:policy/mw-role-custom-policy.json"
    Windows
    aws iam attach-role-policy ^ --role-name "my-maintenance-window-role" ^ --policy-arn "arn:aws:iam::account-id:policy/mw-role-custom-policy.json"
    aws iam attach-role-policy \ --role-name "my-maintenance-window-role" \ --policy-arn "arn:aws:iam::account-id:policy/mw-role-custom-policy.json"
  3. 次のコマンドを実行して、ロールが作成され、信頼ポリシーがアタッチされていることを確認します。

    aws iam get-role --role-name my-maintenance-window-role

    コマンドは以下のような情報を返します。

    {
        "Role": {
            "Path": "/",
            "RoleName": "my-maintenance-window-role",
            "RoleId": "AROA123456789EXAMPLE",
            "Arn": "arn:aws:iam::123456789012:role/my-maintenance-window-role",
            "CreateDate": "2024-08-19T14:13:32+00:00",
            "AssumeRolePolicyDocument": {
                "Version": "2012-10-17",
                "Statement": [
                    {
                        "Effect": "Allow",
                        "Principal": {
                            "Service": "ssm.amazonaws.com"
                        },
                        "Action": "sts:AssumeRole"
                    }
                ]
            },
            "MaxSessionDuration": 3600,
            "RoleLastUsed": {
                "LastUsedDate": "2024-08-19T14:30:44+00:00",
                "Region": "us-east-2"
            }
        }
    }
  4. 次のコマンドを実行して、カスタマー管理ポリシーがロールにアタッチされていることを確認します。

    aws iam list-attached-role-policies --role-name my-maintenance-window-role

    コマンドは以下のような情報を返します。

    {
        "AttachedPolicies": [
            {
                "PolicyName": "mw-role-custom-policy",
                "PolicyArn": "arn:aws:iam::123456789012:policy/mw-role-custom-policy"
            }
        ]
    }

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

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

メンテナンスウィンドウにタスクを登録する場合、実際のタスクオペレーションを実行するためのサービスロールを指定します。これは、サービスがユーザーに代わってタスクを実行するときに引き受けるロールです。その前に、タスク自体を登録するには、IAM PassRole ポリシーを 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
      aws iam put-user-policy \ --user-name "user-name" \ --policy-name "policy-name" \ --policy-document file://path-to-document

      user-name では、メンテナンスウィンドウにタスクを割り当てるユーザーを指定します。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"
      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
      aws iam put-group-policy \ --group-name "group-name" \ --policy-name "policy-name" \ --policy-document file://path-to-document

      group-name では、メンテナンスウィンドウにタスクを割り当てるメンバーが属するグループを指定します。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"
      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"
    aws iam list-group-policies \ --group-name "group-name"

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

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

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

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 エンティティ (ユーザーまたはグループ) にアクセス許可を割り当てるかどうかに応じて、以下のいずれかのコマンドを実行します。

    • ユーザーの場合:

      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
      aws iam put-user-policy \ --user-name "user-name" \ --policy-name "policy-name" \ --policy-document file://path-to-document

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

    • グループの場合:

      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
      aws iam put-group-policy \ --group-name "group-name" \ --policy-name "policy-name" \ --policy-document file://path-to-document

      group-name では、メンテナンスウィンドウにタスクを割り当てられないようにするグループを指定します。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"
    aws iam list-group-policies \ --group-name "group-name"
プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.