inu

AWS IAM ポリシーの Allow-NotAction と評価論理

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 でしか制限できなくなってリスキーと。基本的にはプリセットの標準ポリシーを使っていくのがよいのですが、経緯が…あるので。