Allow-NotAction
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_policies_elements_notaction.html
NotAction
で指定したアクションを除くすべてのアクションを許可する。NotAction
は、指定したリソースに対して明示的に指定されないすべてのサービス・アクションと一致するため、意図した以上のアクセス許可をユーザーに付与する結果になる場合がある。
例えばこうすると、s3:DeleteBucket
以外のすべてのサービスでのすべてのアクションが許可される。アカウント情報の変更とかも含め(!)、Allow-Action
の扱いになってしまう。
"Effect": "Allow",
"NotAction": "s3:DeleteBucket",
"Resource": "*",
バケット削除以外のすべてのS3アクションを許可したい という意図であれば、以下のようにリソース指定する。
"Effect": "Allow",
"NotAction": "s3:DeleteBucket",
"Resource": "arn:aws:s3:::*",
Deny と NotAction
https://dev.classmethod.jp/articles/notaction-and-notresource-in-iam-policy-statement/
ポリシーを複数組み合わせて使う前提で考える。
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_policies_evaluation-logic.html
- Deny: 絶対拒否
- Allow-NotAction かつ Allow-Action: 許可
- Allow-NotAction: 拒否
- Allow-Action: 許可
- 明示なし: 拒否
ので Allow-NotAction でガバ開けすると Deny でしか制限できなくなってリスキーと。基本的にはプリセットの標準ポリシーを使っていくのがよいのですが、経緯が…あるので。