IAM 服务角色 - Amazon EBS

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

IAM 服务角色

AWS Identity and Access Management (IAM) 角色与用户类似,因为它是一个具有权限策略的 AWS 身份,该策略决定了该身份可以做什么和不能做什么 AWS。但是,角色旨在让需要它的任何人代入,而不是唯一地与某个人员关联。服务角色是 AWS 服务代替您执行操作的角色。作为代表您执行备份操作的服务,Amazon Data Lifecycle Manager 要求您在该服务代表您执行策略操作时将其传递给要代入的角色。有关 IAM 角色的更多信息,请参阅《IAM 用户指南》中的 IAM 角色

您传递到 Amazon Data Lifecycle Manager 的角色必须拥有一个 IAM policy,该策略具有的权限可让 Amazon Data Lifecycle Manager 执行策略操作关联的操作,如创建快照和 AMI、复制快照和 AMI、删除快照以及取消注册 AMI。每种 Amazon Data Lifecycle Manager 策略类型需要不同的权限。该角色还必须将 Amazon Data Lifecycle Manager 列为可信实体,这使得 Amazon Data Lifecycle Manager 能够代入该角色。

Amazon Data Lifecycle Manager 的原定设置服务角色

Amazon Data Lifecycle Manager 使用以下原定设置的服务角色:

  • AWSDataLifecycleManagerDefaultRole—管理快照的默认角色。它只信任 dlm.amazonaws.com 服务代入该角色,并允许 Amazon Data Lifecycle Manager 代表您执行快照和跨账户快照复制策略所需的操作。此角色使用 AWSDataLifecycleManagerServiceRole AWS 托管策略。

    注意

    角色的 ARN 格式会有所不同,具体取决于使用控制台还是 AWS CLI创建角色。如果使用控制台创建角色,则 ARN 格式为 arn:aws:iam::account_id:role/service-role/AWSDataLifecycleManagerDefaultRole。如果角色是使用创建的 AWS CLI,则 ARN 格式为。arn:aws:iam::account_id:role/AWSDataLifecycleManagerDefaultRole

  • AWSDataLifecycleManagerDefaultRoleForAMIManagement—管理 AMI 的默认角色。它只信任 dlm.amazonaws.com 服务代入该角色,并允许 Amazon Data Lifecycle Manager 代表您执行由 EBS 支持的 AMI 策略所需的操作。此角色使用AWSDataLifecycleManagerServiceRoleForAMIManagement AWS 托管策略。

如果您使用的是 Amazon Data Lifecycle Manager 控制台,则在您首次创建快照或跨账户快照复制策略时,Amazon Data Lifecycle Manager 会自动创建AWSDataLifecycleManagerDefaultRoleForAMIManagement服务角色,并在您首次创建由 EBS 支持的 AMI 策略时自动创建服务角色。AWSDataLifecycleManagerDefaultRole

如果您不使用控制台,可以使用 create-default-role 命令手动创建服务角色。对于--resource-type,请snapshot指定 “创建 AWSDataLifecycleManagerDefaultRole” 或 image “创建” AWSDataLifecycleManagerDefaultRoleForAMIManagement。

$ aws dlm create-default-role --resource-type snapshot|image

如果您删除了原定设置服务角色,然后需要再次创建,则可以使用相同的流程在您的账户中重新创建它们。

Amazon Data Lifecycle Manager 的自定义服务角色

作为使用原定设置服务角色的替代方案,您可以在创建生命周期策略时创建具有所需权限的自定义 IAM 角色,然后选择它们。

创建自定义 IAM 角色
  1. 创建具有以下权限的角色。

    • 管理快照生命周期策略所需的权限

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:CreateSnapshot", "ec2:CreateSnapshots", "ec2:DeleteSnapshot", "ec2:DescribeInstances", "ec2:DescribeVolumes", "ec2:DescribeSnapshots", "ec2:EnableFastSnapshotRestores", "ec2:DescribeFastSnapshotRestores", "ec2:DisableFastSnapshotRestores", "ec2:CopySnapshot", "ec2:ModifySnapshotAttribute", "ec2:DescribeSnapshotAttribute", "ec2:ModifySnapshotTier", "ec2:DescribeSnapshotTierStatus" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:*::snapshot/*" }, { "Effect": "Allow", "Action": [ "events:PutRule", "events:DeleteRule", "events:DescribeRule", "events:EnableRule", "events:DisableRule", "events:ListTargetsByRule", "events:PutTargets", "events:RemoveTargets" ], "Resource": "arn:aws:events:*:*:rule/AwsDataLifecycleRule.managed-cwe.*" }, { "Effect": "Allow", "Action": [ "ssm:GetCommandInvocation", "ssm:ListCommands", "ssm:DescribeInstanceInformation" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:SendCommand", "ssm:DescribeDocument", "ssm:GetDocument" ], "Resource": [ "arn:aws:ssm:*:*:document/*" ], "Condition": { "StringEquals": { "aws:ResourceTag/DLMScriptsAccess": "true" } } }, { "Effect": "Allow", "Action": [ "ssm:SendCommand", "ssm:DescribeDocument", "ssm:GetDocument" ], "Resource": [ "arn:aws:ssm:*::document/*" ] }, { "Effect": "Allow", "Action": [ "ssm:SendCommand" ], "Resource": [ "arn:aws:ec2:*:*:instance/*" ], "Condition": { "StringNotLike": { "aws:ResourceTag/DLMScriptsAccess": "false" } } } ] }
    • 管理 AMI 生命周期策略所需的权限

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": [ "arn:aws:ec2:*::snapshot/*", "arn:aws:ec2:*::image/*" ] }, { "Effect": "Allow", "Action": [ "ec2:DescribeImages", "ec2:DescribeInstances", "ec2:DescribeImageAttribute", "ec2:DescribeVolumes", "ec2:DescribeSnapshots" ], "Resource": "*" }, { "Effect": "Allow", "Action": "ec2:DeleteSnapshot", "Resource": "arn:aws:ec2:*::snapshot/*" }, { "Effect": "Allow", "Action": [ "ec2:ResetImageAttribute", "ec2:DeregisterImage", "ec2:CreateImage", "ec2:CopyImage", "ec2:ModifyImageAttribute" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:EnableImageDeprecation", "ec2:DisableImageDeprecation" ], "Resource": "arn:aws:ec2:*::image/*" } ] }

    有关更多信息,请参阅IAM 用户指南中的创建角色

  2. 向角色添加信任关系。

    1. 在 IAM 控制台中,选择角色

    2. 选择您创建的角色,然后选择信任关系

    3. 选择编辑信任关系,添加以下策略,然后选择更新信任策略

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

      建议您使用 aws:SourceAccountaws:SourceArn 条件键来防止出现混淆代理人问题。例如,您可以将以下条件块添加到以前的信任策略。aws:SourceAccount 是生命周期策略的所有者,aws:SourceArn 是生命周期策略的 ARN。如果您不知道生命周期策略的 ID,可以用通配符(*)替换 ARN 的该部分,然后在创建生命周期策略后更新信任策略。

      "Condition": { "StringEquals": { "aws:SourceAccount": "account_id" }, "ArnLike": { "aws:SourceArn": "arn:partition:dlm:region:account_id:policy/policy_id" } }