セキュリティグループでリソースへのトラフィックを制御してみよう

セキュリティグループのルールを設定して、トラフィックを制御する方法を整理してみました。
2022.11.03

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、クラスメソッドのキム・ジェウク(Kim Jaewook)です。

今回は、セキュリティグループのルールを設定して、トラフィックを制御する方法を整理してみました。

セキュリティグループ

VPC を作成すると、デフォルトのセキュリティグループが使用されます。VPCごとに追加のセキュリティグループを作成することもできます。

インバウンドルールと、アウトバウンドルールを設定し、インバウンドトラフィックとアウトバウンドトラフィックを制御することができます。

例えば、EC2インスタンスへのアクセス(Inbound)と、インスタンスからのアクセス(Outbound)に対して、ファイアウォールの役割をしてくれるものがセキュリティグループです。

セキュリティグループを作成

セキュリティグループを作成するパターンは2つあります。

  • EC2インスタンスを作成する時、セキュリティグループも作成
  • EC2、VPCのコンソール画面で作成

EC2インスタンスを作成する時、セキュリティグループを作成する方法は、イメージの通りEC2を作成する画面から「セキュリティグループをさ作成する」を選択して作成できます。

2つ目の方法は、まず、VPCのコンソール画面から「セキュリティ」→「セキュリティグループ」に入り「セキュリティグループを作成」をクリックすることで、作成できます。

また、EC2のコンソール画面から「ネットワーク&セキュリティ」→「セキュリティグループ」に入り「セキュリティグループを作成」で作成できます。

セキュリティグループの作成画面に入ると、イメージの通りになります。

  1. セキュリティグルームの名前を入れます。名前は変更できませんので、注意ください。
  2. セキュリティグルームの説明を入れます。説明も「セキュリティグループ名」と同じく、作成した後には変更できませんので注意ください。
  3. VPCを選択します。

セキュリティグループのルールはセキュリティグループを作成する時も設定可能ですし、作成後にも設定可能です。

  1. インバウンドルールを設定します。(基本何も設定されてません。)
  2. アウトバウンドルールを設定します。(基本フルオープンしたままです。)
  3. タグを設定します。(作成後にも設定可能です。)

セキュリティグループのルールを設定

インバウンドルールを設定したい場合は

  1. セキュリティグループを選択します。
  2. 「インバウンドルール」をクリックします。
  3. 「インバウンドのルールを編集」をクリックします。

「ルールを追加」をクリックします。

まず「タイプ」で許可するプロトコルのタイプを選択します。

外部からRDPでEC2インスタンスに接続したので、RDPを選択します。

タイプを選択すると、プルトコルトポート範囲が設定されます。

カスタムTCP、カスタムTCPはユーザがポート範囲を設定できます。

カスタムICMP - IPv4、カスタムプロトコルはユーザがプロトコルを設定できます。

最後にソースを選択します。

EC2インスタンスに接続を許可するIPアドレスを入れます。

確認してみると、問題なく、インバウンドルールが設定されました。

このインバウンドルールで、設定したソースからEC2インスタンスにRDP接続ができます。

アウトバウンドルールの設定もインバウンドルールの設定と同じです。

しかし、アウトバウンドルールは基本フルオープンになっていますので、特別な状況ではないと触る必要はありません。

アウトバインドルールの設定を含めた、さまざまなユースケースのセキュリティグループのルールに対しては、下記のドキュメントをご参考ください。

例えば、アウトバウンドを設定する状況で、SSMを使用するとしたら、必ず、HTTPSを許可する必要があります。

HTTPSを設定せずにSSMのアクセスをしてみると、イメージの通りエラーは発生します。

アウトバウンドルールで、HTTPSを設定すると

問題なくSSMのアクセスができます。

SSMアクセスの条件に対しては、下記のドキュメントをご参考ください。

しかし、EC2インスタンスから「www.google.com」にpingを投げてみると、アウトバウンドにICMPが設定されてないので、エラーが発生します。

アウトバウンドルールにICMPを追加します。

その後「www.google.com」にpingを投げてみると、問題なく返信が戻ってきます。

参考