0
0

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 5 years have passed since last update.

S3バケットポリシーでAssumeロールのアクセス設定を行う

Posted at

はじめに

S3のバケットポリシーでAssumeロールのアクセス制御設定の方法をまとめる。

詳細

アカウントAでIAMユーザー hoge からAssumeロールしアカウントBのS3バケットにアクセスする状況を想定。
S3バケットのバケットポリシーでは、そのAssumeロールでのみアクセス許可しその他のアクセスは拒否する設定を行う。

バケットポリシー設定方法は以下の2つ
1.アクセス制御にAssumeロール元のIAMユーザーarnを使用する
2.アクセス制御にAssumeロールのIAMロールIDを使用する

方法1

アクセス制御にAssumeロール前のIAMユーザーarnを使用する場合。

バケットポリシー
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::<バケット名>/*",
            "NotPrincipal": {
                "AWS": [
                    "arn:aws:iam::<アカウントID>:role/<ロール名>",
                    "arn:aws:sts::<アカウントID>:assumed-role/<ロール名>/<元のIAMユーザー名>"
                ]
            },
        }
    ]
}

Principal または NotPrincipal ではワイルドカード * を使用できないため、
会社等、複数のユーザーが同じAssumeロールを使用する場合、ユーザーごとに NotPrincipal を書く必要があり、この方法は向かない。

方法2

アクセス制御にAssumeロールのIAMロールIDを使用する場合。
IAMロールIDはコンソール上では確認できず、AWS CLIでのみ確認可能。
以下のコマンドを実行し、IAMロールIDを確認する。

$ aws iam get-role --role-name <IAMロール名>

バケットポリシーに以下を記載する。

バケットポリシー
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "2",
            "Effect": "Deny",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::<バケット名>/*",
            "Condition": {
                "StringNotLike": {
                    "aws:userid": "<IAMロールID>:*"
                }
            }
        }
    ]
}
0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?