前々回の記事から、Amazon VPCについて基本的なところを勉強しています。
今回はVPCのアクセス制御関連として、
セキュリティグループ、ネットワークACL、ルートテーブルの概要を見ていきます。
前々回、前回の記事はこちら。
もくじ
4.ルートテーブル
1.Amazon VPCのアクセス制御の方法
Amazon VPCのアクセス制御には、以下の3つの方法がある。
アクセス制御方法 | 説明 |
---|---|
セキュリティグループ | ポートフィルタリング機能 (対象単位:VPC内の個々のインスタンス) |
ネットワークACL | ポートフィルタリング機能 (対象単位:サブネット) |
ルートテーブル | いわゆるルーティング機能 |
以降、順に概要を説明する。
2.セキュリティグループ
セキュリティグループは、ポートフィルタリングによって、通信のアクセス可否を制御する機能である。
VPC毎に作成でき、VPC内のリソース(インスタンス)に関連付けて制御できる。
機能自体はOSのファイアウォール機能のイメージだが、
OSと違って、リソースごとに個別設定するのではなく、
設定をあらかじめ定義して、その定義内容を各リソースに適用する。
セキュリティグループの主な特徴は以下の通りである。
特徴 | 説明 |
---|---|
アクセス許可設定 | アクセスを許可するポートを登録する。 (登録のないポートはアクセスを拒否する) |
ステートフル | リクエスト送信時:通信相手からのレスポンスは、インバウンドのルールに関わらず許可する。 リクエスト受信時:通信相手へのレスポンスは、アウトバンドのルールに関わらず許可する。 |
デフォルトでは、以下の設定(ルール)が、セキュリティグループに適用されている。
デフォルトの状態から、必要に応じて、ルールを追加・削除することになる。
設定対象 | 設定内容 |
---|---|
インバウンドのルール | なし(=全てのインバウンド通信を拒否) |
アウトバンドのルール | 全てのアウトバンド通信を許可 |
また、セキュリティグループは、1つのリソースに対して、複数関連付けることができる。
その場合、各セキュリティグループのルールが集約され、1つのルールセットが作られる。
以上の内容を図にまとめると、以下のようになる。
3.ネットワークACL
ネットワークACLも、セキュリティグループ同様、ポートフィルタリングによって、通信のアクセス可否を制御する機能である。
セキュリティグループとの違いの1つは、制御の対象にある。
セキュリティグループは、VPC内の個々のリソースに対して設定を関連付けるものだったが、
ネットワークACLは、サブネット単位でアクセス制御を行える。
その他、セキュリティグループと比較した、ネットワークACLの特徴は以下の通りである。
ネットワークACLの特徴 | ネットワークACLの説明 | セキュリティグループの特徴 |
---|---|---|
アクセス許可/拒否設定 | アクセスを許可するポート、拒否するポートを登録する。 (登録のないポートはデフォルト設定による) |
アクセス許可設定のみ |
ステートレス | リクエスト送信時:通信相手からのレスポンス可否は、インバウンドのルールに従って判定する。 リクエスト受信時:通信相手へのレスポンス可否は、アウトバンドのルールに従って判定する。 |
ステートフル |
表の通り、ネットワークACLはステートレス、セキュリティグループはステートフルの判定となる。
そのため、例えば、ネットワークACL、セキュリティグループとも「インバウンドは80番、443番ポートの通信可、アウトバンドは全て不可」と設定した場合、
ネットワークACLの設定により、80番ポートで通信してきた相手へのレスポンスは拒否されることになる。
VPCを新規作成すると、ネットワークACLが自動で設定される。
言い換えると、全てのサブネットにはネットワークACLが必ず関連付けられることになる。
自動設定されるネットワークACLは、インバウンド・アウトバンドとも全ての通信を許可する設定になっている。
設定を変更することもできるが、その場合、
拒否したいポートを指定するブラックリスト方式でのフィルタリングになる。
カスタムのネットワークACLを新規で作成し、サブネットに新たに関連付けることもできる。
ネットワークACLを新規作成した場合、最初はインバウンド・アウトバンドとも、全ての通信を拒否する設定となっている。
そのため、新規作成時は、許可したいポートを指定するホワイトリスト方式で、フィルタリングルールを追加していくことになる。
作成したネットワークACLは、複数のサブネットに関連付けることができる。
なお、1つのサブネットに対して、関連付けられるネットワークACLは1つだけである。
つまり、「サブネット:ネットワークACL=多:1」の関係になる。
4.ルートテーブル
AWSのルートテーブルの考え方は、一般的なルートテーブル(ルーティングテーブル/経路表)の考え方と大きく変わらない。
サブネットやゲートウェイからの通信について、宛先経路を判定するために用いられる。
VPCを新規作成すると、ルートテーブルが自動で設定される。
自動設定されたルートテーブルを「メインルートテーブル」と呼ぶ。
初期状態では、メインルートテーブルが、全てのサブネットに必ず関連付けられている。
ルートテーブルの設定は、メインルートテーブルの更新ではなく、
「カスタムルートテーブル」を新規作成し、ルールを追加することで行う。
ルートテーブルには、「送信先(宛先IPが所属するネットワーク情報)」と「ターゲット(トラフィックの次の送信先)」を設定し、通信を制御する。
ルートテーブルに一部重複するルートがある場合は、通常、プレフィックスが最長で一致する(=最も具体的なルートとなる)ルールが適用される。
(ここらへんは通常のルートテーブルと同じ概念である)
作成したルートテーブルは、複数のサブネット、インターネットゲートウェイ、または仮想プライベートゲートウェイに関連付けることができる。
*サブネットにルートテーブルを関連付ける場合
当該ルートテーブルは「サブネットルートテーブル」と呼ばれる。
1つのサブネットに対して、関連付けられるルートテーブルは1つだけである。
つまり、「サブネット:ルートテーブル=多:1」の関係になる。
*ゲートウェイにルートテーブルを関連付ける場合
当該ルートテーブルは「ゲートウェイルートテーブル」と呼ばれる。
ルートテーブルの実際の設定にあたっては、深い理解が必須となるため、
公式ドキュメントの熟読を特にお勧めする。
参考文献
本記事は、前回、前々回記事に引き続き、以下の2冊と、AWS公式ドキュメントを参考にしています。
どちらも基本を学ぶ上でお勧めなので、これからAWSを学ぼうという方はぜひ!(*^^*)
①図解即戦力 Amazon Web Servicesのしくみと技術がこれ1冊でしっかりわかる教科書
(小笠原種高著/技術評論社出版/2019年)
②AWSの基本・仕組み・重要用語が全部わかる教科書 (見るだけ図解)
(川畑光平、菊地貴彰、真中俊輝著/SB Creative出版/2022年)
今回は以上!