9
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AWS CloudFormationでAmazon S3のブロックパブリックアクセスを設定するのに必要なアクセス許可設定

Posted at

AWS CloudFormation(CFn)でAmazon S3(S3)のブロックパブリックアクセスを設定するのに必要なアクセス許可をCFnのエラーを信じたら騙されたのでメモ。

S3のブロックパブリックアクセスに関しては下記が参考になります。

Amazon S3 Block Public Access – アカウントとバケットのさらなる保護 | Amazon Web Services ブログ
https://aws.amazon.com/jp/blogs/news/amazon-s3-block-public-access-another-layer-of-protection-for-your-accounts-and-buckets/

S3パブリックアクセス設定を試してみる - Qiita
https://qiita.com/atsumjp/items/cb6ddf5e3df4bbf5e4a7

手順

テンプレートを用意

こんな感じのテンプレートを用意します。PublicAccessBlockConfiguration でブロックパブリックアクセスの設定をします。
BucketName は任意に指定ください。

template.yaml
AWSTemplateFormatVersion: "2010-09-09"
Resources:
  PublicAccessBlockTestBucket:
    Type: AWS::S3::Bucket
    Properties:
      BucketName: "kai-public-access-block-test"
      PublicAccessBlockConfiguration:
        BlockPublicAcls: True
        BlockPublicPolicy: True
        IgnorePublicAcls: True
        RestrictPublicBuckets: True

AWSマネジメントコンソールだとこんな画面で設定します。
スクリーンショット 2020-02-05 11.21.07.png

AWSユーザーの作成

CFnでスタック作成、リソース管理するのに利用するAWSユーザーを作成して、インラインポリシーで最低限のアクセス許可をします。

インラインポリシー
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "cloudformation:CreateStack",
                "cloudformation:DeleteStack",
                "s3:CreateBucket",
                "s3:DeleteBucket"
            ],
            "Resource": "*"
        }
    ]
}

スタック作成

ブロックパブリックアクセスを設定するためのActionは最初わからなかったので指定せずにCFnでスタック作成してみました。

> aws cloudformation create-stack \
  --template-body file://template.yaml \
  --stack-name kai-public-access-block-test \
  --profile public-access-block-test

すると、API: s3:PutPublicAccessBlock Access Denied ってエラーになったので、インラインポリシーのActionにs3:PutPublicAccessBlock を指定してみると。。。

スクリーンショット 2020-02-05 11.25.23.png

識別されないアクションとなりました(´・ω・`)
なぜー?CFnさんが嘘ついてるの?

正しい指定方法を調べてみた

調べてみると、s3:PutBucketPublicAccessBlock が正しいみたいです。

Amazon S3 ブロックパブリックアクセスの使用 - Amazon Simple Storage Service
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/access-control-block-public-access.html

インラインポリシー
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "cloudformation:CreateStack",
                "cloudformation:DeleteStack",
                "s3:CreateBucket",
                "s3:DeleteBucket",
                "s3:PutBucketPublicAccessBlock"
            ],
            "Resource": "*"
        }
    ]
}

インラインポリシーにs3:PutBucketPublicAccessBlock を追加してスタック作成すると無事にS3バケットのブロックパブリックアクセスが設定できました。
スクリーンショット 2020-02-05 11.28.25.png

参考

Amazon S3 Block Public Access – アカウントとバケットのさらなる保護 | Amazon Web Services ブログ
https://aws.amazon.com/jp/blogs/news/amazon-s3-block-public-access-another-layer-of-protection-for-your-accounts-and-buckets/

S3パブリックアクセス設定を試してみる - Qiita
https://qiita.com/atsumjp/items/cb6ddf5e3df4bbf5e4a7

Amazon S3 ブロックパブリックアクセスの使用 - Amazon Simple Storage Service
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/access-control-block-public-access.html

9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?