COLUMN

AWSアカウントへのアクセスを接続元IPアドレスによって制限する

こんにちは、荒井です。

「パブリッククラウドはインターネットを使ってどこからでもアクセスできるためセキュリティが心配・・・」「会社の建物からのみAWSにアクセス可能とする設定を行いたい・・・」という場面は多々あるのではないかと思います。

本日は、そんなお悩みを解決するためにAWSアカウントへのアクセスをIPアドレスによって制限する方法について、具体的に解説していきたいと思います。

NTT東日本では、AWSなどクラウドに関するお役立ち情報をメールマガジンにて発信していますので、ぜひこちらからご登録ください。

実現方法

まず、制約としてAWSコンソールへの「ログイン自体」を制限することはできません。

しかし、「ログインしても何も表示および操作できない状態にする」ということは可能です。

具体的には、ログインするIAMユーザーに設定するIAMポリシーに対して、「このIPアドレスでない場合は全ての操作を拒否(deny)する」という設定を行うことで、ログインしても何もできない状態にすることが可能です。

イメージとしては以下図のようなイメージです。

拒否条件は許可条件より強いため、どのような許可条件があったとしても拒否条件の方が適用され、全ての操作が不可能になります。

今回は、この設定方法について詳しく見ていきたいと思います。

NTT東日本では、AWSなどクラウドに関するお役立ち情報をメールマガジンにて発信していますので、ぜひこちらからご登録ください。

設定方法

設定は、大まかに「IAMポリシーの作成」および「IAMユーザーへのポリシー適用」の2つです。

それでは、それぞれ丁寧に見ていきましょう。

IAMポリシーの作成

まず、IPアドレスの制限を設定したいAWSアカウントにログインし、「IAM」ページから「ポリシー」を選択します。

「JSON」を選択し、以下の内容を記載してIAMポリシーを作成します。

IPアドレスの箇所については自身の環境に合わせて修正してください。

こちらのJSONは以下のAWS公式からも案内されています。

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

以下の例では、CIDR 範囲 192.0.2.0/24 または 203.0.113.0/24 以外からでない限り全ての操作が拒否されます。

なお、自身が使用しているグローバルIPアドレスの確認方法については、後述する「(補足)グローバルIPアドレスの調べ方」をご参考ください。

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

IAMユーザーへのポリシー適用

「IAM」ページから「ユーザー」を選択し、適用するIAMユーザーを選択します。

「許可を追加」を選択します。

先ほど作成したIAMポリシーを選択し、適用します。

以上で設定は完了です。

(補足)グローバルIPアドレスの調べ方

そもそものお話なのですが、グローバルIPアドレスの調べ方について簡単に解説します。

既にご存じの方については読み飛ばしていただければと思います。

グローバルIPアドレスを調べる

グローバルIPアドレスを調べる方法はいくつかありますが、一番簡単なものとしては以下のサイトのようなIPアドレスを確認できるサイトへアクセスする方法があります。

アクセス情報【使用中のIPアドレス確認】

なお、コマンドラインから以下のコマンドを実行することでも確認することが可能です。

curl -4 ifconfig.me

実行すると現在使用しているグローバルIPアドレスが表示されます。

グローバルIPアドレスのサブネットを調べる

グローバルIPアドレスを確認できたら、次にそのサブネットを確認します。

確認する方法はいくつかありますが、例えばWHOIS検索サービス(JPNIC)において確認するか、コマンドラインからWHOISを実行することで確認が可能です。

whois <グローバルIPアドレス>

実行すると以下のような結果が表示されます。

結果の内容によって確認する箇所は異なりますが、例えば”inetnum”という箇所からサブネットを判断することが可能です。

”inetnum”が以下のような結果である場合、inetnum: 203.0.113.0 - 203.0.113.255 という内容から /24 の範囲と判断することができます。

inetnum:        203.0.113.0 - 203.0.113.255
netname:        EXAMPLE-NET
descr:          Example ISP
country:        JP

なお、このwhoisコマンドはMicrosoftの公式ツールからも実行することが可能です。

https://learn.microsoft.com/en-us/sysinternals/downloads/whois

実際の動作

さて、では実際に設定した際の挙動を確認しましょう。

まずは、設定したIPアドレスと異なるグローバルIPアドレスを持つ環境からAWSマネジメントコンソールへログインしてみます。

このように、ログインはできますが権限がないため情報を取得できずにエラーが起きていることがわかると思います。

次に、設定したIPアドレスを持つ環境からAWSマネジメントコンソールへログインしてみます。

このように、ログイン後も問題なく情報が取得できており、権限を持っていることがわかります。

AWSアカウントへのアクセスをIPアドレスによって制限することができました。

NTT東日本では、AWSなどクラウドに関するお役立ち情報をメールマガジンにて発信していますので、ぜひこちらからご登録ください。

まとめ

パブリッククラウドはインターネットからアクセスするためセキュリティが心配、と思われるかもしれませんが、このように適切な設定をすることによってAWSアカウントにアクセスするIPアドレスを制限することが可能です。

オンプレミスからクラウド移行を検討している方や、クラウド上に大きなワークロードを実行しようとしている方の参考となれば幸いです。

ページ上部へ戻る

相談無料!プロが中立的にアドバイスいたします

クラウド・AWS・Azureでお困りの方はお気軽にご相談ください。