AWS PolicyDocumentでのワイルドカード
PolicyDocumentでワイルドカードを使って部分指定しようとしたところ失敗した。
AWSでポリシーを作成しアクセス制御を行う際、
Action
で動作を、Principal
で操作するユーザやロールを、Resource
で操作対象のリソースを、
それぞれ指定することができる。
PolicyName: MyS3Policy
PolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: Allow
Action:
- s3:PutObject
- s3:GetObject
Principal:
AWS:
- arn:aws:iam::123456789012:user/username
Resource:
- arn:aws:s3:::examplebucket/exampledir
例えばこんなPolicyを作ると、「arn:aws:iam::123456789012:user/username」のarnを持つユーザーが、「arn:aws:s3:::examplebucket/exampledir」のリソースに対し、PutObject
とGetObject
できるようになる。
このあたりの記載は*
(ワイルドカード)を使って「何でも」を指定できる。
Statement:
- Effect: Allow
Action: '*'
Principal:
AWS: '*'
Resource: '*'
Action
やResource
は、文字列中に*
を入れて部分指定をすることもできる。
ただし、Principal
で同じことをしようとするとエラーになる。
Statement:
- Effect: Allow
Action:
- s3:Put*
- s3:Get*
Principal:
AWS:
# - arn:aws:iam::123456789012:user/user* <= エラーになる
- arn:aws:iam::123456789012:user/user1
- arn:aws:iam::123456789012:user/user2
- arn:aws:iam::123456789012:user/user_admin
Resource:
- arn:aws:s3:::examplebucket/*
Principalは*
で全て許可するか、そうでない場合はきちんと記述しないといけない。
先日リソースを作ろうとして失敗した時に初めて知りました。