AWSのセキュリティグループとは? 設定上の注意やネットワークACLとの違いを解説
AWSのセキュリティグループとは、VPC内でAmazon EC2(仮想サーバー)などのリソースに適用できる仮想ファイアウォール機能です。通信のルールを定義するものであるため、AWS環境を安全に運用するにはセキュリティグループの知識が欠かせません。
この記事ではセキュリティグループの基本的な機能やルール、ネットワークACLとの違い、ベストプラクティスまで詳しく解説します。
この記事の目次
AWSセキュリティグループとは
AWSのセキュリティグループとは、VPC(Amazon Virtual Private Cloud:AWSの仮想ネットワーク)上に構築したAmazon EC2などのリソースに対して適用できる仮想ファイアウォール機能です。
セキュリティグループに関連付けられたリソースへのインバウンド・アウトバウンドのトラフィックを制御できます。インバウンドとは外部からEC2インスタンスへ向かう内向きの通信、アウトバウンドとはEC2インスタンスから外部へ出る外向きの通信を指します。
VPCを作成するとデフォルトのセキュリティグループが適用されますが、追加のセキュリティグループを作成することができます。セキュリティグループは作成されたVPC内のリソースにのみ適用できます。また、リソースには一つまたは複数のセキュリティグループを適用できます。
セキュリティグループの特徴
セキュリティグループの特徴は以下のとおりです。
- リソース単位(EC2インスタンスなど)で許可するインバウンド、アウトバウンドトラフィックを定義します。
- ホワイトリスト方式のため、許可ルールのみ指定可能です。
- 設定されたルールに序列はなく、すべて評価されます。ルールに載っていないものはすべて拒否されます。
- ステートフルのため、許可したトラフィックのレスポンスはルールにかかわらず流入できます。
セキュリティグループのルール
トラフィックを制御するルールは、以下の内容を指定して登録します。
- プロトコル:許可するプロトコルの種類(TCP/UDP/ICMP など)。
- ポート番号:許可するポート番号。単一あるいは範囲で指定することができます。
- Source(送信元)/Destination(送信先):許可するトラフィックの送信元(インバウンド)または送信先(アウトバウンド)。送信元/送信先は以下のいずれかの方法で指定できます。
- 単一のIPv4アドレス。/32プレフィクス長をつけて表記します。
- 単一のIPv6アドレス。/128プレフィクス長をつけて表記します。
- CIDRブロック表記のIPv4アドレスの範囲。
- CIDRブロック表記のIPv6アドレスの範囲。
- プレフィクスリスト(※複数のIPアドレスを指定したリスト)のID。
- プレフィクスリストには、ユーザが独自に指定するカスタマーマネージドプレフィクスリストと、AWSが提供するAWSマネージドプレフィックスリストがあります。
- セキュリティグループのID。
- 説明:最大255文字以内でルールの説明を追加することができます。
セキュリティグループのデフォルト設定
VPCを作成すると、「default」という名前のセキュリティグループが自動的に一つ作成されます。EC2インスタンスの起動時にセキュリティグループを指定しない場合、インスタンスは自動的にこのデフォルトのセキュリティグループが適用されます。デフォルトの設定は以下のとおりです。
- インバウンド:すべて拒否(ただし同じセキュリティグループが適用されたインスタンスからのみ許可)
- アウトバウンド:すべて許可
セキュリティグループの制限
セキュリティグループは追加料金なく無料で利用することができますが、作成可能なセキュリティグループの数、設定できるルールの数などに制限があります。デフォルトの制限数は以下の通りです。
デフォルト | 上限の拡張 | 詳細 | ||
① | 作成可能なセキュリティグループの数 | 2,500/1リージョンあたり | 可 | 個々のAWSアカウントVPCと共有VPCに適用されます。 |
② | 設定可能なルールの数 | 60/1セキュリティグループあたり | 可 | IPv4・IPv6それぞれ60個設定できます。 |
③ | ネットワークインターフェイスに紐づけられるセキュリティグループの数 | 5 | 可(上限16) |
いずれもAWSに申請をすることでデフォルトの値から最大数を増やすことが可能ですが、②セキュリティグループごとに設定できるルールの数と、③ネットワークインターフェイスに紐づけられるセキュリティグループの数をかけた(乗算した)値が1,000を超えることはできません。
つまり、デフォルトでは②60 × ③5 =300 になっていますが、この合計が1,000を超えない範囲であれば、セキュリティグループごとのルール数を60から200へ増やしたり、ネットワークインターフェイスに紐づけるセキュリティグループの数を5から10へ増やしたりといったことが可能です。
また、セキュリティグループのルール数については以下のようにカウントされます。
- IPアドレスをCIDRブロックで指定するルールは、1個としてカウントされます。
- 別のセキュリティグループを参照するルールは、サイズにかかわらず1個としてカウントされます。
- カスタマーマネージドプレフィックスリストを参照するルールは、プレフィックスリストの最大サイズでカウントされます。例えば、プレフィックスリストの最大サイズが20の場合、ルールは20個としてカウントされます。
- AWSマネージドプレフィックスリスト(AWSが作成と管理を行う、AWSサービスのIPアドレス範囲を指定したリスト)を参照するルールは、リストのウェイトに従ってカウントされます。例えば、Amazon CloudFrontのプレフィックスリストであればウェイトが55のため、ルールは55個としてカウントされます。
AWSマネージドプレフィックスリストのウェイトについては、こちらから確認できます。
参考:AWS「AWS マネージドプレフィックスリストの提供」https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/working-with-aws-managed-prefix-lists.html#available-aws-managed-prefix-lists(2023/4/10確認)
セキュリティグループとネットワークACLの違い
AWS VPCにおけるトラフィック制御として、セキュリティグループのほかにネットワークACL(アクセスコントロールリスト)があります。ここではネットワークACLの特徴とセキュリティグループとの違い、使い分け方について解説します。
ネットワークACLの特徴
ネットワークACLの特徴は以下のとおりです。
- VPC作成時に自動的に設定されるデフォルトのネットワークACLでは、すべてのインバウンドおよびアウトバウンドのトラフィックが許可されています。
- カスタムネットワークACLを作成し、サブネットに関連づけることでインバウンドおよびアウトバウンドのトラフィックを拒否または許可します。
- 1サブネットには1つのネットワークACLのみ関連づけることができます。
- ブラックリスト方式のため、許可・拒否ルールの両方が指定可能です。
- ステートレスのため、許可したトラフィックのレスポンスについても明示的に許可する必要があります。
- ルールには序列があり、優先度の高いものから順番に評価されます。当てはまるルールがあれば以降の優先度の低いルールは評価されないため、順番に注意する必要があります。
セキュリティグループ・ネットワークACLの違いを表にまとめると以下のとおりです。
セキュリティグループ | ネットワークACL | |
適用範囲 | リソース(インスタンス)単位 | サブネット単位 |
設定方法 | ホワイトリスト方式(許可のみ) | ブラックリスト方式(許可・拒否) |
設定効果 | ステートフル | ステートレス |
評価 | 序列はなくすべて評価される | 優先度順に評価される |
どちらが優先される?
適用範囲から分かる通り、ネットワークACLはサブネット全体に対して設定するもののため、影響範囲が大きくセキュリティグループよりも先に判定されることになります。つまり、インスタンス単位で動作するセキュリティグループで細かな設定をしていたとしても、ネットワークACLで拒否しているトラフィックはそもそもインスタンスに到達することができないため注意が必要です。
セキュリティグループとネットワークACLの使い分け
基本的には細かい単位で設定できるセキュリティグループで制御し、ネットワークACLは全開放とする場合が多いです。AWSの見解としても、「セキュリティグループのみを使用してインスタンスを保護できます。ただし、ネットワーク ACL は追加の防御レイヤーとして追加できます。」とドキュメント内で明言しています。
厳しいトラフィック要件が存在する場合や、サブネット単位で特定のIPアドレスを拒否したい場合はブラックリスト方式で拒否できるネットワークACLの利用が効果的な場合もあります。ただし運用面の負荷が上がり、両方の設定をより深く理解する必要があるため、導入の必要があるのかよく検討することをお勧めします。
セキュリティグループのベストプラクティス
セキュリティグループを活用して安全に運用するためのベストプラクティスについて紹介します。
必要最小限のセキュリティグループを作成する
セキュリティグループは複数作成できますが、必要以上に存在すると混乱を招き設定ミスを誘発してしまいます。エラーを防ぐために、セキュリティグループの数は必要最小限に絞りましょう。
特定のユーザのみ作成・変更を許可する
組織内の誰でもセキュリティグループを作成・変更できる状態だと、設定が乱立し混乱を招きます。ルールを設定し、特定のユーザやIAMロールのみ作成・変更を許可しましょう。
必要なポートだけ開放する
広範囲のポートを開放すると不正アクセス等のリスクが高まるため、必要最低限のポートのみ開放するようにします。
SSH・RDPのインバウンドは特定のIPアドレスのみ許可する
SSHやRDPなどのサーバー管理が可能なプロトコルへのインバウンドは、特定のIPアドレスのみ許可するなど、アクセスできる範囲を最小限に設定しましょう。すべて開放すると誰でもアクセスできてしまい、不正アクセスの要因となります。
セキュリティグループのユースケースを参照する
よく使われるセキュリティグループのルール設定例を、ユースケースとしてAWSが公開しています。例えばWebサーバーへのアクセス許可や、データベースとの接続、ローカルコンピュータからSSHする際の設定、Amazon EFSとの接続などが公開されているため、設定に自信がない場合はこちらを参考にしてみましょう。
参考:AWS「さまざまなユースケースのセキュリティグループのルール」https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/security-group-rules-reference.html#sg-rules-local-access(2023/4/10確認)
AWSのセキュリティ設定に不安がある時は
セキュリティグループはAWS環境へのアクセスを制御するセキュリティの基本機能です。不正アクセスなどの脅威を防ぐために、正しい設定が欠かせません。
もしセキュリティ設定に不安がある場合、専門業者へアウトソースすることも有効な手段です。アウトソースすることで、自社のリソースはコアの業務に集中することができるというメリットもあります。
ベアサポートは、AWSの初期構築から運用までワンストップでのサポートや、セキュリティ設定を含めた総合的な支援が可能です。AWSの構築や運用に課題をお持ちの場合は、無料のインフラ相談会も承っておりますのでぜひお気軽にご相談ください。
まとめ
AWSのセキュリティグループは、Amazon EC2などのリソースに対して適用される仮想ファイアウォール機能です。AWS環境を安全に運用するためのセキュリティの基本と言えます。ネットワークACLとの違いを理解し、正しく設定して活用しましょう。
もし「セキュリティ設定に不安がある」「インフラの構築・運用は任せたい」と感じている場合は、専門業者へアウトソースすることもおすすめです。課題をお持ちの際はお気軽にベアサポートまでご相談ください。