Amazon Data Lifecycle Manager 的 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 使用以下原定设置的服务角色:
-
Amazon Web Services DataLifecycleManagerDefaultRole 用于管理快照的 – 默认角色。它只信任
dlm.amazonaws.com
服务代入该角色,并允许 Amazon Data Lifecycle Manager 代表您执行快照和跨账户快照复制策略所需的操作。此角色使用AWSDataLifecycleManagerServiceRole
AWS 托管式策略。注意
角色的 ARN 格式会有所不同,具体取决于使用控制台还是 AWS CLI 创建角色。如果使用控制台创建角色,则 ARN 格式为
arn:aws:iam::
。如果使用 AWS CLI 创建角色,则 ARN 格式为account_id
:role/service-role/AWSDataLifecycleManagerDefaultRolearn:aws:iam::
。account_id
:role/AWSDataLifecycleManagerDefaultRole -
Amazon Web Services DataLifecycleManagerDefaultRoleForAMIManagement – 用于管理 AMI 的默认角色。它只信任
dlm.amazonaws.com
服务代入该角色,并允许 Amazon Data Lifecycle Manager 代表您执行由 EBS 支持的 AMI 策略所需的操作。此角色使用AWSDataLifecycleManagerServiceRoleForAMIManagement
AWS 托管式策略。
如果您使用的是 Amazon Data Lifecycle Manager 控制台,Amazon Data Lifecycle Manager 会在您首次创建快照或跨账户快照复制策略时,自动创建 AWSDataLifecycleManagerDefaultRole 服务角色,并且它会在您首次创建由 EBS 支持的 AMI 策略时自动创建 AWSDataLifecycleManagerDefaultRoleForAMIManagement 服务角色。
如果您不使用控制台,可以使用 create-default-role 命令手动创建服务角色。对于 --resource-type
,指定 snapshot
以创建 AWSDataLifecycleManagerDefaultRole,或 image
以创建 AWSDataLifecycleManagerDefaultRoleForAMIManagement。
$
aws dlm create-default-role --resource-typesnapshot|image
如果您删除了原定设置服务角色,然后需要再次创建,则可以使用相同的流程在您的账户中重新创建它们。
Amazon Data Lifecycle Manager 的自定义服务角色
作为使用原定设置服务角色的替代方案,您可以在创建生命周期策略时创建具有所需权限的自定义 IAM 角色,然后选择它们。
创建自定义 IAM 角色
-
创建具有以下权限的角色。
-
管理快照生命周期策略所需的权限
{ "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 用户指南中的创建角色。
-
-
向角色添加信任关系。
-
在 IAM 控制台中,选择角色。
-
选择您创建的角色,然后选择信任关系。
-
选择编辑信任关系,添加以下策略,然后选择更新信任策略。
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "dlm.amazonaws.com" }, "Action": "sts:AssumeRole" }] }
建议您使用
aws:SourceAccount
和aws: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
" } }
-