方法 2:使用 IAM 为自动化配置角色 - Amazon Systems Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

方法 2:使用 IAM 为自动化配置角色

如果您需要为 Amazon Systems Manager 的功能自动化创建一个服务角色,请完成以下任务。有关自动化何时需要服务角色的更多信息,请参阅 设置自动化

任务 1:为自动化创建服务角色

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

注意

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

创建 IAM 角色并允许自动化担任该角色
  1. 通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在导航窗格中,选择 Roles (角色),然后选择 Create role (创建角色)

  3. Select type of trusted entity (选择受信任实体的类型) 下,选择 Amazon service (Amazon Web Services 服务)

  4. Choose a use case (选择使用场景) 部分,选择 Systems Manager,然后选择 Next: Permissions (下一步:权限)

  5. 附加的权限策略页面中,搜索 AmazonSSMAutomationRole 策略,选择它,然后选择下一步:审核

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

  7. 选择创建角色。系统将让您返回到 Roles (角色) 页面。

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

注意

AmazonSSMAutomationRole 策略会将自动化角色权限分配给您账户内 Amazon Lambda 函数的子集。这些函数以“自动化”开头。如果计划通过 Lambda 函数使用 自动化,则 Lambda ARN 必须使用以下格式:

"arn:aws:lambda:*:*:function:Automation*"

如果现有 Lambda 函数的 ARN 未使用此格式,您还必须为自动化角色附加额外的 Lambda 策略,例如 AWSLambdaRole 策略。其他策略或角色必须提供对 Amazon Web Services 账户 账户内 Lambda 函数更宽泛的访问权限。

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

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

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

{ "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/

  2. 在导航窗格中,选择 Roles(角色)。

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

  4. 选择 Trust relationships (信任关系) 选项卡,然后选择 Edit trust relationship (编辑信任关系)

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

  6. 要保存更改,请选择 Update Trust Policy(更新信任策略)。

(可选)添加自动化内联策略或客户管理型策略来调用其他 Amazon Web Services

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

为服务角色嵌入内联策略(IAM 控制台)
  1. 登录 Amazon Web Services Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在导航窗格中,选择角色

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

  4. 选择权限项卡。

  5. 添加权限下拉列表中,选择附加策略创建内联策略

  6. 如果选择附加策略,请选中要添加的策略旁边的复选框,然后选择添加权限

  7. 如果选择创建策略,请选择 JSON 选项卡。

  8. 输入您希望调用的 Amazon Web Services的 JSON 策略文档。以下是两个示例 JSON 策略文档。

    Amazon S3 PutObject 和 GetObject 示例

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

    Amazon EC2 CreateSnapshot 和 DescribeSnapShots 示例

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

    有关 IAM policy 语言的详细信息,请参阅《IAM 用户指南》中的 IAM JSON 策略参考

  9. 完成后,选择查看策略策略验证程序将报告任何语法错误。

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

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

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

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

将 iam:PassRole 策略附加到您的自动化角色
  1. 在刚刚创建的角色的摘要页面中,选择权限选项卡。

  2. 选择 Add inline policy (添加内联策略)

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

  4. 选择服务,然后选择 IAM

  5. 选择选择操作

  6. 筛选操作文本框中,键入 PassRole,然后选择 PassRole 选项。

  7. 选择资源。确保已选择特定,然后选择添加 ARN

  8. 为角色指定 ARN 字段中,粘贴您在任务 1 结束时复制的自动化角色 ARN。系统会自动填充账户具有路径的角色名称字段。

    注意

    如果希望自动化服务角色将 IAM 实例配置文件角色附加到 EC2 实例,则必须添加 IAM 实例配置文件角色的 ARN。这使自动化服务角色可以将 IAM 实例配置文件角色传递给目标 EC2 实例。

  9. 选择添加

  10. 选择Review policy(查看策略)

  11. Review Policy (审核策略) 页面上输入一个名称,然后选择 Create Policy (创建策略)