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 を使用します。
署名動作
S3 マルチリージョンアクセスポイントオリジンの署名動作オプションは、通常の Amazon S3 バケットオリジンの署名動作オプションと同じです。詳細については、「Amazon S3 オリジンへのアクセスを制限する」の「オリジンアクセスコントロールの詳細設定」を参照してください。