送信元IPでIAMアクションを拒否する、NotIpAddressの書き方

  • AWS
  • IAM

この記事は、構成と文章の整理に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アドレスが保持されるため、このポリシーでは拒否されない、とドキュメントに明記されていた。この辺りは実機で確認していない。