AWS管理コンソールにIP制限をかける


AWS管理のセキュリティの向上

AWSの管理コンソールに対して社内IPからの制限をかけることにした。これによりAccessKey/SecretKeyが万が一漏れても社内IPからしか接続できないためセキュリティの向上を行うことができる。
ただし、デメリットもあり会社が入っている建物が定期点検のためにルータを落としたりする場合は一切接続ができなくなってしまうのでいくつかのアカウントはIP制限をしないようにする必要がある。

グループに適用する

一つ一つのユーザに対してポリシーをアタッチするのはナンセンスなためグループを作成してそのグループに所属したメンバーはIP制限が適用されるようにする。

ポリシーの作成

以下のポリシーを作成する。 aws:SourceIpで許可するIPを記載する。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AdministratorAccess",
            "Effect": "Allow",
            "Action": "*",
            "Resource": "*"
        },
        {
            "Sid": "SourceIPRestriction",
            "Effect": "Deny",
            "Action": "*",
            "Resource": "*",
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": [
                        "111.222.333.444/32",
                        "1.111.222.333",
                        "2.111.222.333"
                    ]
                }
            }
        }
    ]
}

ロールの作成

適用なロールを作って上記で作成したポリシーを適用する。

グループの作成

グループを作成してロールを適用する。

メンバーを参加

メンバーをグループに参加させる。

確認してみる

AWSの管理コンソールに対してかけたIP以外からログインしてみるとログイン後、以下のようなAPIエラーが出る。

次にAWS CLIでS3コマンドを叩いてみる

# aws s3 ls
An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied

次に社内からアクセスすると上記のようなエラーが出ないことを確認できた。