的身分和存取管理AWS Database Migration Service - AWS資料庫遷移服務

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

的身分和存取管理AWS Database Migration Service

AWS Identity and Access Management(IAM) 是一種 AWS 服務,可協助管理員安全地控制對 AWS資源的存取。IAM 管理員可控制誰可以進行驗證 (登入) 和授權 (具有許可) 來使用 AWS DMS資源。IAM 是您可以免費使用AWS 服務的 。

目標對象

使用方式 AWS Identity and Access Management(IAM) 會根據您的角色而有所不同:

使用身分驗證

身分驗證是您AWS使用身分憑證登入 的方式。您必須以 AWS 帳戶根使用者、IAM 使用者或擔任 IAM 角色身分進行身分驗證。

您可以使用身分來源的登入資料,例如 AWS IAM Identity Center(IAM Identity Center)、單一登入身分驗證或 Google/Facebook 登入資料,以聯合身分的形式登入。如需有關登入的詳細資訊,請參閱《AWS 登入 使用者指南》中的如何登入您的 AWS 帳戶

對於程式設計存取, AWS提供 SDK 和 CLI 以密碼編譯方式簽署請求。如需詳細資訊,請參閱《IAM 使用者指南》中的 API 請求的 AWS 第 4 版簽署程序

AWS 帳戶根使用者

當您建立 時AWS 帳戶,您會從一個名為 AWS 帳戶theroot 使用者的登入身分開始,該身分可完整存取所有 AWS 服務和 資源。強烈建議不要使用根使用者來執行日常任務。有關需要根使用者憑證的任務,請參閱《IAM 使用者指南》中的需要根使用者憑證的任務

IAM 使用者和群組

IAM 使用者https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html是一種身分具備單人或應用程式的特定許可權。建議以臨時憑證取代具備長期憑證的 IAM 使用者。如需詳細資訊,請參閱《IAM 使用者指南》中的要求人類使用者使用聯合身分提供者,以AWS使用臨時憑證存取

IAM 群組會指定 IAM 使用者集合,使管理大量使用者的許可權更加輕鬆。如需詳細資訊,請參閱《IAM 使用者指南》中的 IAM 使用者的使用案例

IAM 角色

IAM 角色https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html的身分具有特定許可權,其可以提供臨時憑證。您可以透過從使用者切換到 IAM 角色 (主控台) 或呼叫 AWS CLI或 AWSAPI 操作來擔任角色。如需詳細資訊,請參閱《IAM 使用者指南》中的擔任角色的方法

IAM 角色適用於聯合身分使用者存取、臨時 IAM 使用者許可、跨帳戶存取權與跨服務存取,以及在 Amazon EC2 執行的應用程式。如需詳細資訊,請參閱《IAM 使用者指南》中的 IAM 中的快帳戶資源存取

使用政策管理存取權

您可以透過建立政策並將其連接到身分或資源AWS來控制 AWS中的存取。政策定義與身分或資源相關聯的許可。當委託人提出請求時AWS, 會評估這些政策。大多數政策會以 JSON 文件AWS的形式存放在 中。如需進一步了解 JSON 政策文件,請參閱《IAM 使用者指南》中的 JSON 政策概觀

管理員會使用政策,透過定義哪些主體可在哪些條件下對哪些資源執行動作,以指定可存取的範圍。

預設情況下,使用者和角色沒有許可。IAM 管理員會建立 IAM 政策並將其新增至角色,供使用者後續擔任。IAM 政策定義動作的許可,無論採用何種方式執行。

身分型政策

身分型政策是附加至身分 (使用者、使用者群組或角色) 的 JSON 許可政策文件。這類政策控制身分可對哪些資源執行哪些動作,以及適用的條件。如需了解如何建立身分型政策,請參閱《IAM 使用者指南》中的透過客戶管理政策定義自訂 IAM 許可

身分型政策可分為內嵌政策 (直接內嵌於單一身分) 與受管政策 (可附加至多個身分的獨立政策)。如需了解如何在受管政策及內嵌政策之間做選擇,請參閱《IAM 使用者指南》中的在受管政策與內嵌政策之間選擇

資源型政策

資源型政策是附加到資源的 JSON 政策文件。範例包括 IAM 角色信任政策與 Amazon S3 儲存貯體政策。在支援資源型政策的服務中,服務管理員可以使用它們來控制對特定資源的存取權限。您必須在資源型政策中指定主體

資源型政策是位於該服務中的內嵌政策。您無法在資源型政策中使用來自 IAM 的AWS受管政策。

存取控制清單 (ACL)

存取控制清單 (ACL) 可控制哪些主體 (帳戶成員、使用者或角色) 擁有存取某資源的許可。ACL 類似於資源型政策,但它們不使用 JSON 政策文件格式。

Amazon S3 AWS WAF和 Amazon VPC 是支援 ACLs的服務範例。如需進一步了解 ACL,請參閱《Amazon Simple Storage Service 開發人員指南》中的存取控制清單 (ACL) 概觀

其他政策類型

AWS支援其他政策類型,可設定更多常見政策類型授予的最大許可:

  • 許可界限 — 設定身分型政策可授與 IAM 實體的最大許可。如需詳細資訊,請參閱《 IAM 使用者指南》中的 IAM 實體許可界限

  • 服務控制政策 (SCP) — 為 AWS Organizations 中的組織或組織單位指定最大許可。如需詳細資訊,請參閱《AWS Organizations 使用者指南》中的服務控制政策

  • 資源控制政策 (RCP) — 設定您帳戶中資源可用許可的上限。如需詳細資訊,請參閱《AWS Organizations使用者指南》中的資源控制政策 (RCP)

  • 工作階段政策 — 在以程式設計方式為角色或聯合身分使用者建立臨時工作階段時,以參數形式傳遞的進階政策。如需詳細資訊,請參《IAM 使用者指南》中的工作階段政策

多種政策類型

當多種類型的政策適用於請求時,產生的許可會更複雜而無法理解。若要了解如何AWS決定是否在涉及多個政策類型時允許請求,請參閱《IAM 使用者指南》中的政策評估邏輯

使用 AWS DMS 所需的 IAM 許可

您使用特定 IAM 許可和 IAM 角色,才能使用 AWS DMS。如果您以 IAM 使用者身分登入並想要使用 AWS DMS,您的 帳戶管理員必須將本節中討論的政策連接到您用來執行的 IAM 使用者、群組或角色AWS DMS。如需 IAM 許可的詳細資訊,請參閱《IAM 使用者指南》。

下列政策可讓您存取其他 Amazon 服務所需的特定動作AWS DMS,以及其許可AWS KMS,例如 IAM、Amazon EC2 和 Amazon CloudWatch。CloudWatch 會即時監控AWS DMS遷移,並收集和追蹤指出遷移進度的指標。您可以使用 CloudWatch Logs 對任務問題進行除錯。

注意

您可以使用標記進一步限制對 AWS DMS資源的存取。如需使用標記限制AWS DMS資源存取的詳細資訊,請參閱 使用資源名稱和標籤更精細的存取控制

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "dms:*", "Resource": "arn:aws:dms:*:123456789012:*" }, { "Effect": "Allow", "Action": [ "kms:ListAliases", "kms:DescribeKey" ], "Resource": "arn:aws:kms:*:123456789012:key/*" }, { "Effect": "Allow", "Action": [ "iam:GetRole", "iam:PassRole", "iam:CreateRole", "iam:AttachRolePolicy" ], "Resource": "arn:aws:iam::123456789012:role/*", "Condition": { "StringEquals": { "iam:PassedToService": "dms.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "ec2:DescribeVpcs", "ec2:DescribeInternetGateways", "ec2:DescribeAvailabilityZones", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:ModifyNetworkInterfaceAttribute", "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "cloudwatch:Get*", "cloudwatch:List*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "logs:DescribeLogGroups", "logs:DescribeLogStreams", "logs:FilterLogEvents", "logs:GetLogEvents" ], "Resource": "arn:aws:logs:*:123456789012:*" } ] }

下列許可的明細可協助您更深入了解需要每項許可的原因。

需要以下區段,以允許使用者呼叫 AWS DMSAPI 操作。

{ "Effect": "Allow", "Action": "dms:*", "Resource": "arn:aws:dms:region:account:resourcetype/id" }

需要以下區段,以允許使用者列出其可用AWS KMS金鑰和別名,以便在 主控台中顯示。如果您知道 KMS 金鑰的 Amazon Resource Name (ARN) 且僅使用 AWS Command Line Interface(),則不需要此項目AWS CLI。

{ "Effect": "Allow", "Action": [ "kms:ListAliases", "kms:DescribeKey" ], "Resource": "arn:aws:service:region:account:resourcetype/id" }

針對必須使用端點傳入 IAM 角色 ARN 的端點類型,需要下列區段。此外,如果未事先建立必要的AWS DMS角色,AWS DMS主控台可以建立角色。若已事先設定所有角色,iam:GetRoleiam:PassRole 中會具備所有必要項目。如需角色的詳細資訊,請參閱建立要與 搭配使用的 IAM 角色AWS DMS

{ "Effect": "Allow", "Action": [ "iam:GetRole", "iam:PassRole", "iam:CreateRole", "iam:AttachRolePolicy" ], "Resource": "arn:aws:service:region:account:resourcetype/id" }

下列區段是必要的,因為 AWS 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" }

如果您使用 AWS DMS主控台、 AWS Command Line Interface(AWS CLI) 或 AWS DMSAPI 進行遷移,則需要將多個角色新增至您的帳戶。如需有關新增這些角色的詳細資訊,請參閱 建立要與 搭配使用的 IAM 角色AWS DMS

建立要與 搭配使用的 IAM 角色AWS DMS

如果您使用 AWS DMS主控台、 AWS CLI或 AWS DMSAPI 進行資料庫遷移,您必須先將三個 IAM 角色新增至AWS您的帳戶,才能使用 的功能AWS DMS。其中兩個角色是 dms-vpc-roledms-cloudwatch-logs-role。如果您使用 Amazon Redshift 做為目標資料庫,您還必須將 IAM 角色新增至dms-access-for-endpointAWS您的帳戶。

受管政策的更新是自動的。如果您搭配使用自訂政策和 IAM 角色,請務必定期檢查本文件中有關受管政策的更新。您可以使用 get-policyget-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 政策資訊。

aws iam get-policy-version --policy-arn arn:aws:iam::aws:policy/service-role/AmazonDMSVPCManagementRole --version-id v4

從命令傳回的資訊如下所示。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "ExampleStatementID", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface", "ec2:DescribeAvailabilityZones", "ec2:DescribeDhcpOptions", "ec2:DescribeInternetGateways", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:ModifyNetworkInterfaceAttribute" ], "Resource": "*" } ] }

您可以使用相同的命令來取得關於 AmazonDMSCloudWatchLogsRoleAmazonDMSRedshiftS3Role 受管理政策的資訊。

下列程序會建立 dms-vpc-roledms-cloudwatch-logs-roledms-access-for-endpoint IAM 角色。

建立 dms-vpc-role IAM 角色以搭配 AWS CLI或 AWS DMSAPI 使用
  1. 使用下列 IAM 政策建立 JSON 檔案。將 JSON 檔案命名為 dmsAssumeRolePolicyDocument.json

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

    AWS CLI使用下列命令,使用 建立角色。

    aws iam create-role --role-name dms-vpc-role --assume-role-policy-document file://dmsAssumeRolePolicyDocument.json
  2. 使用下列命令將 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 角色以搭配 AWS CLI或 AWS DMSAPI 使用
  1. 使用下列 IAM 政策建立 JSON 檔案。將 JSON 檔案命名為 dmsAssumeRolePolicyDocument2.json

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

    AWS CLI使用下列命令,使用 建立角色。

    aws iam create-role --role-name dms-cloudwatch-logs-role --assume-role-policy-document file://dmsAssumeRolePolicyDocument2.json
  2. 使用下列命令將 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 使用
  1. 使用下列 IAM 政策建立 JSON 檔案。將 JSON 檔案命名為 dmsAssumeRolePolicyDocument3.json

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "1", "Effect": "Allow", "Principal": { "Service": "dms.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Sid": "2", "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. AWS CLI使用下列命令,使用 建立角色。

    aws iam create-role --role-name dms-access-for-endpoint --assume-role-policy-document file://dmsAssumeRolePolicyDocument3.json
  3. 使用下列命令將 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 政策來使用 AWS CLI或AWS DMS API。