AWS:拒絕存取您帳戶以外的 Amazon S3 資源,但 AWS Data Exchange 除外 - AWS Identity and Access Management

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

AWS:拒絕存取您帳戶以外的 Amazon S3 資源,但 AWS Data Exchange 除外

此範例會示範如何建立身分型政策,它拒絕存取 AWS 中不屬於您帳戶的所有資源,AWS Data Exchange 進行正常操作所需的資源除外。若要使用此政策,請將範例政策中的斜體預留位置文字取代為您自己的資訊。然後,遵循建立政策編輯政策中的指示進行操作。

您可以建立類似的策略來限制對組織或組織單位內資源的存取,同時使用條件鍵索引鍵 aws:ResourceOrgPathsaws:ResourceOrgID 來計算 AWS Data Exchange 擁有的資源。

如果在您的環境中使用 AWS Data Exchange,服務會建立資源並與其互動,例如服務帳戶擁有的 Amazon S3 儲存貯體。例如:AWS Data Exchange 會代表叫用 AWS Data Exchange API 的 IAM 主體 (使用者或角色),將請求傳送至 AWS Data Exchange 服務擁有的 Amazon S3 儲存貯體。在這種情況下,在政策中使用 aws:ResourceAccountaws:ResourceOrgPathsaws:ResourceOrgID (不考慮 AWS Data Exchange 擁有的資源) 會拒絕存取服務帳戶所擁有的儲存貯體。

  • 陳述式 DenyAllAwsResourcesOutsideAccountExceptS3 會搭配使用 NotAction 元素與拒絕效果,明確拒絕存取陳述式中未列出的且不屬於所列帳戶的每個動作。NotAction 元素表示此陳述式的例外狀況。這些動作是此陳述式的例外狀況,因為如果對 AWS Data Exchange 建立的資源執行動作,則政策會拒絕它們。

  • DenyAllS3ResoucesOutsideAccountExceptDataExchange 陳述式會結合使用 ResourceAccountCalledVia 條件,拒絕存取先前的陳述式中排除的 Amazon S3 動作。如果資源不屬於列出的帳戶並且如果呼叫服務不是 AWS Data Exchange,陳述式會拒絕執行動作。如果資源屬於列出的帳戶,或者列出的服務主體 dataexchange.amazonaws.com 執行操作,則陳述式不會拒絕執行動作。

重要

此政策不允許任何動作。它使用 Deny 效果,明確拒絕存取陳述式中列出的不屬於所列帳戶的所有資源。將此政策與允許存取特定資源的其他政策結合使用。

以下範例示範如何設定政策,以允許存取所需的 Amazon S3 儲存貯體。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAllAwsReourcesOutsideAccountExceptAmazonS3", "Effect": "Deny", "NotAction": [ "s3:GetObject", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "*", "Condition": { "StringNotEquals": { "aws:ResourceAccount": [ "111122223333" ] } } }, { "Sid": "DenyAllS3ResourcesOutsideAccountExceptDataExchange", "Effect": "Deny", "Action": [ "s3:GetObject", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "*", "Condition": { "StringNotEquals": { "aws:ResourceAccount": [ "111122223333" ] }, "ForAllValues:StringNotEquals": { "aws:CalledVia": [ "dataexchange.amazonaws.com" ] } } } ] }