本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
混淆代理人問題屬於安全性議題,其中沒有執行動作許可的實體可以強制具有更多許可的實體執行該動作。在 中 AWS,跨服務模擬可能會導致混淆代理人問題。在某個服務 (呼叫服務) 呼叫另一個服務 (被呼叫服務) 時,可能會發生跨服務模擬。可以操縱呼叫服務來使用其許可,以其不應有存取許可的方式對其他客戶的資源採取動作。為了防止這種情況, AWS 提供工具,協助您保護所有 服務的資料,讓 服務主體能夠存取您帳戶中的資源。
我們建議在資源政策中使用 aws:SourceArn和 aws:SourceAccount全域條件內容索引鍵,以限制將另一個服務 AWS CloudFormation 提供給特定資源的許可,例如 CloudFormation 延伸模組。如果您想要僅允許一個資源與跨服務存取相關聯,則請使用 aws:SourceArn
。如果您想要允許該帳戶中的任何資源與跨服務使用相關聯,請使用 aws:SourceAccount
。
確定 的值aws:SourceArn
是 CloudFormation 存放之資源的 ARN。
防範混淆代理人問題最有效的方法,是使用 aws:SourceArn
全域條件內容金鑰,以及資源的完整 ARN。如果不知道資源的完整 ARN,或者如果您指定了多個資源,請使用 aws:SourceArn
全域條件內容金鑰,同時使用萬用字元 (*
) 表示 ARN 的未知部分。例如:arn:aws:
。cloudformation
:*:123456789012
:*
如果aws:SourceArn
值不包含帳戶 ID,您必須使用兩個全域條件內容索引鍵來限制許可。
下列範例示範如何使用 CloudFormation 中的 aws:SourceArn
和 aws:SourceAccount
全域條件內容金鑰,以防止混淆代理人問題。
使用 aws:SourceArn
和 aws:SourceAccount
條件索引鍵的信任政策範例
對於登錄服務,CloudFormation 會呼叫 AWS Security Token Service (AWS STS) 以擔任您帳戶中的服務角色。此角色在 RegisterType 操作中為 ExecutionRoleArn
設定,在LoggingConfig 操作中為 LogRoleArn
設定。如需詳細資訊,請參閱使用 IAM 許可和公有延伸存取的信任政策來設定執行角色。
此範例角色信任政策使用條件陳述式,將服務角色AssumeRole
的功能限制為僅對指定帳戶中指定的 CloudFormation 延伸模組執行動作。獨立評估 aws:SourceArn
和 aws:SourceAccount
條件。使用服務角色的任何請求都必須滿足這兩個條件。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": [
"resources.cloudformation.amazonaws.com"
]
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"aws:SourceAccount": "123456789012
"
},
"StringLike": {
"aws:SourceArn": "arn:aws:cloudformation:us-east-1:123456789012:type/resource/Organization-Service-Resource/*
"
}
}
}
]
}
其他資訊
如需針對 StackSets 使用的服務角色使用 aws:SourceArn
和 aws:SourceAccount
全域條件內容索引鍵的政策範例,請參閱 設定全域索引鍵以減輕混淆代理人問題。
如需詳細資訊,請參閱《IAM 使用者指南》中的更新角色信任政策。