CloudFront ディストリビューションを使用して Simple Storage Service (Amazon S3) バケットへのアクセスを制限するにはどうすればよいですか?

最終更新日: 2021 年 9 月 15 日

オブジェクトが Amazon CloudFront ディストリビューションを介してのみアクセスできるように、Amazon Simple Storage Service (Amazon S3) バケットへのアクセスを制限したいと考えています。どうすればよいですか?

解決方法

重要: 開始する前に、CloudFront ディストリビューションの Amazon S3 オリジンが、REST API エンドポイント (AWSDOC-EXAMPLE-BUCKET.s3.amazonaws.com) として設定されていることを確認してください。この解決方法は、ウェブサイトエンドポイントとして設定された S3 オリジン (AWSDOC-EXAMPLE-BUCKET.s3-website-us-east-1.amazonaws.com) には適用されません。

CloudFront のオリジンアクセスアイデンティティ (OAI) を作成する

1.    CloudFront コンソールを開きます。

2.    配信のリストから、アクセス制限の対象である S3 バケットからのコンテンツを提供しているものを選択します。

3.    [Origins] (オリジン) タブを選択します。

4.    S3 オリジンを選択して [編集] をクリックします。

5.    [S3 bucket access] (S3 バケットアクセス) で、[Yes use OAI (bucket can restrict access to only CloudFront)] (はい、OAI を使用します (バケットは CloudFront のみへのアクセスを制限できます)) を選択します。

6.    [Origin access identity] (オリジンアクセスアイデンティティ) で、ドロップダウンリストから既存のアイデンティティを選択するか、[Create new OAI] (新しい OAI を作成) を選択します。

7.    [Bucket policy] (バケットポリシー) で、[Yes, update the bucket policy] (はい、バケットポリシーを更新します) を選択します。
注: このステップでは、S3 オリジンのバケットポリシーを更新して、s3:GetObject のアクセス権を OAI に付与します。

8.    [Save Changes] (変更を保存) を選択します。

バケットポリシーを確認する

1.    Amazon S3 コンソールを開きます。

2.    バケットのリストから、CloudFront ディストリビューションのオリジンであるバケットを選択します。

3.    [Permissions] (アクセス権限) タブを選択します。

4.    [Bucket Policy] (バケットポリシー) で、次のようなステートメントが表示されていることを確認します。

{
 "Sid": "1",
 "Effect": "Allow",
 "Principal": {
  "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EAF5XXXXXXXXX"
  },
 "Action": "s3:GetObject",
 "Resource": "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/*"
}

これは、OAI 設定の一環として [Yes, update the bucket policy] (はい、バケットポリシーを更新します) を選択したときに CloudFront がバケットポリシーに追加するステートメントです。

5.    バケットポリシーで、CloudFront OAI からバケットにアクセスできないようにする "Effect": "Deny" を含むステートメントを探します。CloudFront OAI がバケット内のオブジェクトにアクセスできるように、これらのステートメントを変更します。

6.    バケットポリシーで、CloudFront OAI ではないソースからのバケットへのアクセスを許可する "Effect": "Allow" を含むステートメントがないか確認します。ユースケースの必要に応じてこれらのステートメントを変更します。

注: オブジェクトアクセスコントロールリスト (オブジェクト ACL) を使用して許可を管理する場合は、オブジェクト ACL も確認して、それらのファイルが CloudFront OAI の外部からアクセスできないことを確認する必要があります。

CloudFront OAI を使用してバケットへのアクセスを制限すると、AWS WAF を統合することで、別のセキュリティレイヤーをオプションで追加できます。


この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?