みなさん、こんにちは。サニービュー事業部の小寺です。今日はS3をお使いの方向けのお知らせです!

2023年4月よりS3バケットのデフォルトセキュリティ設定が変更になります。

https://aws.amazon.com/jp/blogs/aws/heads-up-amazon-s3-security-changes-are-coming-in-april-of-2023/

何が変わるのか?

2023年4 月以降に作成された新しいS3バケットでは、S3ブロックパブリック アクセスが有効になり、S3 アクセス コントロール リスト (ACL) が無効になります。2つのオプションは両方とも、すでにコンソールのデフォルトであり、ベスト プラクティスとして長い間推奨されてきました。

現状でバケットを新規作成しようとしたときの状態です。あくまで「推奨」として表示されています。

2023年4月以降に作成されるS3バケットでは「推奨」ではなく強制的に変更がされるとのことです。

https://aws.amazon.com/jp/blogs/aws/heads-up-amazon-s3-security-changes-are-coming-in-april-of-2023/より引用

もし、ACLとパブリックアクセスを有効化させたいときは?

パブリック バケット アクセスまたは ACL を使用したい場合は、S3 バケットを作成した後で、パブリック バケット アクセス を無効にするか、ACL を有効にすることができます。

ちなみに、パブリック アクセスを許可するバケット ポリシーまたはアクセス ポイント ポリシーを設定しようとすると、403 Access Denied エラーになります。新しいバケットにパブリック アクセスが必要な場合は、通常どおり作成してから、DeletePublicAccessBlock を呼び出してパブリック アクセス ブロックを削除しましょう。※この関数を呼び出すには、s3:PutBucketPublicAccessBlock 権限が必要です。

次に、ACLを有効化させたいときにどうするか?についてです。バケット ACL とオブジェクト ACL が無効になってしまうので、誰がオブジェクトをアップロードしてもバケット所有者がオブジェクト所有者になります。バケットの ACL を有効にしたい場合、CreateBucket リクエストで ObjectOwnership パラメータを ObjectWriter に設定する、もしくは、バケットの作成後にDeleteBucketOwnershipControls を呼び出すことができます。パラメータを使用したり関数を呼び出したりするには、s3:PutBucketOwnershipControls 権限が必要です。

まとめ

S3の新しいポリシーの発表がありました。2023年4月までに作られたバケットには影響がないので、それ以降に作成されて、かつ上記がデフォルト設定されると困る方は設定手順などの見直しが必要になりそうですね。