IAM 服務角色 - Amazon Elastic Compute Cloud

IAM 服務角色

AWS Identity and Access Management (IAM) 角色類似於使用者,因為它是一個 AWS 身分,具有判定其在 AWS 中可執行和不可執行的操作之許可政策。但是,角色的目的是讓需要它的任何人可代入,而不是單獨地與某個人員關聯。服務角色是 AWS 服務擔任的角色,以代表您執行動作。作為代表您執行備份操作的服務,Amazon Data Lifecycle Manager 需要獲得您傳遞的角色,以在代表您進行政策操作時擔任該角色。如需 IAM 角色的詳細資訊,請參閱《IAM 使用者指南》中的 IAM 角色

您傳遞給 Amazon Data Lifecycle Manager 的角色必須具有 IAM 政策,其許可可讓 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 會在您首次建立快照或跨帳戶快照複本政策時,自動建立 AWSDataLifecycleManagerDefaultRole 服務角色,並在您首次建立 EBS 後端 AMI 政策時,自動建立 AWSDataLifecycleManagerDefaultRoleForAMIManagement 服務角色。

如果您不使用主控台,可以使用 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.*" } ] }
    • 管理 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": "*" }] }

    如需詳細資訊,請參閱 IAM 使用者指南中的建立角色

  2. 將信任關係新增至角色。

    1. 在 IAM 主控台,選擇 Roles (角色)

    2. 選取您建立的角色,然後選擇 Trust relationships (信任關係)。

    3. 選擇 Edit Trust Relationships (編輯信任關係),新增下列政策,然後選擇 Update Trust Policy (更新信任政策)

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