

• 2026 年 4 月 30 日之後將不再提供 AWS Systems Manager CloudWatch Dashboard。客戶可以繼續使用 Amazon CloudWatch 主控台來檢視、建立和管理其 Amazon CloudWatch 儀表板，就像現在一樣。如需詳細資訊，請參閱 [Amazon CloudWatch Dashboard 文件](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 控制維護時段的存取 AWS CLI
<a name="configuring-maintenance-window-permissions-cli"></a>

下列程序說明如何使用 AWS Command Line Interface (AWS CLI) 為 中的Maintenance Windows工具 建立所需的許可和角色 AWS Systems Manager。

**Topics**
+ [任務 1：建立 JSON 格式的信任政策和客戶管理政策檔案](#create-custom-policy-json-files-cli)
+ [任務 2：使用 建立和驗證維護時段的自訂服務角色 AWS CLI](#create-custom-role-cli)
+ [任務 3：授予指定使用者使用 註冊維護時段任務的許可 AWS CLI](#allow-maintenance-window-access-cli)
+ [任務 4：防止指定的使用者使用 註冊維護時段任務 AWS CLI](#deny-maintenance-window-access-cli)

## 任務 1：建立 JSON 格式的信任政策和客戶管理政策檔案
<a name="create-custom-policy-json-files-cli"></a>

維護時段任務需要 IAM 角色提供在目標資源上執行所需的許可。許可透過連接到角色的 IAM 政策提供。您執行的任務類型及其他的操作要求決定了此政策的內容。我們提供您可以根據需求調整的基本政策。根據維護時段執行的任務及任務類型，您可能不需要此政策中的所有許可，而您可能需要包含其他的許可。

在此任務中，您在一組 JSON 檔案中指定自訂維護時段角色所需的許可。您可以將此政策附加至稍後在 [任務 2：使用 建立和驗證維護時段的自訂服務角色 AWS CLI](#create-custom-role-cli) 建立的角色。

**建立信任政策和客戶管理政策檔案**

1. 將下列信任政策複製並貼入一個文字檔。使用以下名稱和副檔名儲存此檔案：**mw-role-trust-policy.json**。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "ssm.amazonaws.com"
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

1. 複製下列 JSON 政策並將其貼到另一個文字檔案中。在您建立第一個檔案的相同目錄中，使用下列名稱和副檔名儲存此檔案：**mw-role-custom-policy.json**。

------
#### [ 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": "arn:aws:iam::{{111122223333}}:role/{{maintenance-window-role-name}}",
               "Condition": {
                   "StringEquals": {
                       "iam:PassedToService": [
                           "ssm.amazonaws.com"
                       ]
                   }
               }
           }
       ]
   }
   ```

------

1. 根據您在帳户中執行的維護任務需求來修改 `mw-role-custom-policy.json` 的內容。您所做的變更專為您的操作而規劃。

   例如：
   + 您可以為特定功能及狀態機器提供 Amazon Resource Names (ARNs)，而不是使用萬用字圓 (\*) 限定詞。
   + 如果您不打算執行 AWS Step Functions 任務，您可以移除`states`許可 和 ARNs)。
   + 如果您不打算執行 AWS Lambda 任務，您可以移除`lambda`許可和 ARNs。
   + 如果您不打算執行自動化任務，您可以移除 `ssm:GetAutomationExecution` 及 `ssm:StartAutomationExecution` 許可。
   + 新增執行任務可能需要的其他許可。例如，有些自動化動作搭配 AWS CloudFormation 堆疊運作。因此，`cloudformation:CreateStack`、`cloudformation:DescribeStacks` 以及 `cloudformation:DeleteStack` 許可是必要的。

     另一個例子：Automation Runbook `AWS-CopySnapshot` 需建立 Amazon Elastic Block Store (Amazon EBS) 快照的權限。因此，服務角色需要 `ec2:CreateSnapshot` 許可。

     如需有關 Automation 執行手冊所需的角色權限的資訊，請參閱 [AWS Systems Manager Automation Runbook Reference](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-runbook-reference.html) 中的執行手冊描述。

   進行任何所需變更後，再次儲存檔案。

## 任務 2：使用 建立和驗證維護時段的自訂服務角色 AWS CLI
<a name="create-custom-role-cli"></a>

在先前任務中建立的政策會連接至您在此任務中建立的維護時段服務角色。使用者註冊維護時段任務時，他們將此 IAM 角色指定為任務組態的一部分。此角色的權限可讓 Systems Manager 代您在維護時段執行任務。

**重要**  
先前，Systems Manager 主控台可讓您選擇要`AWSServiceRoleForAmazonSSM`用作任務維護角色的 AWS 受管 IAM 服務連結角色。不再建議將此角色及其關聯政策 `AmazonSSMServiceRolePolicy`，用於維護時段任務。如果您現在將此角色用於維護時段任務，我們建議您停止使用。相反地，請建立您自己的 IAM 角色，以便在維護時段任務執行 AWS 服務 時啟用 Systems Manager 與其他 之間的通訊。

在此任務中，您需執行 CLI 命令來建立維護時段服務角色，並從您建立的 JSON 檔案新增政策內容。

**使用 建立維護時段的自訂服務角色 AWS CLI**

1. 開啟 AWS CLI ，並在您放置 `mw-role-custom-policy.json` 和 的目錄中執行下列命令`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": "2024-08-19T03:40:17.373Z",
           "RoleName": "my-maintenance-window-role",
           "Path": "/",
           "Arn": "arn:aws:iam::123456789012:role/my-maintenance-window-role"
       }
   }
   ```
**注意**  
記下 `RoleName` 與 `Arn` 值。它們可以包含在下一個命令中。

1. 執行下列命令，將*客戶管理政策*連接至該角色。使用自己的 AWS 帳戶 ID 取代 {{account-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"
   ```

------

1. 執行下列命令，確認角色已建立，並且已連接信任政策。

   ```
   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"
           }
       }
   }
   ```

1. 執行下列命令，確認客戶管理政策已連接至角色。

   ```
   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
<a name="allow-maintenance-window-access-cli"></a>

為使用者提供存取維護時段自訂服務角色的許可，可讓他們將其用於維護時段任務。這是對您已經授予他們將 Systems Manager API 命令用於 Maintenance Windows 工具的許可的補充。此 IAM 角色傳遞了執行維護時段任務所需的許可。因此，如果無法傳遞這些 IAM 許可，使用者就無法使用您的自訂服務角色向維護時段註冊任務。

在向維護時段註冊任務時，需要指定服務角色來執行實際的任務操作。這是服務代您執行任務時所擔任的角色。在此之前，若要註冊任務本身，請將 IAM `PassRole` 政策指派給 IAM 實體 (例如使用者或群組)。這樣便讓 IAM 實體可以指定執行任務時應使用的角色，而指定角色是向維護時段註冊這些任務的其中一步。如需相關資訊，請參閱《IAM 使用者指南》**中的 [Grant a user permissions to pass a role to an AWS 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html)。

**為允許使用者使用 註冊維護時段任務的使用者設定許可 AWS CLI**

1. 將下列 AWS Identity and Access Management (IAM) 政策複製並貼到文字編輯器中，並使用下列名稱和副檔名儲存：`mw-passrole-policy.json`。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "iam:PassRole",
               "Resource": "arn:aws:iam::{{111122223333}}:role/{{my-maintenance-window-role}}"
           },
           {
               "Effect": "Allow",
               "Action": "iam:ListRoles",
               "Resource": "arn:aws:iam::{{111122223333}}:role/"
           },
           {
               "Effect": "Allow",
               "Action": "iam:ListRoles",
               "Resource": "arn:aws:iam::{{111122223333}}: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 服務連結的角色。

1. 開啟 AWS CLI。

1. 根據您是否將許可指派給 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}}，指定要將任務指派給維護時段的使用者。對於 {{policy-name}}，指定您要用於識別該政策的名稱，例如 **my-iam-passrole-policy**。對於 {{path-to-document}}，指定您儲存在步驟 1 的檔案路徑。例如：`file://C:\Temp\mw-passrole-policy.json`
**注意**  
若要授予使用者使用 Systems Manager 主控台為維護時段註冊任務的存取權，您還必須將 `AmazonSSMFullAccess` 政策指派給使用者 (或 IAM 政策，該政策為涵蓋維護時段任務的 Systems Manager 提供較小的存取許可集)。執行以下命令，將 `AmazonSSMFullAccess` 政策指派給使用者。  

     ```
     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}}
     ```

------

     對於 {{group-name}}，指定其成員會將任務指派給維護時段的群組。對於 {{policy-name}}，指定您要用於識別該政策的名稱，例如 **my-iam-passrole-policy**。對於 {{path-to-document}}，指定您儲存在步驟 1 的檔案路徑。例如：`file://C:\Temp\mw-passrole-policy.json`
**注意**  
若要授與群組成員使用 Systems Manager 主控台為維護時段註冊任務的存取權限，您還必須將 `AmazonSSMFullAccess` 政策指派給群組。執行以下命令，將此政策指派到您的群組。  

     ```
     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}}"
     ```

1. 執行以下命令，確認已經將政策指派到群組。

------
#### [ Linux & macOS ]

   ```
   aws iam list-group-policies \
       --group-name "{{group-name}}"
   ```

------
#### [ Windows ]

   ```
   aws iam list-group-policies ^
       --group-name "{{group-name}}"
   ```

------

## 任務 4：防止指定的使用者使用 註冊維護時段任務 AWS CLI
<a name="deny-maintenance-window-access-cli"></a>

您可以拒絕 AWS 帳戶 您不想向維護時段註冊任務之 中使用者的`ssm:RegisterTaskWithMaintenanceWindow`許可。這針對不應註冊維護時段任務的使用者提供了額外的保護層。

無論您是根據個別使用者還是群組來拒絕 `ssm:RegisterTaskWithMaintenanceWindow` 許可，請使用下列其中一個處理程序，來阻止使用者向維護時段註冊任務。

**為不允許使用 註冊維護時段任務的使用者設定許可 AWS CLI**

1. 下列 IAM 政策複製並貼到文字編輯器，並以下名稱和副檔名儲存：**deny-mw-tasks-policy.json**。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Deny",
               "Action": "ssm:RegisterTaskWithMaintenanceWindow",
               "Resource": "*"
           }
       ]
   }
   ```

------

1. 開啟 AWS CLI。

1. 根據您是否將許可指派給 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}}，指定要防止其將任務指派給維護時段的使用者。對於 {{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}}
     ```

------

     對於 {{group-name}}，指定要防止其成員將任務指派給維護時段的群組。對於 {{policy-name}}，指定您要用於識別該政策的名稱，例如 **my-deny-mw-tasks-policy**。對於 {{path-to-document}}，指定您儲存在步驟 1 的檔案路徑。例如：`file://C:\Temp\deny-mw-tasks-policy.json`

1. 執行以下命令，確認已經將政策指派到群組。

------
#### [ Linux & macOS ]

   ```
   aws iam list-group-policies \
       --group-name "{{group-name}}"
   ```

------
#### [ Windows ]

   ```
   aws iam list-group-policies ^
       --group-name "{{group-name}}"
   ```

------