S3のバケットは、コンソール上でリードオンリーにする権限に設定することができますが、リードオンリーの場合、bucketのファイルがすべて見えてしまいます。
不要なbucketの中身を見せたくない場合には、指定したbucketをリストもできない権限を設定にしてみました。

元々のS3readonly

{
 "Statement": [
  {
   "Action": [
    "s3:List*",
    "s3:Get*"
   ],
   "Effect": "Allow",
   "Resource": "*"
  }
 ]
}

特定のbucket(hoge.buket.name)だけを見れないように指定したIAMユーザーのS3権限にDenyを指定するとhoge.buket.nameを選択しても中身が見れないようになります。
Denyの指定は、後から設定することが可能です。

{
 "Statement": [
  {
   "Action": [
    "s3:List*",
    "s3:Get*"
   ],
   "Effect": "Allow",
   "Resource": "*"
  },
  {
   "Action": [
    "s3:List*"
   ],
   "Effect": "Deny",
   "Resource": "arn:aws:s3:::hoge.buket.name"
  }
 ]
}

色々な組み合わせを設定することができるので、また何かのニーズがあったら様々なパターン試してみようと思います。

こちらの記事はなかの人(kenjionsoku)監修のもと掲載しています。
元記事は、こちら