Oracle Cloud Infrastructure(OCI)のファイアウォール機能の設定で少しつまづいたところがありました。
セキュリティリスト と ネットワークセキュリティグループ
OCIにはセキュリティリストとネットワークセキュリティグループ(NSG)という二つのファイアウォール機能が提供されています。
セキュリティリスト | ネットワークセキュリティグループ(NSG) | |
---|---|---|
割当先 | サブネット | インスタンス(NIC)やサービスリソース |
ルールで使用できるソース・宛先 | CIDR、サービス | CIDR、サービス、NSG |
ステートレス・ステートフル | 選択可能 | 選択可能 |
普段はAWSをメインで使用しているため、AWSでいうとセキュリティリストはネットワークACL、NSGはセキュリティグループのようなものだと解釈していました。
AWSのネットワークACLはサブネットレベルで制御するステートレスファイアウォール、セキュリティグループはインスタンス(NIC)レベルで制御するステートフルファイアウォールです。基本はセキュリティグループで十分ですが、ネットワークACLをうまく使うことで多層防御を構築することができます。
https://aws.amazon.com/answers/networking/vpc-security-capabilities/
OCIでは多層防御を提供する機能ではない
OCIでも両方利用することで多層防御を実装できるものと考えていたのですが、実際は異なっていました。セキュリティリストとNSGでは割当先は異なるものの、実際のファイアウォールのルール(セキュリティルール)の適用先はどちらもNICであり、両方のルールが合算されて適用されます。
セキュリティ・リストはインスタンスの仮想ファイアウォールとして機能し、イングレス・ルールおよびエグレス・ルールで使用可能なトラフィックのタイプを指定します。 各セキュリティ・リストはVNICレベルで適用されます。 しかし、セキュリティ・リスト「サブネット・レベルで」を構成します。つまり、特定のサブネット内のすべてのVNICが同じセキュリティ・リストのセットの対象になります。
先ほどの表に追加するとこうなります。
セキュリティリスト | ネットワークセキュリティグループ(NSG) | |
---|---|---|
割当先 | サブネット | インスタンス(NIC)やサービスリソース |
ルールで使用できるソース・宛先 | CIDR、サービス | CIDR、サービス、NSG |
ステートレス・ステートフル | 選択可能 | 選択可能 |
ルールの適用先 | NIC | NIC |
AWSに慣れた人がセキュリティリストをネットワークACLと同じものだと勘違いし、イングレスセキュリティルールを0.0.0.0/0で開放してしまうと重大な事故につながる可能性がありますので注意してください。
どちらをメインで使うか
OCIのドキュメントではNSGの利用を推奨しています。
基本的にNSGを利用し、セキュリティリストは意図しないポート開放を防ぐためにルールなし。一部NSGをサポートしていないサービスのみセキュリティリストで制御する、という形が良さそうに思いました。