LoginSignup
2
1

More than 3 years have passed since last update.

特定のS3 バケットだけにアクセスするポリシーを30秒で書く

Last updated at Posted at 2020-01-20

色々調べたのだけど、とにかくパターンが多すぎて怖い

ので、一番簡素で強力と思えたパターンだけ書きます。
(違ってたらぜひご指摘ください!)

hogehoge.comを置き換えてご利用下さい。
(ここではcloudfrontでスタティックページを配信してるユースケースを想定しています)

s3-singlebucket-policy.json
# テンプレ
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::hogehoge.com",
                "arn:aws:s3:::hogehoge.com/*"
            ]
        },
        {
            "Effect": "Deny",
            "NotAction": "s3:*",
            "NotResource": [
                "arn:aws:s3:::hogehoge.com",
                "arn:aws:s3:::hogehoge.com/*"
            ]
        }
    ]
}

使うのは「iamユーザー」

いろんな設定の仕方があるかと思いますが、僕は上記ポリシーを作成後、
そのポリシーを適用したユーザーをバケットごとに作成しています。
(プラグマティックアクセスを有効に・ManagementコンソールはOFF)

Cyderduck や Transmit で使う時

「指定バケットをデフォルトパス」に指定しないとエラーになります。(デフォルトはバケット全体をListしようとするため)
CyberDuckだと「QuickConnect」にそのオプションが無いのだけ軽くハマりました。
普通に「新規作成」から詳細設定を指定してあげればOK!

Transmit:
screeenshot 2020-01-20 at 13.09.54.png

CyberDuck:
screeenshot 2020-01-20 at 13.08.56.png

より詳しくは

セキュリティ的なベストプラクティスなのか?

これで僕が求めていた事は実現(作業者ごとに個別のバケットアクセスを管理 - 管理者のみ複数バケットにアクセス可)出来ているのですが、
AWS勉強中の身ですのでこれで完全かはわかりません。
具体的には「ポリシー・Deny」を上回る権限設定が出来るか、これから調べたいと思います。

「S3全員見えちゃう運用」からのステップアップとしては上記でも充分有効、程度にお読み頂ければ。

2
1
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
2
1