BFT名古屋 TECH BLOG

日々の業務で得た知識を所属するエンジニアたちがアウトプットしていきます。

【AWS】特定IPアドレスからのみAWSの操作と情報閲覧をできるようにする方法

こんにちは! BFT名古屋支店の佐野です

少し前よりAWSに関連したお仕事をする機会が多くなっておりますが、
その中でも「運用しているAWS環境へのアクセスを一部からのみに限定したい」という相談が多く見受けられます。

今回は、そのひとつである
「特定のIPアドレス以外からIAMユーザーとしてAWSマネジメントコンソールにログインした際の機能を制限したい」
という相談への回答についてご紹介させていただきます。


はじめに:AWSマネジメントコンソールへのアクセスを制限することはできるのか

まず「特定のIPアドレスを経由した状態でのみIAMユーザーとしてコンソールにログインできるようにする」というのはできません。
ログインそのものに関してはAWS側で制御できる項目がないためです。
今後ログインの制御が可能となる機能が追加される可能性が無いとは言えませんが、現状においては不可能となっています。

なので万が一アカウントID、IAMユーザー名、パスワードが全て漏洩してしまった場合は、どうあってもログインされてしまうことになります。
しかしログイン後におけるAWSリソースの閲覧や操作を制限することは、ログイン先のIAMユーザーに制限用のポリシーをアタッチすることで実現できます。
今回はそのポリシーの作成と、作成したポリシーを実際にIAMユーザーにアタッチするとどうなるか、をお伝えします。


接続元のIPアドレスによってAWSの閲覧や操作を制限するポリシーの作成

 まず「特定のIPアドレス以外からIAMユーザーにログインした場合、全てのAWSサービスの情報の閲覧と操作を制限する」ポリシーを作成します。
 手順は以下の通りになります。

  1. AWSマネジメントコンソールから、IAMのコンソールを開きます。
  2. 左側のメニューから「ポリシー」を選択します。
  3. 「ポリシーの作成」を選択します。
  4. JSON」タブを選択し、以下の構文を記述します。その後「ポリシーの確認」を選択します。
    ※xxx.xxx.xxx.xxx/xxの部分は、情報の閲覧と操作を許可するIPアドレスレンジを入力してください。
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "*",
            "Resource": "*",
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": "xxx.xxx.xxx.xxx/xx"
                },
                "Bool": {
                    "aws:ViaAWSService": "false"
                }
            }
        }
    ]
}

その後、作成するポリシーの名前と説明を入力したら「ポリシーの作成」を選択します。
これでポリシーの作成は完了になります。


作成したポリシーについて

先の手順で作成したポリシーは、簡単に説明すると以下の要素を持っています。

  • このポリシーを持つユーザーは、全ての権限を全てのAWSリソースで行使できない。(操作も閲覧もできない)
  • 指定されたIPアドレスからログインした場合は、このポリシーを適用しない。(例外となる)

以上の要素を持つため、このポリシーをIAMユーザーに関連付けることで、特定のIPアドレス以外からIAMユーザーにログインされたとしても情報の閲覧や操作を防ぐことができます。

例えば、このポリシーを持つIAMユーザーに特定のIPアドレス以外からログインした場合、EC2のコンソールでは以下のように情報の閲覧ができなくなり、新たにインスタンスを作成することもできなくなります。

f:id:bftnagoya:20201125163719p:plain


IAMユーザーにポリシーをアタッチする。

ポリシーを作成後、IAMユーザーにアタッチすることで特定のIPアドレス以外からログインした場合にすべての操作と情報の閲覧が制限されます。
注意点として、操作環境が「特定のIPアドレス」に含まれていない場合にログイン中のIAMユーザーに今回作成したポリシーをアタッチすると、すぐに制限が適用され、以降変更操作や情報の閲覧ができなくなります。
本記事の内容をテストする際は、テスト用のIAMユーザーを作成し、そちらにポリシーをアタッチする形で行なうことをお勧めします。

  1. IAMのコンソールの左側のメニューから「ポリシー」を選択します。
  2. 今回作成したポリシーを選択します。
  3. 「ポリシーの使用状況」タブを選択し、「アタッチ」を選択します。
  4. ポリシーをアタッチするIAMユーザーを選択し、「ポリシーのアタッチ」を選択します。

ポリシーをアタッチ後、「特定のIPアドレス」以外のIPアドレスから今回作成したポリシーをアタッチしたIAMユーザーにログインし、AWSサービスの操作と情報の閲覧ができなくなっていることを確認してください。


終わりに

 「特定の場所でのみAWSの環境を操作できるようにする」が要件となるシチュエーションは多い印象がありますので、そういった場合にこの方法を試していただければと思います。