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 ユーザーガイド」の「マルチリージョンアクセスポイントの作成」を参照してください。

S3 マルチリージョンアクセスポイントにアクセスする許可を CloudFront に付与する

マルチリージョンアクセスポイントポリシーを更新して、CloudFront サービスプリンシパル (cloudfront.amazonaws.com) がマルチリージョンアクセスポイントにアクセスできるようにします。ポリシーの Condition 要素を使用して、オリジンを含む CloudFront ディストリビューションに代わってリクエストが行われた場合にのみ 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" } } } ] }

基盤となる S3 バケットへのアクセス許可を CloudFront に付与する

マルチリージョンアクセスポイントポリシーに加えて、マルチリージョンアクセスポイントに関連付けられている基盤となる各 S3 バケットにアクセスするためのアクセス許可を CloudFront に付与する必要があります。これには以下の 2 つの方法があります。

オプション 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 キーポリシーステートメント

次の例は、OAC を使用した CloudFront ディストリビューションが SSE-KMS の 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 マネジメントコンソールにサインインし、https://console.aws.amazon.com/cloudfront/v4/home で CloudFront コンソールを開きます。

  2. ナビゲーションペインで、[オリジンアクセス] を選択します。

  3. [コントロール設定を作成] を選択します。

  4. [コントロール設定を作成] フォームで、以下の操作を行います。

    1. [詳細] ペインに、[名前] と (オプションで) オリジンアクセスコントロールの [説明] を入力します。

    2. [設定] ペインでは、デフォルト設定である [Sign requests (recommended)] (署名リクエスト (推奨)) をそのまま使用することをお勧めします。詳細については、「オリジンアクセスコントロールの詳細設定」を参照してください。

  5. [オリジンタイプ] ドロップダウンから [S3 マルチリージョンアクセスポイント] を選択します。

  6. [作成] を選択します。

    OAC を作成したら、[名前] を書き留めておきます。次の手順では、この操作を行う必要があります。

ディストリビューションの 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

  • SigningBehavioralwaysnever、または no-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 オリジンへのアクセスを制限する」の「オリジンアクセスコントロールの詳細設定」を参照してください。