本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
中的跨服務混淆代理預防 AWS OpsWorks CM
混淆代理人問題屬於安全性議題,其中沒有執行動作許可的實體可以強制具有更多許可的實體執行該動作。在 中 AWS,跨服務模擬可能會導致混淆代理人問題。在某個服務 (呼叫服務) 呼叫另一個服務 (被呼叫服務) 時,可能會發生跨服務模擬。可以操縱呼叫服務來使用其許可,以其不應有存取許可的方式對其他客戶的資源採取動作。為了預防這種情況, AWS 提供的工具可協助您保護所有服務的資料,而這些服務主體已獲得您帳戶中資源的存取權。
我們建議在資源政策中使用 aws:SourceArn
和 aws:SourceAccount
全域條件內容索引鍵,以限制將另一個 服務 AWS OpsWorks CM 提供給資源的許可。如果 aws:SourceArn
值不包含帳戶 ID (例如 Amazon S3 儲存貯體 ARN),您必須使用這兩個全域條件內容金鑰來限制許可。如果同時使用這兩個全域條件內容金鑰,且 aws:SourceArn
值包含帳戶 ID,則在相同政策陳述式中使用 aws:SourceAccount
值和 aws:SourceArn
值中的帳戶時,必須使用相同的帳戶 ID。如果您想要僅允許一個資源與跨服務存取相關聯,則請使用 aws:SourceArn
。如果您想要允許該帳戶中的任何資源與跨服務使用相關聯,請使用 aws:SourceAccount
。
的值aws:SourceArn
必須是 OpsWorks CM Chef 或 Puppet 伺服器的 ARN。
防範混淆代理人問題最有效的方式,是使用aws:SourceArn
全域條件內容索引鍵搭配伺服器的完整 ARN AWS OpsWorks CM 。如果您不知道完整的 ARN,或如果您指定多個伺服器 ARNs,請將aws:SourceArn
全域內容條件索引鍵與萬用字元 (*
) 搭配使用,用於 ARN 的未知部分。例如:arn:aws:
。servicename
:*:123456789012
:*
下一節說明如何在 中使用 aws:SourceArn
和 aws:SourceAccount
全域條件內容索引鍵 AWS OpsWorks CM ,以防止混淆代理人問題。
防止 中的混淆代理人入侵 AWS OpsWorks CM
本節說明如何協助防止混淆代理人入侵 AWS OpsWorks CM,並包含您可以連接到您用來存取之 IAM 角色的許可政策範例 AWS OpsWorks CM。作為安全最佳實務,我們建議您將 aws:SourceArn
和 aws:SourceAccount
條件金鑰新增至 IAM 角色與其他 服務的信任關係。信任關係 AWS OpsWorks CM 允許 擔任角色,在建立或管理您的 AWS OpsWorks CM 伺服器所需的其他服務中執行動作。
編輯信任關係以新增aws:SourceArn
和aws:SourceAccount
條件索引鍵
開啟位於 https://console.aws.amazon.com/iam/
的 IAM 主控台。 在左側導覽窗格中,選擇 Roles (角色)。
在搜尋方塊中,搜尋您用於存取的角色 AWS OpsWorks CM。 AWS 受管角色為
aws-opsworks-cm-service-role
。在角色的摘要頁面上,選擇信任關係索引標籤。
在 Trust relationships (信任關係) 標籤上,選擇 Edit trust relationship (編輯信任關係)。
在政策文件中,將至少一個
aws:SourceArn
或aws:SourceAccount
條件索引鍵新增至政策。使用aws:SourceArn
來限制跨服務 (例如 AWS Certificate Manager 和 Amazon EC2) AWS OpsWorks CM 與特定 AWS OpsWorks CM 伺服器之間的信任關係,這更嚴格。新增aws:SourceAccount
以限制跨服務與特定帳戶中 AWS OpsWorks CM 伺服器之間的信任關係,這較不嚴格。以下是範例。請注意,如果您使用兩個條件索引鍵,帳戶 IDs相同。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "opsworks-cm.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnEquals": { "aws:SourceArn": "arn:aws:opsworks-cm:us-east-2:123456789012:server/my-opsworks-server/EXAMPLEabcd-1234-efghEXAMPLE-ID" } } } ] }
-
新增條件金鑰完成後,請選擇更新信任政策。
以下是使用 aws:SourceArn
和 限制對 AWS OpsWorks CM 伺服器存取的其他角色範例aws:SourceAccount
。
範例:存取特定區域的 AWS OpsWorks CM 伺服器
下列角色信任關係陳述式會存取美國東部 (俄亥俄) 區域 () 中的任何 AWS OpsWorks CM 伺服器us-east-2
。請注意,區域是在 ARN 值 中指定aws:SourceArn
,但伺服器 ID 值是萬用字元 (*)。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "opsworks-cm.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnEquals": { "aws:SourceArn": "arn:aws:opsworks-cm:us-east-2:123456789012:server/*" } } } ] }
範例:將多個伺服器 ARN 新增至 aws:SourceArn
下列範例限制存取帳戶 ID 123456789012 中兩個 AWS OpsWorks CM 伺服器的陣列。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "opsworks-cm.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnEquals": { "aws:SourceArn": [ "arn:aws:opsworks-cm:us-east-2:123456789012:server/my-chef-server/
unique_ID
", "arn:aws:opsworks-cm:us-east-2:123456789012:server/my-puppet-server/unique_ID
" ] } } } ] }