跨服務混淆代理人預防AWS OpsWorks CM - AWS OpsWorks

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

跨服務混淆代理人預防AWS OpsWorks CM

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

若要限制 AWS OpsWorks CM 為資源提供另一項服務的許可,我們建議在資源政策中使用 aws:SourceArnaws:SourceAccount 全域條件內容索引鍵。如果 aws:SourceArn 值不包含帳戶 ID (例如 Simple Storage Service (Amazon S3) 儲存貯體 ARN),您必須使用這兩個全域條件內容索引鍵來限制許可。如果同時使用這兩個全域條件內容索引鍵,且 aws:SourceArn 值包含帳戶 ID,則在相同政策陳述式中使用 aws:SourceAccount 值和 aws:SourceArn 值中的帳戶時,必須使用相同的帳戶 ID。如果您想要僅允許一個資源與跨服務存取相關聯,則請使用 aws:SourceArn。如果您想要允許該帳戶中的任何資源與跨服務使用相關聯,則請使用 aws:SourceAccount

aws:SourceArn必須是OpsWorksCM 廚師或 Puppet 伺服器。

防範混淆代理人問題的最有效方法是使用aws:SourceArn全局條件上下文鍵與AWS OpsWorks CM伺服器。如果您不知道完整的 ARN,或者指定了多個服務器 ARN,請使用aws:SourceArn具有通配符的全局上下文條件鍵(*),查看 ARN 的未知部分。例如: arn:aws:servicename:*:123456789012:*

下列節顯示如何使用aws:SourceArnaws:SourceAccount全域條件內容金鑰AWS OpsWorks CM防範混淆代理人問題。

防止混淆副攻擊AWS OpsWorks CM

本節描述如何防範混淆代理人漏洞AWS OpsWorks CM,幷包含您可以附加到用於訪問的 IAM 角色的權限策略示例AWS OpsWorks CM。做為安全性最佳實務,我們建議新增aws:SourceArnaws:SourceAccount條件密鑰添加到您的 IAM 角色與其他服務之間的信任關係。信任關係允許AWS OpsWorks CM以擔任角色,以在其他服務中執行創建或管理AWS OpsWorks CM伺服器。

編輯信任關係以添加aws:SourceArnaws:SourceAccount條件金鑰
  1. 在以下網址開啟 IAM 主控台:https://console.aws.amazon.com/iam/

  2. 在左側導覽窗格中,選擇 Roles (角色)。

  3. 在 中搜尋框中,搜索用於訪問AWS OpsWorks CM。所以此AWS託管角色為aws-opsworks-cm-service-role

  4. 摘要頁面上,選擇信任關係選項卡。

  5. Trust relationships (信任關係) 標籤上,選擇 Edit trust relationship (編輯信任關係)

  6. 在 中政策文件中,請至少添加一個aws:SourceArn或者aws:SourceAccount條件鍵添加到策略中。使用aws:SourceArn來限制跨服務之間的信任關係(例如AWS Certificate Manager和 Amazon EC2)和AWS OpsWorks CM到特定AWS OpsWorks CM服務器,這是更嚴格的。Addaws:SourceAccount來限制跨服務和AWS OpsWorks CM到特定帳户中的服務器,這限制性較小。以下是範例。請注意,如果您使用兩個條件鍵,則帳户 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/my-opsworks-server/EXAMPLEabcd-1234-efghEXAMPLE-ID" } } } ] }
  7. 當您完成新增條件金鑰時,選擇更新信任政策

以下是限制訪問權限的角色的附加示例AWS OpsWorks CM伺服器使用aws:SourceArnaws: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

下面的示例限制對兩個AWS OpsWorks CM服務器在帳户 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/my-chef-server/unique_ID", "arn:aws:opsworks-cm:us-east-2:123456789012:server/my-puppet-server/unique_ID" ] } } } ] }