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は*で全て許可するか、そうでない場合はきちんと記述しないといけない。
先日リソースを作ろうとして失敗した時に初めて知りました。

