

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

# 限制對 Amazon S3 多區域存取點原始伺服器的存取
<a name="private-content-restricting-access-to-s3-mrap"></a>

您可以使用原始存取控制 (OAC) 來限制對 Amazon S3 多區域存取點原始伺服器的存取。S3 多區域存取點提供全域端點，可根據網路延遲將請求路由至最近的 S3 儲存貯體。

如需搭配標準 Amazon S3 儲存貯體原始伺服器使用 OAC 的詳細資訊，請參閱 [限制對 Amazon S3 原始伺服器的存取](private-content-restricting-access-to-s3.md)。

## 先決條件
<a name="oac-prerequisites-s3-mrap"></a>

在建立和設定 OAC 之前，您必須擁有具有 Amazon S3 多區域存取點原始伺服器的 CloudFront 分佈。原始網域名稱必須使用 S3 多區域存取點主機名稱格式：

`multi-region-access-point-alias.accesspoint.s3-global.amazonaws.com`

如需建立 S3 多區域存取點的詳細資訊，請參閱《*Amazon Simple Storage Service 使用者指南*》中的[建立多區域存取點](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingMultiRegionAccessPoints.html)。

## 授予 CloudFront 存取 S3 多區域存取點的許可
<a name="oac-permission-to-access-s3-mrap"></a>

更新多區域存取點政策，以允許 CloudFront 服務主體 (`cloudfront.amazonaws.com`) 存取多區域存取點。僅在請求代表包含原始伺服器的 CloudFront 分佈時，才使用政策中的`Condition`元素來允許 CloudFront 存取多區域存取點。

如需新增或修改多區域存取點政策的相關資訊，請參閱《*Amazon Simple Storage Service 使用者指南*》中的[多區域存取點政策範例](https://docs.aws.amazon.com/AmazonS3/latest/userguide/MultiRegionAccessPointPermissions.html)。

**Example CloudFront OAC 的多區域存取點政策**  

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowCloudFrontOACAccess",
            "Effect": "Allow",
            "Principal": {
                "Service": "cloudfront.amazonaws.com"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3::111122223333:accesspoint/Multi-Region-Access-Point-Alias.mrap/object/*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceArn": "arn:aws:cloudfront::111122223333:distribution/CloudFront distribution ID"
                }
            }
        }
    ]
}
```

## 授予 CloudFront 存取基礎 S3 儲存貯體的許可
<a name="oac-permission-to-access-s3-mrap-buckets"></a>

除了多區域存取點政策之外，您還必須授予 CloudFront 許可，以存取與多區域存取點相關聯的每個基礎 S3 儲存貯體。您可以使用兩種方式的其中一種來執行此動作：

### 選項 1：僅授予對 CloudFront 的存取權
<a name="oac-s3-mrap-bucket-option1"></a>

將儲存貯體政策新增至每個 S3 儲存貯體，以允許 CloudFront 服務主體存取儲存貯體。當您也需要允許從其他來源直接存取儲存貯體時，請使用此選項。

**Example 基礎儲存貯體的 S3 儲存貯體政策**  

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowCloudFrontOACAccessViaMRAP",
            "Effect": "Allow",
            "Principal": {
                "Service": "cloudfront.amazonaws.com"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket-us-east-1/*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceArn": "arn:aws:cloudfront::111122223333:distribution/CloudFront distribution ID"
                }
            }
        }
    ]
}
```

### 選項 2：將完整儲存貯體存取權委派給多區域存取點
<a name="oac-s3-mrap-bucket-option2"></a>

授予多區域存取點對每個基礎儲存貯體的完整存取權。透過此方法，所有對儲存貯體的存取都由多區域存取點政策控制，可簡化存取管理。對於不需要直接存取儲存貯體的使用案例，我們建議使用此選項。

**Example 委派存取多區域存取點的 S3 儲存貯體政策**  

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DelegateAccessToMRAP",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-us-east-1",
                "arn:aws:s3:::amzn-s3-demo-bucket-us-east-1/*"
            ],
            "Condition": {
                "StringEquals": {
                    "s3:DataAccessPointArn": "arn:aws:s3::111122223333:accesspoint/Multi-Region-Access-Point-Alias.mrap"
                }
            }
        }
    ]
}
```

如需詳細資訊，請參閱《*Amazon Simple Storage Service 使用者指南*》中的[多區域存取點政策範例](https://docs.aws.amazon.com/AmazonS3/latest/userguide/MultiRegionAccessPointPermissions.html#MultiRegionAccessPointPolicyExamples)。

**重要**  
您必須將此儲存貯體政策新增至與多區域存取點相關聯的每個 S3 儲存貯體。如果有任何儲存貯體缺少政策，則路由至該儲存貯體的 CloudFront 請求將被拒絕。

### SSE-KMS
<a name="oac-s3-mrap-sse-kms"></a>

如果基礎 S3 儲存貯體中的物件使用伺服器端加密搭配 AWS KMS (SSE-KMS) 加密，您必須確保 CloudFront 分佈具有使用 AWS KMS 金鑰的許可。由於 S3 多區域存取點可以將請求路由到多個區域中的儲存貯體，因此您必須將陳述式新增至基礎儲存貯體使用 SSE-KMS 的每個區域中的 KMS 金鑰政策。如需如何修改金鑰政策的相關資訊，請參閱《*AWS Key Management Service 開發人員指南*》中的[變更金鑰政策](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html)。

**Example KMS 金鑰政策陳述式**  
下列範例顯示 KMS 金鑰政策陳述式，允許具有 OAC 的 CloudFront 分佈存取 SSE-KMS 的 KMS 金鑰。  

```
{
    "Sid": "AllowCloudFrontServicePrincipalSSE-KMS",
    "Effect": "Allow",
    "Principal": {
        "Service": "cloudfront.amazonaws.com"
    },
    "Action": [
        "kms:Decrypt",
        "kms:Encrypt",
        "kms:GenerateDataKey*"
    ],
    "Resource": "*",
    "Condition": {
        "StringEquals": {
            "aws:SourceArn": "arn:aws:cloudfront::111122223333:distribution/CloudFront distribution ID"
        }
    }
}
```

**重要**  
您必須將此金鑰政策陳述式新增至基礎 S3 儲存貯體使用 SSE-KMS 加密的每個區域中的 KMS 金鑰。

## 建立原始存取控制
<a name="create-oac-s3-mrap"></a>

若要建立原始存取控制 (OAC)，您可以使用 AWS 管理主控台 CloudFormation、 AWS CLI、 或 CloudFront API。

------
#### [ Console ]

**如要建立原始存取控制**

1. 登入 AWS 管理主控台 ，並在 開啟 CloudFront 主控台[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home)。

1. 於左側導覽窗格中，選擇 **Origin access** (原始存取)。

1. 選擇 **Create control setting** (建立控制設定)。

1. 在 **Create control setting** (建立控制設定) 表單上，執行下列動作：

   1. 於 **Details** (詳細資訊) 窗格中，輸入 **Name** (名稱) 和 (選用) **Description** (描述)，以用於原始存取控制。

   1. 於 **Settings** (設定) 窗格中，建議您保留預設設定 (**Sign requests (recommended)**) (簽署請求 (建議使用))。如需詳細資訊，請參閱[原始存取控制的進階設定](private-content-restricting-access-to-s3.md#oac-advanced-settings-s3)。

1. 從**原始伺服器類型**下拉式清單中選擇 **S3 多區域存取點**。

1. 選擇**建立**。

   建立 OAC 之後，請記下 **Name** (名稱)。您需要於下列程序中進行使用。

**將原始存取控制新增至分佈中的 S3 多區域存取點原始伺服器**

1. 在 [https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) 中開啟 CloudFront 主控台。

1. 選擇具有您要新增 OAC 之 S3 多區域存取點原始伺服器的分佈，然後選擇**原始**伺服器索引標籤。

1. 選取您要新增 OAC 的 S3 多區域存取點原始伺服器，然後選擇**編輯**。

1. 針對**原始存取**，選擇**原始存取控制設定 (建議使用)**。

1. 在 **Origin access control** (原始存取控制) 下拉式功能表中，選擇您想要使用的 OAC。

1. 選擇**儲存變更**。

分佈開始部署至所有 CloudFront 邊緣節點。當節點收到新組態時，它會簽署其傳送至 S3 多區域存取點原始伺服器的所有請求。

------
#### [ CLI ]

使用 **create-origin-access-control** 命令：

```
aws cloudfront create-origin-access-control \
    --origin-access-control-config '{
        "Name": "my-s3-mrap-oac",
        "Description": "OAC for S3 Multi-Region Access Point",
        "SigningProtocol": "sigv4a",
        "SigningBehavior": "always",
        "OriginAccessControlOriginType": "s3mrap"
    }'
```

------
#### [ CloudFormation ]

在 中指定下列值`OriginAccessControlConfig`：
+ `SigningProtocol`: `sigv4a`
+ `SigningBehavior`：`never`、 `always`或 `no-override`
+ `OriginAccessControlOriginType`: `s3mrap`

**Example CloudFormation 範本**  

```
Type: AWS::CloudFront::OriginAccessControl
Properties:
  OriginAccessControlConfig:
    Description: An optional description for the origin access control
    Name: my-s3-mrap-oac
    OriginAccessControlOriginType: s3mrap
    SigningBehavior: always
    SigningProtocol: sigv4a
```

------

## 簽署行為
<a name="oac-signing-behavior-s3-mrap"></a>

S3 多區域存取點原始伺服器的簽署行為選項與一般 Amazon S3 儲存貯體原始伺服器的簽署行為選項相同。如需詳細資訊，請參閱 [原始存取控制的進階設定](private-content-restricting-access-to-s3.md#oac-advanced-settings-s3) 中的*限制對 Amazon S3 原始伺服器的存取*。