預防跨服務混淆代理人 - AWS Database Migration Service

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

預防跨服務混淆代理人

混淆代理人問題屬於安全性問題,其中沒有執行動作許可的實體可以強制具有更多許可的實體執行該動作。在中 AWS,跨服務模擬可能會導致混淆的副問題。在某個服務 (呼叫服務) 呼叫另一個服務 (被呼叫服務) 時,可能會發生跨服務模擬。可以操縱呼叫服務來使用其許可,以其不應有存取許可的方式對其他客戶的資源採取動作。為了預防這種情況, AWS 提供的工具可協助您保護所有服務的資料,而這些服務主體已獲得您帳戶中資源的存取權。

建議您在資源策略中使用aws:SourceArnaws:SourceAccount全域條件前後關聯索引鍵,以限制將其他服務 AWS Database Migration Service 提供給資源的權限。如果 aws:SourceArn 值不包含帳戶 ID (例如 AWS DMS 複寫執行個體名稱 (ARN)),則必須使用這兩個全域條件內容索引鍵來限制許可。如果同時使用這兩個全域條件內容索引鍵,且 aws:SourceArn 值包含帳戶 ID,則在相同政策陳述式中使用 aws:SourceAccount 值和 aws:SourceArn 值中的帳戶時,必須使用相同的帳戶 ID。如果您想要僅允許一個資源與跨服務存取相關聯,則請使用 aws:SourceArn。如果您想要允許該帳戶中的任何資源與跨服務使用相關聯,請使用 aws:SourceAccount

AWS DMS 支持從 3.4.7 版本及更高版本開始混淆的副選項。如需詳細資訊,請參閱 AWS Database Migration Service 3.4.7 版本說明。如果複寫執行個體使用 AWS DMS 3.4.6 版或更低版本,請確定您已升級至最新版本,然後再設定混淆代理人選項。

防範混淆代理人問題的最有效方法是使用 aws:SourceArn 全域條件內容索引鍵,以及資源的完整 ARN。如果不知道資源的完整 ARN,或者如果您指定了多個資源,請使用 aws:SourceArn 全域內容條件索引鍵搭配萬用字元 (*) 來表示 ARN 的未知部分。例如 arn:aws:dms:*:123456789012:rep:*

與 AWS DMS API 搭配使用的 IAM 角色,用於跨服務混淆副手預防

若要使用 AWS CLI 或 AWS DMS API 進行資料庫移轉,您必須先將dms-vpc-roledms-cloudwatch-logs-role IAM 角色新增至您的 AWS 帳戶,才能使用的功能 AWS DMS。如需詳細資訊,請參閱 建立與 AWS CLI 和 AWS DMS API 搭配使用的身分與存取權管理角色

下列範例顯示將 dms-vpc-role 角色與 my-replication-instance 複寫執行個體搭配使用的政策。請使用這些政策,以預防混淆代理人問題。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "dms.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "AWS:SourceAccount": "your_account_id" }, "ArnEqual": { "AWS:SourceArn": "arn:aws:dms:your_region:your_account_id:rep:my-replication-instance" } } } ] }

將預檢評估儲存在 Amazon S3 中的 IAM 政策,以進行跨服務混淆代理人預防

若要將預先評估結果儲存在 S3 儲存貯體中,則可以建立 IAM 政策,以便 AWS DMS 在 Amazon S3 中管理物件。如需詳細資訊,請參閱 建立 IAM 資源

下列範例顯示具有在 IAM 角色上設定的混淆副條件的信任政策,可讓您存 AWS DMS 取指定使用者帳戶下的所有工作和評估執行。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "dms.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "AWS:SourceAccount": "your_account_id" }, "ArnLike": { "AWS:SourceArn": [ "arn:aws:dms:your_region:your_account_id:assessment-run:*", "arn:aws:dms:region:your_account_id:task:*" ] } } } ] }

使用 Amazon DynamoDB 做為目標端點,以 AWS DMS 提供跨服務混淆副手預防

若要使用 Amazon DynamoDB 做為資料庫遷移的目標端點,您必須建立 IAM 角色,以允 AWS DMS 許假設並授與 DynamoDB 表的存取權。然後,在 AWS DMS中建立目標 DynamoDB 端點時,請使用此角色。如需詳細資訊,請參閱 使用 Amazon DynamoDB 作為目標

下列範例顯示在 IAM 角色上設定的具有混淆副條件的信任政策,該角色允許所有 AWS DMS 端點存取 DynamoDB 表。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "dms.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "AWS:SourceAccount": "your_account_id" }, "ArnLike": { "AWS:SourceArn": "arn:aws:dms:your_region:your_account_id:endpoint:*" } } } ] }