本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
的身份和访问管理 Amazon Database Migration Service
Amazon Identity and Access Management (IAM) Amazon Web Services 服务 可以帮助管理员安全地控制对 Amazon 资源的访问权限。IAM 管理员控制谁可以进行身份验证(登录)和授权(有权限)使用 Amazon DMS 资源。IAM Amazon Web Services 服务 是您可以免费使用的。
主题
受众
您的使用方式 Amazon Identity and Access Management (IAM) 因您的角色而异:
-
服务用户:如果您无法访问功能,请从管理员处请求权限(请参阅问题排查 Amazon Database Migration Service 身份和访问权限)
-
服务管理员:确定用户访问权限并提交权限请求(请参阅操作方法 Amazon Database Migration Service 与 IAM 配合使用)
-
IAM 管理员:编写用于管理访问权限的策略(请参阅Amazon Database Migration Service 基于身份的策略示例)
使用身份进行身份验证
身份验证是您 Amazon 使用身份凭证登录的方式。您必须以 Amazon Web Services 账户根用户、IAM 用户身份或通过代入 IAM 角色进行身份验证。
对于编程访问, Amazon 提供 SDK 和 CLI 以加密方式签署请求。有关更多信息,请参阅《IAM 用户指南》中的适用于 API 请求的Amazon 签名版本 4。
Amazon Web Services 账户 根用户
创建时 Amazon Web Services 账户,首先要使用一个名为 Amazon Web Services 账户 root 用户的登录身份,该身份可以完全访问所有资源 Amazon Web Services 服务 和资源。我们强烈建议不要使用根用户进行日常任务。有关要求根用户凭证的任务,请参阅《IAM 用户指南》中的需要根用户凭证的任务。
IAM 用户和群组
IAM 用户是对某个人员或应用程序具有特定权限的一个身份。建议使用临时凭证,而非具有长期凭证的 IAM 用户。有关更多信息,请参阅 IAM 用户指南中的要求人类用户 Amazon 使用联合身份提供商以使用临时证书进行访问。
IAM 组指定一组 IAM 用户,便于更轻松地对大量用户进行权限管理。有关更多信息,请参阅《IAM 用户指南》中的 IAM 用户使用案例。
IAM 角色
IAM 角色是具有特定权限的身份,可提供临时凭证。您可以通过从用户切换到 IAM 角色(控制台)或调用 Amazon CLI 或 Amazon API 操作来代入角色。有关更多信息,请参阅《IAM 用户指南》中的担任角色的方法。
IAM 角色对于联合用户访问、临时 IAM 用户权限、跨账户访问、跨服务访问以及在 Amazon EC2 上运行的应用程序非常有用。有关更多信息,请参阅《IAM 用户指南》中的 IAM 中的跨账户资源访问。
使用策略管理访问
您可以 Amazon 通过创建策略并将其附加到 Amazon 身份或资源来控制中的访问权限。策略定义了与身份或资源关联时的权限。 Amazon 委托人提出请求时评估这些政策。大多数策略以 JSON 文档的 Amazon 形式存储在。有关 JSON 策略文档的更多信息,请参阅《IAM 用户指南》中的 JSON 策略概述。
管理员使用策略,通过定义哪个主体可以在什么条件下对哪些资源执行哪些操作来指定谁有权访问什么。
默认情况下,用户和角色没有权限。IAM 管理员创建 IAM 策略并将其添加到角色中,然后用户可以担任这些角色。IAM 策略定义权限,与执行操作所用的方法无关。
Identity-based 政策
Identity-based 策略是您附加到身份(用户、群组或角色)的 JSON 权限策略文档。这些策略控制身份可以执行什么操作、对哪些资源执行以及在什么条件下执行。要了解如何创建基于身份的策略,请参阅《IAM 用户指南》中的使用客户管理型策略定义自定义 IAM 权限。
Identity-based 策略可以是内联策略(直接嵌入到单个身份中)或托管策略(附加到多个身份的独立策略)。要了解如何在托管策略和内联策略之间进行选择,请参阅《IAM 用户指南》中的在托管策略与内联策略之间进行选择。
Resource-based 政策
Resource-based 策略是您附加到资源的 JSON 策略文档。示例包括 IAM 角色信任策略和 Amazon S3 存储桶策略。在支持基于资源的策略的服务中,服务管理员可以使用它们来控制对特定资源的访问。您必须在基于资源的策略中指定主体。
Resource-based 策略是位于该服务中的内联策略。您不能在基于资源的策略中使用 IAM 的 Amazon 托管策略。
访问控制列表(ACL)
访问控制列表(ACL)控制哪些主体(账户成员、用户或角色)有权访问资源。ACL 与基于资源的策略类似,但它们不使用 JSON 策略文档格式。
亚马逊 S3 和亚马逊 VPC 是支持 ACL 的服务示例。 Amazon WAF要了解有关 ACL 的更多信息,请参阅《Amazon Simple Storage Service 开发人员指南》中的访问控制列表(ACL)概览。
其他策略类型
Amazon 支持其他策略类型,这些策略类型可以设置更常见的策略类型授予的最大权限:
-
权限边界 – 设置基于身份的策略可以授予 IAM 实体的最大权限。有关更多信息,请参阅《 IAM 用户指南》中的 IAM 实体的权限边界。
-
服务控制策略(SCP)– 指定 Amazon Organizations中组织或组织单元的最大权限。有关更多信息,请参阅《Amazon Organizations 用户指南》中的服务控制策略。
-
资源控制策略(RCP)– 设置对账户中资源的最大可用权限。有关更多信息,请参阅《Amazon Organizations 用户指南》中的资源控制策略(RCP)。
-
会话策略 – 在为角色或联合用户创建临时会话时,作为参数传递的高级策略。有关更多信息,请参阅《IAM 用户指南》中的会话策略。
多个策略类型
当多个类型的策略应用于一个请求时,生成的权限更加复杂和难以理解。要了解如何在涉及多种策略类型时 Amazon 确定是否允许请求,请参阅 IAM 用户指南中的策略评估逻辑。
使用所需的 IAM 权限 Amazon DMS
您使用特定 IAM 权限和 IAM 角色来使用 Amazon DMS。如果您以 IAM 用户身份登录并想使用 Amazon DMS,则您的账户管理员必须将本节中讨论的策略附加到您用于运行的 IAM 用户、群组或角色 Amazon DMS。有关 IAM 权限的更多信息,请参阅 IAM 用户指南。
以下政策赋予您访问其他亚马逊服务(例如 IAM Amazon DMS Amazon KMS、Amazon EC2 和亚马逊)所需的某些操作的权限 CloudWatch。 CloudWatch实时监控您的 Amazon DMS 迁移,并收集和跟踪表明迁移进度的指标。您可以使用 CloudWatch 日志来调试任务中的问题。
注意
您可以使用标记进一步限制对 Amazon DMS 资源的访问权限。有关使用标记限制 Amazon DMS 资源访问权限的更多信息,请参阅Fine-grained 使用资源名称和标签进行访问控制。
细分以下这些权限可以助力您更好地了解需要每个权限的原因。
以下部分是允许用户调用 Amazon DMS API 操作所必需的。
{ "Effect": "Allow", "Action": "dms:*", "Resource": "arn:aws:dms:region:account:resourcetype/id" }
以下部分是允许用户列出其可用 Amazon KMS 密钥和别名以便在控制台中显示所必需的。如果您知道 KMS 密钥的亚马逊资源名称 (ARN),并且您只使用 Amazon Command Line Interface (Amazon CLI),则不需要输入此条目。
{ "Effect": "Allow", "Action": [ "kms:ListAliases", "kms:DescribeKey" ], "Resource": "arn:aws:service:region:account:resourcetype/id" }
对于需要在端点中传入 IAM 角色 ARN 的某些端点类型,需要使用以下部分。此外,如果未提前创建所需 Amazon DMS 角色,则 Amazon DMS 控制台可以创建该角色。如果提前配置了所有角色,则只需要 iam:GetRole 和 iam:PassRole。有关角色的更多信息,请参阅 创建与之配合使用的 IAM 角色 Amazon DMS。
{ "Effect": "Allow", "Action": [ "iam:GetRole", "iam:PassRole", "iam:CreateRole", "iam:AttachRolePolicy" ], "Resource": "arn:aws:service:region:account:resourcetype/id" }
以下部分是必填的,因为 Amazon DMS 需要创建 Amazon EC2 实例并为创建的复制实例配置网络。这些资源位于客户的账户中,因此,需要能够代表客户执行这些操作。
{ "Effect": "Allow", "Action": [ "ec2:DescribeVpcs", "ec2:DescribeInternetGateways", "ec2:DescribeAvailabilityZones", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:ModifyNetworkInterfaceAttribute", "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface" ], "Resource": "arn:aws:service:region:account:resourcetype/id" }
需要使用以下部分,以允许用户查看复制实例指标。
{ "Effect": "Allow", "Action": [ "cloudwatch:Get*", "cloudwatch:List*" ], "Resource": "arn:aws:service:region:account:resourcetype/id" }
需要使用该部分,以允许用户查看复制日志。
{ "Effect": "Allow", "Action": [ "logs:DescribeLogGroups", "logs:DescribeLogStreams", "logs:FilterLogEvents", "logs:GetLogEvents" ], "Resource": "arn:aws:service:region:account:resourcetype/id" }
如果您使用 Amazon DMS 控制台、 Amazon Command Line Interface (Amazon CLI) 或 Amazon DMS API 进行迁移,则需要向账户添加多个角色。有关添加这些角色的更多信息,请参阅创建与之配合使用的 IAM 角色 Amazon DMS。
创建与之配合使用的 IAM 角色 Amazon DMS
如果您使用 Amazon DMS 控制台、 Amazon CLI 或 Amazon DMS API 进行数据库迁移,则必须在 Amazon 账户中添加三个 IAM 角色才能使用的功能 Amazon DMS。其中两个角色为 dms-vpc-role 和 dms-cloudwatch-logs-role。如果您使用 Amazon Redshift 作为目标数据库,则还必须将 IAM 角色dms-access-for-endpoint添加到您的 Amazon 账户。
重要
必须使用这些确切的角色名称,如下所示:dms-vpc-roledms-cloudwatch-logs-role、和dms-access-for-endpoint。 Amazon DMS
按名称查找这些角色。如果您使用自定义角色名称,则找不到角色并且服务 Amazon DMS 无法正常运行。
对托管策略的更新是自动的。如果您为 IAM 角色使用自定义策略,请确保定期在此文档中检查对托管策略的更新。您可以使用 get-policy 和 get-policy-version 命令的组合查看托管策略的详细信息。
例如,以下 get-policy 命令检索有关指定 IAM 角色的信息。
aws iam get-policy --policy-arn arn:aws:iam::aws:policy/service-role/AmazonDMSVPCManagementRole
命令返回的信息如下所示。
{ "Policy": { "PolicyName": "AmazonDMSVPCManagementRole", "PolicyId": "ANPAJHKIGMBQI4AEFFSYO", "Arn": "arn:aws:iam::aws:policy/service-role/AmazonDMSVPCManagementRole", "Path": "/service-role/", "DefaultVersionId": "v4", "AttachmentCount": 1, "PermissionsBoundaryUsageCount": 0, "IsAttachable": true, "Description": "Provides access to manage VPC settings for AWS managed customer configurations", "CreateDate": "2015-11-18T16:33:19+00:00", "UpdateDate": "2024-07-25T15:19:01+00:00", "Tags": [] } }
以下 get-policy-version 命令检索 IAM policy 信息。
aws iam get-policy-version --policy-arn arn:aws:iam::aws:policy/service-role/AmazonDMSVPCManagementRole --version-id v4
命令返回的信息如下所示。
您可以使用相同命令获取有关 AmazonDMSCloudWatchLogsRole 和 AmazonDMSRedshiftS3Role 托管策略的信息。
以下过程创建 dms-vpc-role、dms-cloudwatch-logs-role 和 dms-access-for-endpoint IAM 角色。
创建 dms-vpc-role IAM 角色以用于 Amazon CLI 或者 Amazon DMS API
-
使用以下 IAM policy 创建 JSON 文件。将 JSON 文件命名为
dmsAssumeRolePolicyDocument.json。Amazon CLI 使用以下命令创建角色。
aws iam create-role --role-name dms-vpc-role --assume-role-policy-document file://dmsAssumeRolePolicyDocument.json -
使用以下命令将
AmazonDMSVPCManagementRole策略附加到dms-vpc-role。aws iam attach-role-policy --role-name dms-vpc-role --policy-arn arn:aws:iam::aws:policy/service-role/AmazonDMSVPCManagementRole
创建 dms-cloudwatch-logs-role IAM 角色以用于 Amazon CLI 或者 Amazon DMS API
-
使用以下 IAM policy 创建 JSON 文件。将 JSON 文件命名为
dmsAssumeRolePolicyDocument2.json。Amazon CLI 使用以下命令创建角色。
aws iam create-role --role-name dms-cloudwatch-logs-role --assume-role-policy-document file://dmsAssumeRolePolicyDocument2.json -
使用以下命令将
AmazonDMSCloudWatchLogsRole策略附加到dms-cloudwatch-logs-role。aws iam attach-role-policy --role-name dms-cloudwatch-logs-role --policy-arn arn:aws:iam::aws:policy/service-role/AmazonDMSCloudWatchLogsRole
如果使用 Amazon Redshift 作为目标数据库,则必须创建 IAM 角色 dms-access-for-endpoint 以提供对 Amazon S3 的访问。
创建 dms-access-for-endpoint IAM 角色以使用 Amazon Redshift 作为目标数据库
-
使用以下 IAM policy 创建 JSON 文件。将 JSON 文件命名为
dmsAssumeRolePolicyDocument3.json。 -
Amazon CLI 使用以下命令创建角色。
aws iam create-role --role-name dms-access-for-endpoint --assume-role-policy-document file://dmsAssumeRolePolicyDocument3.json -
使用以下命令将
AmazonDMSRedshiftS3Role策略附加到dms-access-for-endpoint角色。aws iam attach-role-policy --role-name dms-access-for-endpoint \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonDMSRedshiftS3Role
现在,您应该准备好了 IAM 政策才能使用 Amazon CLI 或 Amazon DMS API。