

• AWS Systems Manager CloudWatch 控制面板在 2026 年 4 月 30 日之后将不再可用。客户可以像现在一样继续使用 Amazon CloudWatch 控制台来查看、创建和管理其 Amazon CloudWatch 控制面板。有关更多信息，请参阅 [Amazon CloudWatch 控制面板文档](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)。

# 使用控制台为 Automation 创建服务角色
<a name="automation-setup-iam"></a>

如果需要为 Automation（AWS Systems Manager 中的一项工具）创建一个服务角色，请完成以下任务。有关自动化何时需要服务角色的更多信息，请参阅 [设置自动化](automation-setup.md)。

**Topics**
+ [任务 1：为自动化创建服务角色](#create-service-role)
+ [任务 2：将 iam:PassRole 策略附加到您的自动化角色](#attach-passrole-policy)

## 任务 1：为自动化创建服务角色
<a name="create-service-role"></a>

使用以下过程为 Systems Manager 自动化创建服务角色（或*承担角色*）。

**注意**  
您也可以在运行手册中使用此角色，例如 `AWS-CreateManagedLinuxInstance` 运行手册。使用此角色或 AWS Identity and Access Management (IAM) 角色的 Amazon Resource Name (ARN)，在运行手册中允许自动化在您的环境中执行操作，例如启动新实例和代表您执行操作。

**创建 IAM 角色并允许自动化担任该角色**

1. 通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在导航窗格中，选择 **Roles (角色)**，然后选择 **Create role (创建角色)**。

1. 在 **Select type of trusted entity (选择受信任实体的类型)** 下，选择 **AWS service (Amazon Web Services 服务)**。

1. 在 **Choose a use case (选择使用场景)** 部分，选择 **Systems Manager**，然后选择 **Next: Permissions (下一步：权限)**。

1. 在**附加的权限策略**页面中，搜索 **AmazonSSMAutomationRole** 策略，选择它，然后选择**下一步：审核**。

1. 在**审核**页面上，在**角色名称**框中输入名称，然后输入描述。

1. 选择**创建角色**。系统将让您返回到 **角色** 页面。

1. 在**角色**页面中，选择刚刚创建的角色以打开**摘要**页面。记下**角色名称**和**角色 ARN**。在下一步骤中，当您将 **iam:PassRole** 策略附加到您的 IAM 账户时，将指定该角色 ARN。您还可以在运行手册中指定角色名称和 ARN。

**注意**  
`AmazonSSMAutomationRole` 策略会将自动化角色权限分配给您账户内 AWS Lambda 函数的子集。这些函数以“自动化”开头。如果计划通过 Lambda 函数使用 自动化，则 Lambda ARN 必须使用以下格式：  
`"arn:aws:lambda:*:*:function:Automation*"`  
如果现有 Lambda 函数的 ARN 未使用此格式，您还必须为自动化角色附加额外的 Lambda 策略，例如 **AWSLambdaRole** 策略。其他策略或角色必须提供对 AWS 账户 账户内 Lambda 函数更宽泛的访问权限。

创建服务角色后，我们建议编辑信任策略，以帮助防止跨服务的混淆代理问题。*混淆代理问题*是一个安全问题，即没有执行操作权限的实体可能会迫使更具权限的实体执行该操作。在 AWS 中，跨服务模拟可能会导致混淆代理问题。一个服务（*呼叫服务*）调用另一项服务（*所谓的服务*）时，可能会发生跨服务模拟。可以操纵调用服务，使用其权限以在其他情况下该服务不应有访问权限的方式对另一个客户的资源进行操作。为防止这种情况，AWS 提供可帮助您保护所有服务的数据的工具，而这些服务中的服务主体有权限访问账户中的资源。

我们建议使用资源策略中的 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) 和 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) 全局条件上下文键，限制 Automation 为另一项服务提供的资源访问权限。如果 `aws:SourceArn` 值不包含账户 ID，例如 Amazon S3 存储桶 ARN，您必须使用两个全局条件上下文密钥来限制权限。如果同时使用全局条件上下文密钥和包含账户 ID 的 `aws:SourceArn` 值，则 `aws:SourceAccount` 值和 `aws:SourceArn` 值中的账户在同一策略语句中使用时，必须使用相同的账户 ID。如果您只希望将一个资源与跨服务访问相关联，请使用 `aws:SourceArn`。如果您想允许该账户中的任何资源与跨服务使用操作相关联，请使用。`aws:SourceAccount``aws:SourceArn` 的值必须是自动化执行的 ARN。如果您不知道资源的完整 ARN，或正在指定多个资源，请针对 ARN 未知部分使用带有通配符 (`*`) 的 `aws:SourceArn` 全局上下文条件键。例如 `arn:aws:ssm:*:123456789012:automation-execution/*`。

以下示例演示如何使用适用于自动化的 `aws:SourceArn` 和 `aws:SourceAccount` 全局条件上下文键，防止发生混淆代理问题。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "ssm.amazonaws.com"
        ]
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "123456789012"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:ssm:*:123456789012:automation-execution/*"
        }
      }
    }
  ]
}
```

------

**要修改角色的信任策略**

1. 通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在导航窗格中，选择**角色**。

1. 在账户的角色列表中，请选择 Automation 服务角色的名称。

1. 选择 **信任关系** 选项卡，然后选择 **编辑信任关系**。

1. 使用适用于 Automation 的 `aws:SourceArn` 和 `aws:SourceAccount` 全局条件上下文键编辑信任策略，以防止发生混淆代理问题。

1. 要保存更改，请选择 **Update Trust Policy**（更新信任策略）。

### （可选）添加自动化内联策略或客户管理型策略来调用其他 AWS 服务
<a name="add-inline-policy"></a>

如果您运行使用 IAM 服务角色来调用其他 AWS 服务的自动化，则必须为该服务角色配置调用这些服务的权限。该要求适用于所有 AWS 自动化运行手册（`AWS-*` 运行手册），例如 `AWS-ConfigureS3BucketLogging`、`AWS-CreateDynamoDBBackup` 和 `AWS-RestartEC2Instance` 运行手册等。对于您创建的任何自定义运行手册，如果这些文档使用调用其他服务的操作来调用其他 AWS 服务，则此要求同样适用。例如，如果使用 `aws:executeAwsApi`、`aws:CreateStack` 或 `aws:copyImage` 操作等，则您必须配置具有权限的服务角色来调用这些服务。您可以将 IAM 内联策略或客户管理型策略添加到该角色，从而向其他 AWS 服务 授予权限。

**为服务角色嵌入内联策略（IAM 控制台）**

1. 登录 AWS 管理控制台，然后通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在导航窗格中，选择**角色**。

1. 在列表中，选择您要编辑的角色的名称。

1. 选择**权限**项卡。

1. 在**添加权限**下拉列表中，选择**附加策略**或**创建内联策略**。

1. 如果选择**附加策略**，请选中要添加的策略旁边的复选框，然后选择**添加权限**。

1. 如果选择**创建策略**，请选择 **JSON** 选项卡。

1. 输入您希望调用的 AWS 服务的 JSON 策略文档。以下是两个示例 JSON 策略文档。

   **Amazon S3 PutObject 和 GetObject 示例**

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "s3:PutObject",
                   "s3:GetObject"
               ],
               "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
           }
       ]
   }
   ```

------

   **Amazon EC2 CreateSnapshot 和 DescribeSnapShots 示例**

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

****  

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
         {
            "Effect":"Allow",
            "Action":"ec2:CreateSnapshot",
            "Resource":"*"
         },
         {
            "Effect":"Allow",
            "Action":"ec2:DescribeSnapshots",
            "Resource":"*"
         }
      ]
   }
   ```

------

   有关 IAM policy 语言的详细信息，请参阅《IAM 用户指南》中的 [IAM JSON 策略参考](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html)。

1. 完成后，选择**查看策略**。[策略验证程序](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_policy-validator.html)将报告任何语法错误。

1. 在**查看策略**页面上，为创建的策略输入**名称**。查看策略**摘要**以查看您的策略授予的权限。然后，选择**创建策略**以保存您的工作。

1. 创建内联策略后，它会自动嵌入您的角色。

## 任务 2：将 iam:PassRole 策略附加到您的自动化角色
<a name="attach-passrole-policy"></a>

使用以下过程将 `iam:PassRole` 策略附加到您的自动化服务角色。这让 Automation 服务能够在运行自动化时将角色传递给其他服务或 Systems Manager 工具。

**将 iam:PassRole 策略附加到您的自动化角色**

1. 在刚刚创建的角色的**摘要**页面中，选择**权限**选项卡。

1. 选择 **Add inline policy (添加内联策略)**。

1. 在 **Create policy (创建策略)** 页面上，选择 **Visual editor (可视化编辑器)** 选项卡。

1. 选择**服务**，然后选择 **IAM**。

1. 选择**选择操作**。

1. 在**筛选操作**文本框中，键入 **PassRole**，然后选择 **PassRole** 选项。

1. 选择**资源**。确保已选择**特定**，然后选择**添加 ARN**。

1. 在**为角色指定 ARN** 字段中，粘贴您在任务 1 结束时复制的自动化角色 ARN。系统会自动填充**账户**和**具有路径的角色名称**字段。
**注意**  
如果希望自动化服务角色将 IAM 实例配置文件角色附加到 EC2 实例，则必须添加 IAM 实例配置文件角色的 ARN。这使自动化服务角色可以将 IAM 实例配置文件角色传递给目标 EC2 实例。

1. 选择**添加**。

1. 选择**查看策略**。

1. 在 **Review Policy (审核策略)** 页面上输入一个名称，然后选择 **Create Policy (创建策略)**。