今回は、OCI(Oracle Cloud Infrastructure)のネットワーク・セキュリティ機能であるNSG(ネットワーク・セキュリティ・グループ)とSL(セキュリティ・リスト)の違いと使い分けについてご紹介いたします。
はじめに
NSGとSLは、共にVCN(仮想クラウド・ネットワーク)内のサービスに対して仮想ファイアウォール機能を提供するサービスです。
両サービスは、クラウド環境におけるネットワークセキュリティを確保するための重要な役割を担っていますが、私自身『どういう違いがあるのか?』『実際の設計時はどちらを使えば良いか?』で悩んだ経験があります。
そこで、これらのサービスの違いと使い分けについて、自身の学びを込めて皆様に共有したいと思い、この記事を執筆することにしました。
NSGとSLの概要
まずは、NSGとSLの概要と題しまして両サービスで共通する部分の説明となります。
両サービスで共通しているのが、仮想ファイアウォール機能を利用するためにセキュリティ・ルールを設定するという部分になります。
また、設定するセキュリティ・ルールもイングレス(外から内への通信)/エグレス(内から外への通信)という2つの許可ルールという点で共通しております。
イングレス/エグレスのセキュリティ・ルールは、それぞれ以下の設定項目となっています。
イングレス・ルール
- 方向
- ソース・タイプ
- ソース
- IPプロトコル
- ソース・ポート範囲
- 宛先ポート範囲
- 説明
エグレス・ルール
- 方向
- 宛先タイプ
- 宛先
- IPプロトコル
- ソース・ポート範囲
- 宛先ポート範囲
- 説明
NSGとSLの違い
主題の1つであるNSGとSLの違いについて説明となります。
最も重要な違いは、設定したルールの適用範囲となります。
具体的には下記の通りとなります。
※1:仮想ネットワーク・インターフェース・カード。VCNに接続する為に、VCN内のリソースごとに割り当てられているNIC。
例えば、以下のような構成でNSGとSLを設定した場合、それぞれのサービスに設定されるNSGとSLは次の表のようになります。
サービス | NSG | SL |
---|---|---|
コンピュート.1 | NSG.1 | SL.1 |
コンピュート.2 | NSG.2 | SL.1 |
コンピュート.3 | NSG.1 | SL.1 |
データベース | NSG.3 | SL.2 |
オブジェクト・ストレージ | - | - |
上記の通り、SLはサブネットごとに設定され適用範囲はサブネット内のみとなり、NSGは各サービスに設定され適用範囲も設定されたサービスごととなります。
また、NSGとSLはVCN内の仮想ファイアウォールであるため、VCN外のサービス(オブジェクト・ストレージなど)には適用されません。
NSGとSLの使い分け
では、実際にNSGとSLをどう使い分けるかについての説明となります。
使い分けについて公式サイトでは、以下の通り基本的にはNSGの利用を推奨しております。
- NSGでは、VCNのサブネット・アーキテクチャをアプリケーションのセキュリティ要件から分離できるため、セキュリティ・リストのかわりにNSGを使用することをお薦めします。
- Oracleでは、将来の拡張機能を実装するときに、セキュリティ・リストよりもNSGを優先する予定のため、NSGの使用が推奨されます。
- NSGをまだサポートしていないリソース・タイプの場合は、セキュリティ・リストを引き続き使用して、それらの親リソース内外のトラフィックを制御します
参考:Oracle Cloud公式サイト:セキュリティ・ルール
上記の内容を踏まえた使い分けとして、基本はNSGを利用しNSGをサポートしていないサービスはSLを利用するというのが良いとされております。
私自身もNSGとSLの使い分けは、上記公式の推奨通りの設定の使い分けで構築を行っております。
注意点
使い分けで説明したように、基本的にはNSGを利用するのが良いとされますが、SLも併用した場合に注意点があります。
それは、NSGとSLで設定するセキュリティ・ルールはどちらもホワイトリストで設定されるため、NSGとSLの両方が設定されたサービスでは、NSGとSLのどちらかのセキュリティ・ルールで許可されると通信が許可されてしまう点です。
例えば以下のように設定すると、予期しない通信が許可されてしまいます。
- 行いたい設定
オンプレミス環境からSSH接続で踏み台サーバ経由でAPサーバへのSSH接続
・行った設定
NSG/SL |
設定内容 |
---|---|
NSG.1 | コンピュート.1からのSSH接続の許可 |
SL.1 | オンプレミス環境からのSSH接続の許可 |
・許可されてしまう予期しない通信
オンプレミス環境からコンピュート.2へのSSH接続の許可
これは、コンピュート.1向けに設定したSL.1セキュリティ・ルールが、同じサブネット内のコンピュート.2にも適用されてしまい、予期しない通信であるオンプレミス環境からコンピュート.2へのSSH接続が許可されてしまいます。
公式で推奨しているようにNSGでの設定を優先していれば、上記例のような状況には陥りませんが、構成によってはNSGとSLを同時に設定する事になる場合もございます。
注意点として留めておいていただけますと、インシデントの防止に繋げることができます。
まとめ
最後に本記事のまとめとなります。
NSGとSLは、設定対象が異なることで、セキュリティ・ルールが適用される範囲に違いがあります。
具体的には、NSGはVNICレベル、SLはサブネットレベルでセキュリティ制御を行います。
推奨される使い分け方は、基本的にNSGでの設定を行い、NSGが対応していないサービスがある場合にのみSLを利用することです。
以上が、OCIにおけるNSGとSLの違いと使い分けのご紹介となります。
本記事が、皆さまのお役に立てれば幸いです。