AWSマネジメントコンソール操作を特定IPのみに制限する&拒否ポリシーを重ねがけするとどうなる?【AWS】
AWSマネジメントコンソールへのログインを、特定のIPアドレスからのみに制限する方法を検証してみました。IAMポリシーを利用することで簡単に実現できます。
記事の目次
IP制限用ポリシーの作成
まずはIP制限を行うためのIAMポリシーを作成します。
ポリシー名は deny-access-ip とします。
以下のポリシーでは、指定したIPアドレス以外からのアクセスをすべて拒否(Deny)する設定になっています。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": "*",
"Resource": "*",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": [
xxx.xxx.xxx.xxx/32"
]
}
}
}
]
}
※自分のGIPは下記で確認できます
参考)CMANのIPアドレス確認
ユーザーにポリシーをアタッチ
作成したポリシーをIAMユーザー(例:switch-user)にアタッチします。
その後、AWSマネジメントコンソールへログインしてみます。

設定したIPアドレスからログインした場合は、問題なくコンソールにアクセスできます。
許可されていないIPからログイン
別のIPアドレスからログインした場合、
AWSマネジメントコンソールにはログインできるものの、リソースを閲覧できない状態になります。
これはポリシーによって すべてのアクションがDenyされているためです。
許可IPを追加する場合
許可するIPを追加する場合は、以下のように aws:SourceIp にIPアドレスを追加します。
"aws:SourceIp": [
"xxx.xxx.xxx.xxx/32",
"yyy.yyy.yyy.yyy/32"
]
検証:IP制限ポリシーをもう1つ追加した場合
通常は既存ポリシーを修正すればよいのですが、既存リソースを変更したくないケースもあると思います。
そこで今回は検証として、もう1つIP制限ポリシーを作成してユーザーにアタッチした場合の挙動を確認してみました。(理想は追加したアタッチポリシーと既存のアタッチポリシーのIPで操作できたい)
イメージとしては以下のように、2つのポリシーを同時にアタッチします。
- deny-access-ip
- deny-access-add-ip
deny-access-ip ポリシー
deny-access-add-ip
追加ポリシーの作成
新しいポリシーを以下の内容で作成します。
ポリシー名は deny-access-add-ip とします。
作成後、先ほどと同様にアタッチします。
検証結果
結果として、どのIPアドレスからもアクセスできない状態になってしまいました。
これはIAMの評価ロジックにより、
- 片方のポリシーでは許可されていても
- もう片方のポリシーでDenyされてしまう
ため、最終的にDenyが優先されてしまうためと考えられます。
IAMでは AllowよりもDenyが優先されるというルールがあるため、このような挙動になります。
まとめ
AWSマネジメントコンソールのIP制限は、IAMポリシーを利用することで簡単に実装できます。
ただし、IP制限ポリシーを複数作成してしまうと、意図せずすべてのアクセスが拒否される可能性があります。
そのため、IP制限を追加する場合は
ポリシーを増やすのではなく、既存ポリシーを修正する方法がおすすめです。