

# AWS：拒绝访问您账户之外的 Amazon S3 资源，AWS Data Exchange 除外。
<a name="reference_policies_examples_resource_account_data_exch"></a>

以下示例说明如何创建基于身份的策略以拒绝访问 AWS 中不属于您的账户的所有资源，AWS Data Exchange 正常操作所需的资源除外。要使用此策略，请将示例策略中的{{斜体占位符文本}}替换为您自己的信息。然后，按照[创建策略](access_policies_create.md)或[编辑策略](access_policies_manage-edit.md)中的说明操作。

您可以使用条件键 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_effect.html) 效果的 `NotAction` 元素，它显式拒绝访问未在声明中列出和不属于已列出账户的所有操作。`NotAction` 元素表示此语句的例外情况。这些操作是此语句的例外情况，因为如果这些操作是在 AWS Data Exchange 创建的资源上执行的，则策略会拒绝这些操作。
+ 语句 `DenyAllS3ResourcesOutsideAccountExceptDataExchange` 使用 `ResourceAccount` 和 `CalledVia` 条件的组合，拒绝访问前一语句中排除的三个 Amazon SNS 操作。如果资源不属于已列出的账户，并且，如果调用服务的不是 AWS Data Exchange，则该语句会拒绝这些操作。如果资源属于列出的账户，或由列出的服务主体 `dataexchange.amazonaws.com` 执行操作，则该语句不会拒绝这些操作。

**重要**  
该策略不允许进行任何操作。该策略使用 `Deny` 效果，这会显式拒绝访问语句中列出而不属于已列出账户的所有资源。将此策略与允许访问特定资源的其他策略结合使用。

以下示例说明如何配置策略以允许访问所需的 Amazon S3 存储桶。

------
#### [ JSON ]

****  

```
{
  "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"
          ]
        }
      }
    }
  ]
}
```

------