

# 存储桶策略示例
<a name="S3Outposts-example-bucket-policies"></a>

使用 S3 on Outposts 桶策略，您可以保护对 S3 on Outposts 桶中对象的访问，这样，只有具有适当权限的用户才能访问它们。您甚至可以阻止没有适当权限的经过身份验证的用户访问您的 S3 on Outposts 资源。

本节介绍关于 S3 on Outposts 桶策略的典型使用案例的示例。要测试这些策略，您需要将 `user input placeholders` 替换为您自己的信息（例如存储桶名称）。

要授予或拒绝对一组对象的权限，可以在 Amazon资源名称（ARN）和其他值中使用通配符（`*`）。例如，您可以控制对以通用[前缀](https://docs.aws.amazon.com/general/latest/gr/glos-chap.html#keyprefix)或以给定扩展名结尾的对象组的访问，例如 `.html`。

有关 AWS Identity and Access Management（IAM）策略语言的更多信息，请参阅[使用 S3 on Outposts 设置 IAM](S3OutpostsIAM.md)。

**注意**  
使用 Amazon S3 控制台测试 [https://docs.aws.amazon.com/cli/latest/reference/s3outposts/](https://docs.aws.amazon.com/cli/latest/reference/s3outposts/) 权限时，您必须授予控制台所需的其它权限，如 `s3outposts:createendpoint`、`s3outposts:listendpoints` 等等。

**用于创建存储桶策略的其他资源**
+ 有关在创建 S3 on Outposts 桶策略时可以使用的 IAM policy 操作、资源和条件键的列表，请参阅 [Actions, resources, and condition keys for Amazon S3 on Outposts](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3onoutposts.html)。
+ 有关创建 S3 on Outposts 策略的指南，请参阅[为 Amazon S3 on Outposts 存储桶添加或编辑存储桶策略](S3OutpostsBucketPolicyEdit.md)。

**Topics**
+ [基于特定 IP 地址管理对 Amazon S3 on Outposts 桶的访问权限](#S3OutpostsBucketPolicyManageIPaccess)

## 基于特定 IP 地址管理对 Amazon S3 on Outposts 桶的访问权限
<a name="S3OutpostsBucketPolicyManageIPaccess"></a>

存储桶策略是基于资源的 AWS Identity and Access Management (IAM) 策略，您可以使用该策略向存储桶及其中对象授予访问权限。只有存储桶拥有者才能将策略与存储桶关联。附加到存储桶的权限适用于存储桶拥有者拥有的存储桶中所有对象。存储桶策略的大小限制为 20 KB。有关更多信息，请参阅 [存储桶策略](S3onOutposts.md#S3OutpostsBucketPolicies)。

### 限制特定 IP 地址的访问权限
<a name="S3Outposts-example-bucket-policies-IP-1"></a>

以下示例拒绝所有用户对指定桶中的对象执行任何 [S3 on Outposts 操作](https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3OutpostsWorkingBuckets.html)，除非请求来自指定的 IP 地址范围。

**注意**  
在限制对特定 IP 地址的访问权限时，务必还要指定哪些 VPC 端点、VPC 源 IP 地址或外部 IP 地址可以访问 S3 on Outposts 桶。否则，如果您的策略拒绝所有用户在没有适当权限的情况下对 S3 on Outposts 桶中的对象执行任何 [https://docs.aws.amazon.com/cli/latest/reference/s3outposts/](https://docs.aws.amazon.com/cli/latest/reference/s3outposts/) 操作，则您可能会失去对该桶的访问权限。

此策略的 `Condition` 语句确定允许的 IP 版本 4（IPv4）IP 地址范围为 *`192.0.2.0/24`*。

`Condition` 块使用 `NotIpAddress` 条件和 `aws:SourceIp` 条件键（这是 AWS 范围的条件键)。`aws:SourceIp` 条件键只能用于公有 IP 地址范围。有关条件键的更多信息，请参阅 [Actions, resources, and condition keys for S3 on Outposts](https://docs.aws.amazon.com//service-authorization/latest/reference/list_amazons3onoutposts.html)。`aws:SourceIp` IPv4 值使用标准 CIDR 表示法。有关更多信息，请参阅《IAM 用户指南》**中的 [IAM JSON 策略元素参考](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Conditions_IPAddress)。

**警告**  
在使用此 S3 on Outposts 策略之前，将此示例中的 *`192.0.2.0/24`* IP 地址范围替换为适合您的使用案例的值。否则，您将失去访问桶的能力。

```
 1. {
 2.     "Version": "2012-10-17",		 	 	 
 3.     "Id": "S3OutpostsPolicyId1",
 4.     "Statement": [
 5.         {
 6.             "Sid": "IPAllow",
 7.             "Effect": "Deny",
 8.             "Principal": "*",
 9.             "Action": "s3-outposts:*",
10.             "Resource": [
11.                 "arn:aws:aws:s3-outposts:region:111122223333:outpost/OUTPOSTS-ID/accesspoint/EXAMPLE-ACCESS-POINT-NAME",
12.                 "arn:aws:aws:s3-outposts:region:111122223333:outpost/OUTPOSTS-ID/bucket/amzn-s3-demo-bucket"
13.             ],
14.             "Condition": {
15.                 "NotIpAddress": {
16.                     "aws:SourceIp": "192.0.2.0/24"
17.                 }
18.             }
19.         }
20.     ]
21. }
```

### 同时允许 IPv4 和 IPv6 地址
<a name="S3Outposts-example-bucket-policies-IP-2"></a>

在您开始使用 IPv6 地址时，建议您使用您的 IPv6 地址范围以及现有的 IPv4 范围来更新组织的所有策略。这样做将有助于确保这些策略在您转换到 IPv6 时继续有效。

以下 S3 on Outposts 示例桶策略说明如何混用 IPv4 和 IPv6 地址范围来覆盖组织的所有有效 IP 地址。该示例策略将允许对示例 IP 地址 *`192.0.2.1`* 和 *`2001:DB8:1234:5678::1`* 的访问，而拒绝对地址 *`203.0.113.1`* 和 *`2001:DB8:1234:5678:ABCD::1`* 的访问。

`aws:SourceIp` 条件键只能用于公有 IP 地址范围。`aws:SourceIp` 的 IPv6 值必须采用标准的 CIDR 格式。对于 IPv6，我们支持使用 `::` 表示 0 范围（例如，`2001:DB8:1234:5678::/64`）。有关更多信息，请参阅《IAM 用户指南》中的 [IP 地址条件运算符](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_IPAddress)**。

**警告**  
在使用此 S3 on Outposts 策略之前，将此示例中的 IP 地址范围替换为适合您的使用案例的值。否则，您可能会失去访问存储桶的能力。

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

****  

```
{
    "Id": "S3OutpostsPolicyId2",
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowIPmix",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": [
                "s3-outposts:GetObject",
                "s3-outposts:PutObject",
                "s3-outposts:ListBucket"
            ],
            "Resource": [            
                "arn:aws:s3-outposts:us-east-1:111122223333:outpost/op-01ac5d28a6a232904/bucket/amzn-s3-demo-bucket",
                "arn:aws:s3-outposts:us-east-1:111122223333:outpost/op-01ac5d28a6a232904/bucket/amzn-s3-demo-bucket/*"
            ],
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": [
                        "192.0.2.0/24",
                        "2001:DB8:1234:5678::/64"
                    ]
                },
                "NotIpAddress": {
                    "aws:SourceIp": [
                        "203.0.113.0/24",
                        "2001:DB8:1234:5678:ABCD::/80"
                    ]
                }
            }
        }
    ]
}
```

------