S3バケットからCloudFrontを介してウェブサイトにサービスを提供する場合、通常、次のバケットポリシーを適用してファイルへのアクセスを許可します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Allow Public Access to All Objects",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::somewhere.example.com/*"
}
]
}
しかし、Amazonは最近このメッセージを表示し始めました(太字の強調):
S3バケットへのパブリックアクセスのnever付与any kindを強くお勧めします。
AWSのドキュメントはこのアドバイスと非常に矛盾しており、書き込みアクセスのみが問題であることを示唆しています。私はWebサイトを提供しているので、特にディレクトリの一覧表示がまだ許可されていないので、ファイルへのパブリックアクセスを許可することに非常に満足しています。
2017年11月の時点で、CloudFrontをS3バケットに接続して、パブリックアクセスを許可しない推奨の方法は何ですか?
Origin Access Identityをセットアップします。これにより、バケットをプライベートに保ち、CloudFront経由のアクセスのみを許可できます。これはセットアップが非常に簡単です。手順を説明し、すべてを理解するのに役立つリンクを含めました。 OAIを設定したら、S3バケットのポリシーを削除します。 S3バケットはプライベートであり、CloudFrontを介したユーザーへのアクセスのみを提供します。
オリジンアクセスIDを使用してAmazon S3コンテンツへのアクセスを制限する
通常、Amazon S3バケットをCloudFrontディストリビューションのオリジンとして使用している場合は、バケット内のオブジェクトを読み取るためのアクセス許可を全員に付与します。これにより、誰でもCloudFrontまたはAmazon S3 URLを使用してオブジェクトにアクセスできます。 CloudFrontはAmazon S3 URLを公開しませんが、アプリケーションがAmazon S3から直接オブジェクトを提供する場合、または誰かがAmazon S3の特定のオブジェクトへの直接リンクを提供する場合、ユーザーはそれらのURLを使用する可能性があります。