LoginSignup
1
0

【メモ】S3クロースアカウント・Denyバケットポリシー書き方(ロール&インスタンス)

Posted at

<前提>

Bアカウントのバケットのバケットポリシーは特定のuser・roleのみアクセスできるようにするため、Denyポリシーを利用している。

<登場人物>

Aアカウント

  • インスタンス用ロール
  • インスタンス

Bアカウント

  • アクセス対象バケット

<ロール・バケットポリシー>

Aアカウント

  • Bアカウントのバケットへアクセスできるポリシーを追加

Bアカウント

  • 下記のようにバケットポリシーを設定する。
バケットポリシー.json
 {
	"Version": "2012-10-17",
	"Statement": [
		{
			"Sid": "allowaaccountaccess",
			"Effect": "Allow",
			"Principal": {
				"AWS": [
					"arn:aws:iam::<アカウントID>:role/<ロール名>",
					"arn:aws:iam::<アカウントID>:user/<ユーザー名>"
				]
			},
			"Action": [
				"s3:Put*",
                "s3:List*"
			],
			"Resource": [
				"arn:aws:s3:::<Bアカウントバケット名>",
				"arn:aws:s3:::<Bアカウントバケット名>/*"
			],
			"Condition": {
				"StringEquals": {
					"s3:x-amz-acl": "bucket-owner-full-control"    ここは必須ではない ※ただ、付いている場合オプションを付けないと弾かれます。(--acl bucket-owner-full-control)
				}
			}
		},
		{
			"Effect": "Deny",
			"Principal": "*",
			"Action": "s3:*",
			"Resource": "arn:aws:s3:::<Bアカウントバケット名>/aa/11/*",
			"Condition": {
				"StringNotLike": {
					"aws:userid": [
					    "<ロールID>:<インスタンスID>",
					    "<ロールID>:<インスタンスID>"
					    ]
				},
				"StringNotEquals": {
					"aws:username": [
						"<user名>",
						"<user名>"
					]
				}
			}
		}
	]
}
1
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
1
0