ネットワーキングの保護: VCN、ロード・バランサおよびDNS

セキュリティの推奨事項

ネットワーキング・サービスには、ネットワーク・アクセス制御を施行してVCNトラフィックを保護するための機能のコレクションがあります。これらの機能を次の表に示します。

VCN機能 セキュリティの説明
パブリック・サブネットとプライベート・サブネット VCNはサブネットにパーティション化することができます。従来、サブネットは可用性ドメインに固有でしたが、リージョン対応(リージョン内のすべての可用性ドメインを含む)にすることもできます。プライベート・サブネット内のインスタンスはパブリックIPアドレスを持つことはできません。パブリック・サブネット内のインスタンスは、必要に応じてパブリックIPアドレスを持つことができます。
セキュリティ・ルール セキュリティ・ルールによって、インスタンスへのネットワーク・アクセスを制御する、ステートフルおよびステートレス・ファイアウォール機能が提供されます。VCNにセキュリティ・ルールを実装するには、ネットワーク・セキュリティ・グループ(NSG)またはセキュリティ・リストを使用できます。詳細は、セキュリティ・リストとネットワーク・セキュリティ・グループの比較を参照してください。
ゲートウェイ

ゲートウェイによって、VCN内のリソースがVCN外の宛先と通信できるようになります。次のゲートウェイがあります:

ルート表ルール ルート表は、VCNのサブネットからVCN外部の宛先へのトラフィックのルーティング方法を制御します。ルーティング・ターゲットは、VCNゲートウェイまたはVCN内のプライベートIPアドレスです。
virtual-network-familyのIAMポリシー IAMポリシーによって、IAMグループに許可するVCNのリソースのアクセスとアクションが指定されます。たとえば、IAMポリシーを使用して、VCNを管理するネットワーク管理者に管理権限を付与し、通常のユーザーには対象範囲を絞り込んだ権限を付与できます。

Oracle Cloud Infrastructure Auditログを定期的にモニターして、VCNネットワーク・セキュリティ・グループ、セキュリティ・リスト、ルート表ルールおよびVCNゲートウェイに対する変更を確認することをお薦めします。

ネットワーク・セグメント: VCNサブネット

  • ネットワーク・アクセスを制御するために、VCNの階層化サブネット戦略を形成します。一般的な設計パターンでは、次のサブネット階層が使用されます:

    1. ロード・バランサ用のDMZサブネット
    2. NATインスタンス、侵入検出(IDS)インスタンス、Webアプリケーション・サーバーなど、外部からアクセス可能なホスト用のパブリック・サブネット
    3. データベースなど内部ホスト用のプライベート・サブネット

    様々なサブネットのインスタンスが通信するために特別なルーティングは必要ありません。ただし、VCNのネットワーク・セキュリティ・グループまたはセキュリティ・リストを使用して、異なる階層間のトラフィックのタイプを制御できます。

  • プライベート・サブネット内のインスタンスは、プライベートIPアドレスしか持つことができません。VCN内の他のインスタンスからのみアクセスできます。プライベート・サブネットにはセキュリティの重要性が高いホスト(たとえば、DBシステム)を配置し、パブリック・サブネット内のホストへの接続のタイプはセキュリティ・ルールを使用して制御することをお薦めします。VCNのセキュリティ・ルールに加え、多層防御として、ネットワーク・アクセス制御のためにiptablesやfirewalldなどホストベースのファイアウォールを構成してください。
  • VCNにサービス・ゲートウェイを追加すると、トラフィックがインターネットを通過せずに、プライベート・サブネットのDBシステムをオブジェクト・ストレージに直接バックアップできるようになります。そのようなトラフィックを有効にするには、ルーティング・ルールおよびセキュリティ・ルールを設定する必要があります。ベア・メタルまたは仮想マシンのDBシステムの詳細は、ネットワークの構成を参照してください。Exadata DBシステムの詳細は、Exadata Cloud Serviceインスタンスのネットワーク設定を参照してください。

ネットワーク・アクセス制御: VCNセキュリティ・ルール

  • VCNのセキュリティ・ルールを使用して、インスタンスへのネットワーク・アクセスを制限します。セキュリティ・ルールはデフォルトではステートフルですが、ステートレスとして構成することもできます。一般的に、高パフォーマンスのアプリケーションにはステートレス・ルールを使用します。ネットワーク・トラフィックがステートフルおよびステートレス両方のセキュリティ・リストと一致する場合は、ステートレス・ルールが優先されます。VCNセキュリティ・ルールの構成の詳細は、セキュリティ・ルールを参照してください。
  • コンピュート・インスタンスへの不正アクセスや攻撃を防ぐため、インターネットに対してオープンにする(0.0.0.0/0)のではなく、VCNセキュリティ・ルールを使用して、認可されたCIDRブロックからのSSHまたはRDPアクセスのみを許可することをお薦めします。セキュリティを追加するには、VCN API UpdateNetworkSecurityGroupSecurityRules (ネットワーク・セキュリティ・グループを使用している場合)またはUpdateSecurityList (セキュリティ・リストを使用している場合)を使用し、SSH (ポート22)またはRDP (ポート3389)アクセスを必要に応じて一時的に有効にすることができます。RDPアクセスの有効化の詳細は、インスタンスの作成RDPアクセスを有効にするにはを参照してください。インスタンス・ヘルス・チェックを実行する場合は、ICMP pingを許可するようにVCNセキュリティ・ルールを構成することをお薦めします。詳細は、pingを有効化するルールを参照してください。
  • 要塞は、インターネットからアクセスできないクラウド内のターゲット・リソースへのセキュアなパブリック・アクセスを提供する論理エンティティです。ベースはパブリック・サブネットに存在し、ユーザーをプライベート・サブネット内のターゲット・リソースに接続するために必要なネットワーク・インフラストラクチャを確立します。
  • VCNのネットワーク・セキュリティ・グループ(NSG)およびセキュリティ・リストによって、コンピュート・インスタンスに対するセキュリティが重要なネットワーク・アクセス制御が有効になります。NSGおよびセキュリティ・リストの意図しない変更または認可を防ぐことが重要です。認可されていない変更を防止するには、IAMのポリシーを使用して、ネットワーク管理者のみにNSGおよびセキュリティ・リストの変更を許可することをお薦めします。

セキュアな接続: VCNゲートウェイおよびFastConnectピアリング

  • VCNゲートウェイは、外部接続(インターネット、オンプレミスまたはピアリングVCN)をVCNホストに提供します。ゲートウェイのタイプのリストは、このトピックの前半にある表を参照してください。IAMポリシーを使用して、ネットワーク管理者のみがVCNゲートウェイを作成または変更できるように許可することをお薦めします。
  • すべてのインスタンスについてインターネット・アクセスの許可は慎重に検討してください。たとえば、機密性が高いデータベース・インスタンスに対してはインターネット・アクセスを誤って許可しないようにする必要があります。VCN内のインスタンスにインターネットからのパブリック・アクセスを許可するには、VCNの次のオプションを構成する必要があります:

    • インスタンスは、VCNパブリック・サブネット内にあることが必要です。
    • インスタンスが含まれるVCNは、インターネット・ゲートウェイが有効になっており、アウトバウンド・トラフィックのルーティング・ターゲットとして構成されている必要があります。
    • インスタンスに、パブリックIPアドレスが割り当てられている必要があります。
    • インスタンスのサブネットのVCNセキュリティ・リストは、0.0.0.0/0からのインバウンド・トラフィックを許可するように構成する必要があります。または、ネットワーク・セキュリティ・グループ(NSG)を使用している場合は、そのようなトラフィックを許可するNSG内にインスタンスが存在する必要があります。
  • VPN IPSecは、顧客のオンプレミス・ネットワークとVCN間の接続を提供します。高可用性を実現するには2つのIPSecトンネルを作成できます。VCN DRGを顧客CPEに接続するためのVPNトンネルの作成の詳細は、サイト間VPNを参照してください。
  • FastConnectピアリングを使用すると、オンプレミス・ネットワークをプライベート回線でVCNに接続でき、トラフィックがパブリック・インターネットを通りません。プライベート・ピアリング(プライベートIPアドレスに接続)またはパブリック・ピアリング(オブジェクト・ストレージなどのOracle Cloud Infrastructureパブリック・エンドポイントに接続)を設定できます。FastConnectピアリングのオプションの詳細は、FastConnectを参照してください。

VCNの仮想セキュリティ・アプライアンス

  • ネットワーキング・サービスを使用すると、侵入検出、アプリケーション・レベルのファイアウォール、NATなどのネットワーク・セキュリティ機能を実装できます(VCNではかわりにNATゲートウェイを使用できます)。これを行うには、ローカルのVCNプライベートIPアドレスをターゲットとして使用するルート表ルールを使用してすべてのサブネット・トラフィックを、ネットワーク・セキュリティ・ホストにルーティングします。詳細は、ルート・ターゲットとしてのプライベートIPの使用を参照してください。高可用性を実現するには、ゲートウェイ・セキュリティ・ホストにセカンダリ・プライベートIPアドレスを割り当ててください。これは、プライマリ・ホストに障害が発生した場合にスタンバイ・ホスト上のVNICに移動できます。完全なネットワーク・パケット取得が可能です。つまり、tcpdumpを使用してネットワーク・フロー・ログをNATインスタンス上で取得でき、ログをオブジェクト・ストレージ・バケットに定期的にアップロードできます。

  • 仮想セキュリティ・アプライアンスは、ベア・メタル・インスタンス上の独自ハイパーバイザ(BYOH)モデルで仮想マシン(VM)として実行できます。BYOHベア・メタル・インスタンスで実行する仮想セキュリティ・アプライアンスVMそれぞれには独自のセカンダリVNICがあり、そのVNICのVCN内の他のインスタンスとサービスに直接接続しています。オープンソースのKVMハイパーバイザを使用してベア・メタル・インスタンスでBYOHを有効化する方法の詳細は、独自のハイパーバイザ・ゲストOSの持込みを参照してください。
  • 仮想セキュリティ・アプライアンスをコンピュート仮想マシン(VM)にインストールすることもできます。ここに、独自のイメージの導入(BYOI)機能を使用して、セキュリティ・アプライアンスのVMDKまたはQCOW2イメージをインポートできます。ただし、インフラストラクチャの依存関係のために、一部のアプライアンスではBYOI機能を使用できないことがあります。その場合は、BYOHモデルをもう1つのオプションとして使用できます。アプライアンス・イメージをOracle Cloud Infrastructureにインポートする方法の詳細は、独自のイメージの導入(BYOI)を参照してください。

ロード・バランサ

  • Oracle Cloud Infrastructureのロード・バランサにより、クライアントのアプリケーションと顧客のVCN間のエンドツーエンドのTLS接続が可能になります。TLS接続は、HTTPロード・バランサで終了できます。あるいは、TCPロード・バランサを使用してバックエンド・サーバーで終了できます。ロード・バランサは、デフォルトでTLS1.2を使用します。HTTPSリスナーの構成の詳細は、ロード・バランサのリスナーを参照してください。独自のTLS証明書をアップロードすることもできます。詳細は、ロード・バランサのSSL証明書を参照してください。
  • VCNのネットワーク・セキュリティ・グループまたはセキュリティ・リストを使用して、ロード・バランサに対するネットワーク・アクセスを構成できます。この方法には、従来のロード・バランサのファイアウォールと同様の効果があります。パブリック・ロード・バランサの場合、リージョナル・パブリック・サブネット(たとえば、DMZサブネット)を使用して、2つの異なる可用性ドメインにまたがる高可用性構成でロード・バランサをインスタンス化することをお薦めします。ロード・バランサのネットワーク・セキュリティ・グループまたはサブネットのセキュリティ・リストを設定することによって、ロード・バランサのファイアウォール・ルールを構成できます。ロード・バランサのセキュリティ・リストを作成する方法の詳細は、ロード・バランサ・セキュリティ・リストの更新とリスナーへのインターネット・トラフィックの許可を参照してください。同様に、バックエンド・サーバー用にVCNネットワーク・セキュリティ・グループまたはセキュリティ・リストを構成して、トラフィックをパブリック・ロード・バランサからのみに制限する必要があります。バックエンド・サーバーのセキュリティ・リストの構成の詳細は、ルールの更新によるバックエンド・サーバーへのトラフィックの制限を参照してください。

DNSゾーンおよびレコード

DNSのゾーンとレコードは、Webプロパティのアクセシビリティに不可欠です。誤った更新や認可されていない削除のため、DNS名を介してアクセスした場合に、サービスが使用できなくなることがあります。DNSのゾーンおよびレコードを変更できるIAMユーザーを制限することをお薦めします。

DNS Traffic Management Steering Policies

更新が正しくないか、DNSトラフィック管理ステアリング・ポリシーへの不正な削除によって、トラフィックの方向の誤りやフェイルオーバーの障害によってサービスが停止する可能性があります。Oracleでは、DNSトラフィック管理ステアリング・ポリシーを変更できるIAMユーザーを制限することをお薦めします。

セキュリティ・ポリシーの例

ユーザーにセキュリティ・リストの表示のみを許可

ネットワーク管理者は、ネットワーク・セキュリティ・グループとセキュリティ・リストを作成および管理する権限を持つユーザーです。

ただし、場合によってはネットワーク・ユーザーが、どのセキュリティ・ルールが特定のネットワーク・セキュリティ・グループ(NSG)またはセキュリティ・リストに含まれるかを把握する必要があります。

次のポリシー例の最初の行は、NetworkUsersグループがセキュリティ・リストとその内容を表示することを許可します。このポリシーによって、このグループがセキュリティ・リストの作成、アタッチ、削除または変更を行うことはできません。

2行目では、NSG内のセキュリティ・ルールの表示と、NSGにあるVNICと親リソースの表示をNetworkUsersグループに許可しています。2行目によって、NetworkUsersグループがNSG内のセキュリティ・ルールを変更することは許可されません。

Allow group NetworkUsers to inspect security-lists in tenancy
Allow group NetworkUsers to use network-security-groups in tenancy

ユーザーによるインターネットへの外部接続の作成を防止

場合によっては、ユーザーがVCNに対する外部インターネット接続を作成できないようにする必要があります。次のポリシー例では、NetworkUsersグループがインターネット・ゲートウェイの作成を禁止されています。

Allow group NetworkUsers to manage internet-gateways in tenancy
 where request.permission!='INTERNET_GATEWAY_CREATE'

ユーザーによるDNSレコードおよびゾーンの更新を防止

次のポリシー例では、NetworkUsersグループがDNSゾーンおよびレコードの削除と更新を禁止されています

Allow group NetworkUsers to manage dns-records in tenancy
 where all {request.permission!='DNS_RECORD_DELETE', 
            request.permission!='DNS_RECORD_UPDATE'} 
Allow group NetworkUsers to manage dns-zones in tenancy
 where all {request.permission!='DNS_ZONE_DELETE', 
            request.permission!='DNS_ZONE_UPDATE'}

便利なCLIコマンド

この後のすべての例で、環境変数$T、$Cおよび$VCNはそれぞれ、テナンシOCID、コンパートメントOCIDおよびVCN OCIDに設定されます。

VCNのオープン・セキュリティ・リストのリスト表示

# list open (0.0.0.0/0) security lists in VCN $VCN in compartment $C 
oci network security-list list -c $C --vcn-id $VCN | grep "source" | grep "\"0.0.0.0/0\""

VCNのゲートウェイのリスト表示

# list all internet gateways in VCN $VCN in compartment $C 
oci network internet-gateway list -c $C --vcn-id $VCN 
# list all DRGs in compartment $C 
oci network drg list -c $C 
# list all local peering gateways in vcn $VCN in compartment $C 
oci network local-peering-gateway list -c $C --vcn-id $VCN

VCNのルート表ルールのリスト表示

# list route table rules in VCN $VCN in compartment $C 
oci network route-table list -c $C --vcn-id $VCN