控制對維護時段的存取 (AWS CLI) - AWS Systems Manager

控制對維護時段的存取 (AWS CLI)

下列處理程序描述如何使用 AWS Command Line Interface (AWS CLI) 來建立 Maintenance Windows (AWS Systems Manager 功能) 所需的角色與許可。

任務 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. 執行以下命令以將 AmazonSSMMaintenanceWindowRole 受管政策連接到您在步驟 2 中建立的角色。

    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

    account-id 取代為 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 政策指派給您的使用者帳戶 (或 IAM 政策,該政策為涵蓋維護時段任務提供較小 Systems Manager 的存取許可集)。如需詳細資訊,請參閱建立使用者群組建立使用者並指派許可。執行以下命令,將 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"