View a markdown version of this page

限制對 Amazon S3 多區域存取點原始伺服器的存取 - Amazon CloudFront

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

限制對 Amazon S3 多區域存取點原始伺服器的存取

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

如需搭配標準 Amazon S3 儲存貯體原始伺服器使用 OAC 的詳細資訊,請參閱 限制對 Amazon S3 原始伺服器的存取

先決條件

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

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

如需建立 S3 多區域存取點的詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的建立多區域存取點

授予 CloudFront 存取 S3 多區域存取點的許可

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

如需新增或修改多區域存取點政策的相關資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的多區域存取點政策範例

範例 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 儲存貯體的許可

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

選項 1:僅授予對 CloudFront 的存取權

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

範例基礎儲存貯體的 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:將完整儲存貯體存取權委派給多區域存取點

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

範例委派存取多區域存取點的 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 使用者指南》中的多區域存取點政策範例

重要

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

SSE-KMS

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

範例 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 金鑰。

建立原始存取控制

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

Console
如要建立原始存取控制
  1. 登入 AWS 管理主控台 ,並在 開啟 CloudFront 主控台https://console.aws.amazon.com/cloudfront/v4/home

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

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

  4. Create control setting (建立控制設定) 表單上,執行下列動作:

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

    2. Settings (設定) 窗格中,建議您保留預設設定 (Sign requests (recommended)) (簽署請求 (建議使用))。如需詳細資訊,請參閱原始存取控制的進階設定

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

  6. 選擇建立

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

將原始存取控制新增至分佈中的 S3 多區域存取點原始伺服器
  1. https://console.aws.amazon.com/cloudfront/v4/home 中開啟 CloudFront 主控台。

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

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

  4. 針對原始存取,選擇原始存取控制設定 (建議使用)

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

  6. 選擇儲存變更

分佈開始部署至所有 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

  • SigningBehaviorneveralwaysno-override

  • OriginAccessControlOriginType: s3mrap

範例 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

簽署行為

S3 多區域存取點原始伺服器的簽署行為選項與一般 Amazon S3 儲存貯體原始伺服器的簽署行為選項相同。如需詳細資訊,請參閱 原始存取控制的進階設定 中的限制對 Amazon S3 原始伺服器的存取