概要
指定のIAMロールを持ったリソースからしかアクセスできないS3バケットポリシーを記載する
IAMロールIDの準備
バケットポリシーに設定するロールIDはAWS Consoleからは参照出来ないため、AWS CLIで取得する
$ rolename=ロール名
$ aws iam list-roles|jq -r '.Roles[]| select (.RoleName == '\"$rolename\"')|.RoleId'|sed "s/$/:*/g"
AROAxxxxxxxxxxxxxxxxx:*
バケットポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "IPAllow",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::bucketname/*",
"Condition": {
"StringNotLike": {
"aws:userid": [
"AROAxxxxxxxxxxxxxxxxx:*", #許可するロールのロールID
"AROAxxxxxxxxxxxxxxxxx:*"
]
}
}
}
]
}
appendix
指定IPもしくは指定ロールからのアクセスを許可する場合のバケットポリシー
参考:指定のIPからしかアクセスできないs3バケットポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "IPAllow",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::bucketname/*",
"Condition": {
"StringNotLike": {
"aws:userid": [
"AROAxxxxxxxxxxxxxxxxx:*", #許可するロールのロールID
"AROAxxxxxxxxxxxxxxxxx:*"
]
},
"NotIpAddress": {
"aws:SourceIp": [
"111.111.111.111/32", # 許可するIPアドレス
"222.222.222.222/32"
]
}
}
}
]
}