預防跨服務混淆代理人 - Amazon EC2 Auto Scaling

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

預防跨服務混淆代理人

混淆代理人問題屬於安全性議題,其中沒有執行動作許可的實體可以強制具有更多許可的實體執行該動作。

在中 AWS,跨服務模擬可能會導致混淆的副問題。在某個服務 (呼叫服務) 呼叫另一個服務 (被呼叫服務) 時,可能會發生跨服務模擬。可以操縱呼叫服務來使用其許可,以其不應有存取許可的方式對其他客戶的資源採取動作。

為了防止這種情況發生, AWS 提供的工具可協助您透過已授予您帳戶中資源存取權的服務主體來保護所有服務的資料。建議使用 Amazon EC2 Auto Scaling 服務角色的信任政策中的 aws:SourceArnaws:SourceAccount 全域條件內容金鑰。這些金鑰會限制 Amazon EC2 Auto Scaling 為資源提供其他服務的許可。

當 Amazon EC2 Auto Scaling 使用 AWS Security Token Service (AWS STS) 代表您擔任角色時,就會設定SourceArnSourceAccount欄位的值。

若要使用 aws:SourceArnaws:SourceAccount 全域條件金鑰,請將值設定為 Amazon EC2 Auto Scaling 所儲存資源的 Amazon Resource Name (ARN) 或帳戶。盡可能使用 aws:SourceArn,這更為具體。對於 ARN 的未知部分,將值設定為 ARN 或具有萬用字元 (*) 的 ARN 模式。如果您不知道資源的 ARN,請改為使用 aws:SourceAccount

下列範例示範如何使用 Amazon EC2 Auto Scaling 中的 aws:SourceArnaws:SourceAccount 全域條件內容金鑰,來預防混淆代理人問題。

範例:使用 aws:SourceArnaws:SourceAccount 條件金鑰

服務會擔任代您執行動作的角色稱為服務角色。如果您想要建立將通知傳送到 Amazon 以外的任何地方的生命週期勾點 EventBridge,您必須建立服務角色,以允許 Amazon EC2 Auto Scaling 代表您將通知傳送到 Amazon SNS 主題或 Amazon SQS 佇列。如果您想要僅允許一個 Auto Scaling 群組與跨服務存取相關聯,則可以按如下方式指定服務角色的信任政策。

此信任政策範例使用條件陳述式,將服務角色的 AssumeRole 能力限制為僅影響指定帳戶中指定 Auto Scaling 群組的動作。獨立評估 aws:SourceArnaws:SourceAccount 條件。使用服務角色的任何請求都必須滿足這兩個條件。

在使用此政策之前,請將區域、帳戶 ID、UUID 和群組名稱取代為您帳戶的有效值。

{ "Version": "2012-10-17", "Statement": { "Sid": "ConfusedDeputyPreventionExamplePolicy", "Effect": "Allow", "Principal": { "Service": "autoscaling.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:autoscaling:region:account_id:autoScalingGroup:uuid:autoScalingGroupName/my-asg" }, "StringEquals": { "aws:SourceAccount": "account_id" } } } }

在上述範例中:

  • Principal 元素會指定服務 (autoscaling.amazonaws.com) 的服務主體。

  • Action 元素指定 sts:AssumeRole 動作。

  • Condition 元素指定 aws:SourceArnaws:SourceAccount 全域條件金鑰。來源的 ARN 包括帳戶 ID,因此不需要搭配 aws:SourceAccount 使用 aws:SourceArn

其他資訊

如需詳細資訊,請參閱《IAM 使用者指南》中的 AWS 全域條件內容金鑰混淆代理人問題以及修改角色信任政策 (主控台)