はじめに

この記事では、NotActionに関する注意点を備忘録としてまとめたいと思います。

IAMポリシーで使用するNotActionとは

NotActionは、ポリシー内で特定のアクションのリスト以外の全てのアクションを指定するために使用されます。

NotActionをAllowする場合

NotActionに指定したアクション以外のアクションが許可されます。

NotActionをDenyする場合

NotActionに指定したアクション以外のアクションが拒否されます。

注意点① 「NotActionのAllow」と「ActionのAllow」のどちらが優先されるか

公式ドキュメントに記載されている通り、NotActionでAllowしたアクション(=Denyされたアクション)を同じポリシー内や他のポリシーでAllowした場合、該当のアクションへのアクセス許可が与えられてしまいます。

NotAction 要素と “Effect”: “Allow” をポリシー内の同じステートメントで使用したり、別のステートメントで使用したりすることに注意してください。NotAction は、指定したリソースに対して明示的に列挙または適用されないすべてのサービスおよびアクションと一致するため、意図した以上のアクセス許可をユーザーに付与する結果になる場合があります。

参考:IAM JSON ポリシー要素NotAction

注意点② 対応していないリソースタイプを指定した場合はAllow/Denyが作用しない

これはNotActionに限ったものではありませんが、アクションごとに指定可能なリソースタイプが規定されています。もし対応していないリソースタイプを指定した場合、記載が無効になりAllow/Denyが作用しません。

公式ドキュメントには、各サービスごとのアクション一覧が詳細に記載されており、その表には「リソースタイプ (* 必須)」という項目があり、リソースに指定可能なタイプが明記されています。この欄が空白の場合、アスタリスク(*)を指定する必要があります。

参考:Amazon S3 のアクション、リソース、条件キー

さいごに

この記事が誰かのお役に立てれば幸いです。