【小ネタ】セキュリティグループにS3向けのアウトバウンドルールを設定する方法

こんにちは、城岸です。

セキュリティグループのアウトバウンドルールは基本的には全て許可で問題ないですが「セキュリティポリシー上どうしても制限が必要」ということもあるのではないでしょうか。
今回は、そんな時に役立つ「S3向けのアウトバウンドルールを簡単に設定する方法」を紹介したいと思います。

S3プレフィックスリストID確認

コマンドラインを実行し対象リージョンのS3プレフィックスリストIDを確認します。東京リージョンではpl-61a54008がS3のプレフィックスリストIDであることが確認できます。

$ aws ec2 describe-prefix-lists
{
    "PrefixLists": [
        {
            "PrefixListName": "com.amazonaws.ap-northeast-1.dynamodb",
            "Cidrs": [
                "52.94.8.0/24"
            ],
            "PrefixListId": "pl-78a54011"
        },
        {
            "PrefixListName": "com.amazonaws.ap-northeast-1.s3",
            "Cidrs": [
                "52.219.0.0/20",
                "54.231.224.0/21",
                "52.219.16.0/22",
                "52.219.68.0/22"
            ],
            "PrefixListId": "pl-61a54008"
        }
    ]
}

設定/確認

対象のセキュリティグループでアウトバウンドを指定し、送信先に先ほど確認したプレフィックスリストIDを設定します。許可するプロトコルはhttpsになります。

このアウトバウンドのみ設定している状態で、対象のインスタンスからS3にアクセスしてみます。

# 通常のhttpsは外部へアクセスできない
$ curl https://www.google.co.jp/
curl: (7) Failed to connect to www.google.co.jp port 443: Connection timed out
# AWS-CLIのs3コマンドは実行可能
$ aws s3 ls
2017-12-20 12:42:06 XXXXXXXXXXXXXXXXXXXXX-bucket

まとめ

S3にはアクセスしたいけどアウトバウンドは制限したいという機会は少なからずあるのではないでしょうか。 そのような時にエンドポイントのIPアドレスを意識することなくS3にアクセスできるのは非常に便利ですね。

参考

セキュリティグループの変更