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