Edited at

S3パブリックアクセス設定を試してみる


目的

2018/11/16にS3の公開設定をブロックするパブリックバケットポリシーがリリースされたので試してみます。

https://aws.amazon.com/jp/blogs/aws/amazon-s3-block-public-access-another-layer-of-protection-for-your-accounts-and-buckets/

ACLとバケットポリシーがありますがここでは、バケットポリシーについて記載したいと思います。

バケットポリシーに対する設定項目としては、以下の2つがあります。

・新規のパブリックバケットポリシーをブロックする (推奨)

・バケットにパブリックポリシーがある場合、パブリックアクセスとクロスアカウントアクセスをブロックする (推奨)


新規のパブリックバケットポリシーをブロックする (推奨)

新規の公開設定の禁止

既存の公開設定はそのまま有効


バケットにパブリックポリシーがある場合、パブリックアクセスとクロスアカウントアクセスをブロックする (推奨)

既存の公開設計の禁止

新規の公開設定は可能

また、アカウントIDを指定したクロスアカウントアクセスは、パブリックバケットポリシーを有効にしても引き続き可能です。パブリックバケットポリシーは、「"Principal": "*"」な設定が禁止の対象となる。

表にしたものが以下になります。

image.png

ちなみに、新規にバケットを作成するとデフォルトすべてTrueになっています。

image.png

image.png

状況の設定で、バケットポリシーで公開設定しようとすると以下の様なエラーになります。



{
"Id": "Policy1542641668505",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1542641665444",
"Action": [
"s3:getobject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::<S3バケット名>/*",
"Principal": "*"
}
]
}

image.png


試してみます


前提

すべての設定がfalseです。

image.png

公開設定が可能です。

image.png

ファイルをアップロードしてダウンロードしてみます。

image.png

URLをクリックしてファイルをダウンロードする

→OK


既存の公開設計の禁止してみる

バケットにパブリックポリシーがある場合、パブリックアクセスとクロスアカウントアクセスをブロックする (推奨)をTrueにする

image.png

ファイルのURLを開くとAccess Deniedになります。

image.png


新規の公開設定の禁止してみる

公開設定のバケットポリシーを削除します。

新規のパブリックバケットポリシーをブロックする (推奨)をTrueにします。

image.png

バケットポリシーで公開設定を使用とするとアクセスが拒否される

image.png

この状態でクロスアカウント設定する

{

"Version": "2012-10-17",
"Statement": [
{
"Sid": "Example",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<AWSアカウントID>:root"
},
"Action": "s3:getobject",
"Resource": [
"arn:aws:s3:::<S3バケット名>*",
"arn:aws:s3:::<S3バケット名> "
]
}
]
}

s3 cliでファイルをダウンロードしてみます。

$ aws s3 cp s3://<S3バケット名>/test.txt .

download: s3://<S3バケット名>/test.txt to ./test.txt

問題なくダウンロードできます。


約束

投稿内容は私個人の意見であり、所属企業・部門見解を代表するものではありません。