S3のパブリックアクセスブロックの影響調査してみた!

AWS

おつかれさまです。あきおです。 プロジェクトでS3のパブリックアクセスブロックの設定修正しました。

あきお
修正にあたり詳細にまとめられた記事が少なく、試行錯誤しながら設定を変更した。

各設定によりどんな影響があるか調査したので、その結果を備忘録としてまとめていきます。

パブリックアクセスブロック

この設定はバケットやオブジェクトが、公に公開されることを防ぐ設定です。設定項目は以下の4つがあります。

全ての項目にチェックを付けることで、バケットやオブジェクトのセキュリティは向上します。現在新規で作成するバケットに関しては全てチェックが付けられています。

あきお
パブリックでS3にアップロードしている処理があると、予期せぬ影響があるため影響調査が必要です。

ここからは、それぞれ設定した場合の影響をまとめていきます。

新しいACLを介して付与されたバケットとオブジェクト[…]

バケットやオブジェクトは新規にパブリックアクセスを付与できなくなります。設定後、S3にファイルをアップロードする際、ACLに「public-read」を付与するとAccess Deniedが表示されます。

aws s3 cp ./test2.txt s3://furutimes-test-publicaccessblock/ --acl public-read
----------
upload failed:
An error occurred (AccessDenied) when calling the PutObject operation: Access Denied

設定の際はプログラム等で「public-read」を使っていないか事前確認が必要です

任意のACLを介して付与されたバケットとオブジェクト[…]

前述の設定は新規のパブリックアクセスがブロックされましたが、この設定は作成済みのバケットとオブジェクトに対し、パブリックアクセスをブロックします。

以下はS3にアップロード済ファイルが、この設定でどう影響を受けるかまとめた画像です。

AFTERではオブジェクトの読み取りがなくなりました。設定のチェックを外すことで元の状態に戻ることから、パブリックアクセスを無効にする設定が上書きされていることがわかります。

設定の際はS3にあるファイルをどうのように利用しているか調査が必要です。

新しいパブリックバケットポリシーまたはアクセスポイントポリシー[…]

新規にバケットポリシーを作成するときのパブリックアクセスの登録をブロックします。既存のバケットは対象外で新規のバケットポリシーのみ対象です。

次の1つ以上のポリシーで固定値(ワイルドカードを含まない)を設定することで登録可能です。

  • aws:SourceIp
  • aws:PrincipalOrgID
  • aws:SourceArn
  • aws:SourceVpc
  • aws:SourceVpce
  • aws:SourceOwner
  • aws:SourceAccount
  • s3:x-amz-server-side-encryption-aws-kms-key-id
  • aws:userid
  • s3:DataAccessPointArn

以下のように上記ポリシーを設定していない場合、アクセス拒否になり登録できません。

{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Effect": "Allow",
			"Principal": "*",
			"Action": "s3:PubObject",
			"Resource": "arn:aws:s3:::furutimes-test-publicaccessblock/*"
		}
	]
}

次のように該当のポリシーを設定することで登録可能になります。

{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Effect": "Allow",
			"Principal": "*",
			"Action": "s3:PubObject",
			"Resource": "arn:aws:s3:::furutimes-test-publicaccessblock/*",
			"Condition": {
				"StringEquals": {
					"aws:SourceVpc": "vpc-051c4e17cvv203519"
				}
			}
		}
	]
}
あきお
ここではaws:SourceVpcにVPCIDを設定しました。

任意のパブリックバケットポリシーまたはアクセスポイントポリシー[…]

この設定では、バケット所有者アカウント内のAWSサービスと承認されたユーザーのみにアクセスが制限されます

あきお
クロスアカウントアクセスがブロックされるため設定の際は注意が必要です。

例えば、以下のように静的Webサイトをホストしており、「Hello World」を表示させるページがあったとします。この設定をオンにすると外部のユーザーはアクセスできなくなるため、ページが閲覧できなくなります。

外部公開しているページ等がある場合、S3を使わない方法を検討する必要があります。

まとめ

今回は、S3のパブリックアクセスブロックに関して調査しました。

反映後の影響範囲がわかることで、S3の設定をより深く理解できました。今後もAWSの調査結果をまとめていきたいと思います。

それでは、おつかれさまでした。