接続元IPアドレス制限されたIAMユーザが操作中に別IPアドレスになった場合

こんにちは。SCSKの谷です。

AWSへのアクセスを社内からのみに制限する際などに用いられる方法の一つとして、IAMポリシーでの接続元IPアドレス制限があります。
では、社内でAWSへアクセスしたIAMユーザがそのままPCを社外へ持ち出し別IPになった場合、AWSの操作は引き続き行えるのか?それとも行えなくなるのか?

本記事では、上記疑問について検証・解説していこうと思います。

はじめに

IAMポリシーでの接続元IPアドレス制限

IAMユーザでAWSリソースの操作を行う際に、以下のようなIAMポリシーを付与することで、接続元のIPアドレスを制限することができます。

以下の例では”aws:SourceIp”に記載されている”192.0.2.0/24″と”203.0.113.0/24″のIPアドレスから接続した場合のみ、AWSの操作を行うことができます。

{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Deny",
        "Action": "*",
        "Resource": "*",
        "Condition": {
            "NotIpAddress": {
                "aws:SourceIp": [
                    "192.0.2.0/24",
                    "203.0.113.0/24"
                ]
            }
        }
    }
}

※参考:AWS: 送信元 IP に基づいて AWS へのアクセスを拒否する – AWS Identity and Access Management

疑問:もし接続元IPが操作中に変わったら?

IPアドレス制限されたIAMユーザは正規の指定されたIPからアクセスすることで、AWS上の操作を行うことができます。

しかし、もし接続元IPアドレスがAWSコンソール操作中に変わってしまった場合(例えば社内でコンソールへログインし操作を行っていたが、その後コンソールの画面はそのままに自宅に移動し引き続き操作を続けた場合)、その後の操作は制限されるのか、、?
それとも、ログインには成功しているのでログイン時の情報をもとに自宅でもそのまま操作ができてしまうのか、、?

上記疑問について、どちらの動作となるのか検証していこうと思います。

検証

検証方法

以下IAMポリシーを付与したIAMユーザを作成します。
(操作確認のためにS3の操作権限を付与しています。)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "*",
            "Resource": "*",
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": "<社内IPアドレス>"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": "*"
        }
    ]
}

上記IAMユーザを用いて、以下のパターンでS3の操作ができるか試してみます。

  • 社内(指定のIP)からアクセス
  • 社外(指定外のIP)からアクセス
  • 社内でアクセス → 社外へ持ち出して操作

検証結果

社内(指定のIP)からアクセス

まずはシンプルに社内からアクセスしてみます。
当然ながらAWSコンソールでS3の操作を行うことができました。

社外(指定外のIP)からアクセス

次に社外(IAMポリシーで指定していないIPアドレス)からアクセスしてみます。
この場合、AWSコンソールへのログイン自体はできますが、S3の操作を行うことはできませんでした。

→IAMポリシーの”Condition”句のIPアドレス制限がしっかりと機能していることを確認。

社内でアクセス → 社外へ持ち出して操作

本題です。
社内でAWSコンソールへアクセスしS3の画面が見えている状態から、コンソール画面はそのままに社外へPCを持ち出し接続元IPが変わった状態でS3の操作ができるのかを試してみます。

結果としては、社外(指定外のIP)から操作を続けようとすると操作が拒否されるようになっていました!

■社内からアクセスしたときに見えるS3の画面

■上記画面のまま社外へ移動し、画面更新をした結果

 

解説

操作ができなくなった理由

AWSのIAMポリシーは、AWSコンソールでの操作やAPIコールなど、リクエストが発生するたびに評価されるようになっています。
そのため、一度サインインに成功したからといって、その後のすべての操作が許可されるわけではないようです。

今回の検証では以下のようなシナリオとなり、操作ができなくなっています。

  1. 社内からAWSコンソールへアクセスしS3を操作(社内IP
    →社内IPでAWSへのリクエストが評価されるため操作可能
  2. 社内から社外へ移動(社内IP社外IP
  3. 社外から引き続きS3を操作(社外IP
    →社外IPでAWSへのリクエストが評価されるため操作できない

<ポイント> IAMポリシーはリクエスト毎に評価される!

 

まとめ

今回は社内アクセスのみ許可された(接続元IPアドレスが制限された)IAMユーザが、社内でAWSコンソールへアクセスした後にPCを社外へ持ち出して引き続き操作が可能なのかを検証しました。

結果として、社外へ持ち出した(=接続元IPアドレスが変わった)時点でAWSの操作はできなくなるようです。
→IAMポリシーはリクエスト毎に評価されるため。

検証結果から、社内でアクセスしたユーザが社外へPCを持ち出して自由に操作することはできず、IAMポリシーによる操作場所の制限が行えることがわかりました。
これで、もし悪意のあるユーザがいたとしても社外での操作を制限することができますね。

著者について

AWS歴3年 まだまだ勉強中のエンジニア

Junya Taniをフォローする

クラウドに強いによるエンジニアブログです。

SCSKクラウドサービス(AWS)は、企業価値の向上につながるAWS 導入を全面支援するオールインワンサービスです。AWS最上位パートナーとして、多種多様な業界のシステム構築実績を持つSCSKが、お客様のDX推進を強力にサポートします。

AWSクラウド
シェアする
タイトルとURLをコピーしました