

送信元IPでIAMアクションを拒否する、NotIpAddressの書き方
この記事は、構成と文章の整理にAIを使っています。
あくまで読みやすくするための補助で、内容そのものをAIにすべて任せて書いているわけではありませんが、ところどころ相談しながら整えています。
会社のIP以外からのアクセスを拒否したい時、IAMポリシーのNotIpAddressを使う方法が公式ドキュメントに載っている。
使うポリシー
{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": { "NotIpAddress": { "aws:SourceIp": [ "192.0.2.0/24", "203.0.113.0/24" ] } } }}aws:SourceIp が指定したCIDR範囲(この例だと192.0.2.0/24と203.0.113.0/24)に含まれていない場合に、全アクションをDenyする内容になっている。
注意点
このポリシー単体では何も許可されない。あくまで「範囲外からのリクエストを拒否する」だけなので、実際にアクションを許可する別のポリシーと組み合わせて使う前提になっている。
あとEffect: Denyと否定条件(NotIpAddressのようなNot〜系)を同じステートメントで使う時は要注意らしい。否定条件を使うと、指定した条件を除くすべての条件で明示的に拒否される、という挙動になる。
もう一つ、AWSサービスが自分の代わりにリクエストを実行する「転送アクセスセッション」を使った場合は、元のリクエスト元のIPアドレスが保持されるため、このポリシーでは拒否されない、とドキュメントに明記されていた。この辺りは実機で確認していない。