Amazon:拒绝访问您账户之外的 Amazon S3 资源,Amazon Web Services Data Exchange 除外。
以下示例说明如何创建基于身份的策略以拒绝访问 Amazon 中不属于您的账户的所有资源,Amazon Web Services Data Exchange 正常操作所需的资源除外。要使用此策略,请将示例策略中的斜体占位符文本
替换为您自己的信息。然后,按照创建策略或编辑策略中的说明操作。
您可以使用条件键 Amazon Web Services Data Exchange 和 aws:ResourceOrgPaths
来创建类似的策略,限制对企业或企业部门内部资源的访问,同时包括 aws:ResourceOrgID
所拥有的资源。
如果您在您的环境中使用 Amazon Web Services Data Exchange,该服务会创建资源并与之交互,例如服务账户拥有的 Amazon S3 存储桶。例如,Amazon Web Services Data Exchange 代表 IAM 主体(用户或角色)向 Amazon Web Services Data Exchange 服务拥有的 Amazon S3 存储桶发送调用 Amazon Web Services Data Exchange API 的请求。在这种情况下,在策略中使用 aws:ResourceAccount
、aws:ResourceOrgPaths
或 aws:ResourceOrgID
(不包括 Amazon Web Services Data Exchange 所拥有的资源)会拒绝对服务账户拥有的存储桶的访问。
-
语句
DenyAllAwsResourcesOutsideAccountExceptS3
使用带有 Deny 效果的NotAction
元素,它显式拒绝访问未在声明中列出和不属于已列出账户的所有操作。NotAction
元素表示此语句的例外情况。这些操作是此语句的例外情况,因为如果这些操作是在 Amazon Web Services Data Exchange 创建的资源上执行的,则策略会拒绝这些操作。 -
语句
DenyAllS3ResoucesOutsideAccountExceptDataExchange
使用ResourceAccount
和CalledVia
条件的组合,拒绝访问前一语句中排除的三个 Amazon SNS 操作。如果资源不属于已列出的账户,并且,如果调用服务的不是 Amazon Web Services 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" ] } } } ] }