階層型ファイアウォール ポリシーの概要

階層型ファイアウォール ポリシーを使用すると、組織全体で一貫したファイアウォール ポリシーを作成して適用できます。階層型ファイアウォール ポリシーは、組織全体または個々のフォルダに割り当てることができます。Virtual Private Cloud(VPC)ファイアウォール ルールと同様に、これらのポリシーには接続を明示的に拒否または許可できるルールが含まれています。また、階層型ファイアウォール ポリシールールでは、goto_next アクションを使用して、下位レベルのポリシーまたは VPC ネットワークのファイアウォール ルールに評価を委任できます。

下位レベルのルールは、リソース階層の上位にあるルールをオーバーライドできません。これにより、組織全体の管理者が重要なファイアウォール ルールを 1 か所で管理できます。

仕様

  • 階層型ファイアウォール ポリシーは、組織ノードとフォルダノードに作成されます。ポリシーを作成しても、そのルールが自動的にノードに適用されるわけではありません。
  • 作成されたポリシーは、組織内のすべてのノードに適用(関連付け)できます。
  • 階層型ファイアウォール ポリシーはファイアウォール ルールのコンテナです。ポリシーを組織またはフォルダに関連付けると、すべてのルールが直ちに適用されます。ノードのポリシーを切り替えることで、そのノードの仮想マシン(VM)インスタンスに適用されるすべてのファイアウォール ルールをアトミックに置き換えることができます。
  • ルールの評価は、リソース階層に基づいて階層化されます。組織ノードに関連付けられているすべてのルールが評価され、次に、第 1 レベルのフォルダのルールが評価されます。
  • 階層型ファイアウォール ポリシールールで、goto_next アクションを使用できるようになりました。このアクションを使用すると、接続の評価を階層の下位レベルに委任できます。
  • 階層型ファイアウォール ポリシールールで VM 用のネットワークとターゲット サービス アカウントのリソースを使用すると、特定の VPC ネットワークと VM をターゲットにできます。これにより、VM のグループを例外に設定できます。階層型ファイアウォール ポリシールールは、インスタンス タグによるターゲティングをサポートしていません。
  • コンプライアンスとデバッグを容易にするために、VM インスタンスに適用されるファイアウォール ルールは、VPC ネットワークの詳細ページと VM インスタンスのネットワーク インターフェースの詳細ページを使用して監査できます。

リソース階層

ファイアウォール ポリシーは、個別のステップとして作成して適用します。ファイアウォール ポリシーの作成と適用は、リソース階層の組織ノードまたはフォルダノードで行うことができます。ファイアウォール ポリシールールは、接続のブロック、接続の許可、VPC ネットワークで定義された下位レベルのフォルダまたは VPC ファイアウォール ルールへの評価の委任を行うことができます。

  • 組織は、Google Cloud のリソース階層で最上位のノードであり、階層型ファイアウォール ポリシーを作成または関連付けできます。組織内のすべてのフォルダと VPC ネットワークがこのポリシーを継承します。

  • フォルダは、組織とプロジェクト間にある Google Cloud リソース階層の中間ノードで、階層型ファイアウォール ポリシーの作成または割り当てを行うことができます。フォルダ内のすべてのフォルダと VPC ネットワークは、関連付けられたポリシーを継承します。

  • プロジェクトはフォルダまたは組織に属しています。組織内のノード間でプロジェクトを移動できます。プロジェクトには VPC ネットワークが含まれます。階層型ファイアウォール ポリシーは、プロジェクトに対して割り当てることはできません。組織またはフォルダに対してのみ割り当てることができます。

  • VPC ネットワークは、分離された内部 IP 空間の通信を行う Google Cloud パーティションです。ここには、ルートと従来の VPC ファイアウォール ルールが指定され、適用されます。階層型ファイアウォール ポリシールールでは、ネットワーク ファイアウォール ルールのオーバーライドや、接続評価の委任を行うことができます。

デフォルトでは、階層型ファイアウォール ポリシールールは、ポリシーが関連付けられているすべてのプロジェクトのすべての VM に適用されます。ただし、ターゲット ネットワークまたはターゲット サービス アカウントを指定することで、特定のルールを取得する VM を制限できます。

現時点でファイアウォール ルールを適用できる階層のレベルを次の図に示します。黄色のボックスは、ファイアウォール ルールを含む階層型ファイアウォール ポリシーを表し、白いボックスは VPC ファイアウォール ルールを表します。

組織レベル / フォルダレベルのルール(黄色のボックス)と VPC ネットワーク レベルの VPC ファイアウォール ルールを含む階層型ファイアウォール ポリシー
ルールを含むファイアウォール ポリシー(黄色のボックス)が組織レベルとフォルダレベルで適用されます。VPC ファイアウォール ルールは VPC ネットワーク レベルで適用されます。

ルールの評価

階層型ファイアウォール ポリシールールは、VPC ファイアウォール ルールと同様に VM レベルで適用されます。従来のファイアウォールの場合と同様に、ネットワークのエッジでは適用されません。

Google Cloud は、階層型ファイアウォール ポリシールールと VPC ファイアウォール ルールを次の順序で評価します。

  1. ファイアウォール ポリシーが組織に関連付けられている場合、Google Cloud は VM に適用されたそのポリシーのルールを評価します。ルールの評価結果に応じて接続が許可または拒否されます。また、階層の次のレベル(フォルダまたは VPC ネットワーク)で評価を行うようにファイアウォールに指示することもあります。
  2. Google Cloud は、各フォルダに関連付けられたポリシールールを評価します。まず組織の最上位のフォルダから評価を開始し、子フォルダが存在する場合は次にそのフォルダに進みます。

    ルールの評価結果に応じて接続が許可または拒否されます。また、階層の次のレベル(別のフォルダまたは VPC ネットワーク)に進むようにファイアウォールに指示する場合もあります。

  3. 最後に VPC ファイアウォール ルールを評価します。VPC ファイアウォール ルールにより、接続が許可または拒否されます。

ファイアウォール ルールの解決フロー
ファイアウォール ルールの解決フロー

階層型ファイアウォール ポリシーの詳細

階層型ファイアウォール ポリシールールは、ファイアウォール ルールのコンテナとして機能するファイアウォール ポリシー リソースで定義されます。ファイアウォール ポリシーで定義したルールは、ポリシーがノード(組織またはフォルダ)に関連付けられるまで適用されません。

1 つのポリシーを複数のノードに関連付けることができます。ポリシー内のルールを変更すると、そのルールは、現在関連付けられているすべてのノードに適用されます。

ノードに関連付けることができるファイアウォール ポリシーは 1 つのみです。階層型ファイアウォール ポリシールールと VPC ファイアウォール ルールは、明確に定義された順序で評価されます。

どのノードにも関連付けられていないファイアウォール ポリシーは、関連付けのない階層型ファイアウォール ポリシーです。

ポリシー名

新しいポリシーを作成すると、Google Cloud によって ID が自動的に生成され、ポリシーに割り当てられます。このほかに、ポリシーの略称も指定します。gcloud インターフェースで既存のポリシーを更新する場合は、システム生成の ID で参照するか、略称と組織 ID の組み合わせで参照します。API を使用してポリシーを更新する場合は、システム生成の ID を指定する必要があります。

階層型ファイアウォール ポリシールールの詳細

階層型ファイアウォール ポリシーに含まれるルールは、通常は VPC ファイアウォール ルールと同じように機能しますが、異なる点がいくつかあります。

優先度

  • VPC ファイアウォール ルールでは複数のルールに同一の優先度を設定できますが、階層型ファイアウォール ポリシールールには優先度を指定する必要があります。各優先度はファイアウォール ポリシー内で一意にする必要があります。

  • 階層型ファイアウォール ポリシールールに名前はありません。ファイアウォール ポリシー自体には ID と名前があり、各ルールには一意の優先度番号があります。

  • 階層型ファイアウォール ポリシーでは、ファイアウォール ルールは優先度が最も高い(番号が最小の)ルールから順に評価されます。したがって、組織ノードに割り当てられたポリシーで優先度が 0 のルールは、組織内の他のルールよりも優先されます。

一致したときのアクション

  • allow
    階層型ファイアウォール ポリシーの allow ルールは、優先度の低い、または階層の下位レベルにある deny ルールをオーバーライドします。組織またはフォルダのポリシーで allow ルールを使用して、階層内でそのノードの下位にあるすべての VM に対する特定の種類の接続を無条件に許可します。

    たとえば、組織内のすべての VM をモニタリングする一元管理されたプローバーがある場合は、プローバーの IP アドレスからのリクエストがプロジェクトのネットワークによってブロックされないように allow ルールを組織レベルで作成できます。

  • deny
    階層型ファイアウォール ポリシーの deny ルールは、優先度の低い、または階層の下位レベルにある allow ルールをオーバーライドします。

    たとえば、特定の IP 範囲から組織内のどの VM にもアクセスできないようにするには、その範囲の deny ルールを作成します。

  • goto_next
    ファイアウォールの評価を階層の 1 つ下のレベルに移動するようファイアウォールに指示します。これにより、特定のタイプの接続を下位レベルに委任して管理できます。

ターゲット

階層型ファイアウォール ポリシールールを適用するターゲット ネットワークとターゲット サービス アカウントを指定できます。

ターゲット ネットワーク(ターゲット リソース)

ターゲット ネットワークを指定すると、階層型ファイアウォール ポリシー ルールを特定のネットワーク内の VM に制限できます。ルールで VPC ネットワークを指定すると、そのルールで構成されたネットワークを制御できます。

goto_next または allow と組み合わせてターゲット ネットワークを指定すると、他の制限ポリシーを定義するときに、特定のネットワークに例外を作成できます。

ターゲット サービス アカウント

ターゲット サービス アカウントを指定すると、指定されたサービス アカウントにアクセスできる VM に階層型ファイアウォール ポリシー ルールを制限できます。

ルールの方向は、ルール ターゲットが送信元インスタンスか宛先インスタンスかによって決まります。インスタンスには、VM インスタンス、GKE クラスタ、App Engine フレキシブル環境インスタンスが含まれます。

  • ルールの方向が上り(内向き)の場合、ターゲットは宛先インスタンスを定義します。

  • ルール方向が下り(外向き)の場合、ターゲットは送信元インスタンスを定義します。

ターゲット ネットワークとターゲット サービス アカウントの指定はオプションです。

  • ターゲット ネットワークが指定されていない場合、ポリシーが関連付けられたノードのすべての VPC ネットワークにルールが適用されます。

  • ターゲット サービス アカウントを指定しないと、ポリシーが関連付けられているノードのすべての VM インスタンスにルールが適用されます。

  • ターゲット ネットワークとターゲット サービス アカウントの両方が指定されている場合、両方のターゲット条件を満たす VM インスタンスにのみルールが適用されます。

プロトコルとポート

VPC ファイアウォール ルールと同様に、ルールの作成時に 1 つ以上のプロトコルとポート制約を指定する必要があります。ルールで TCP または UDP を指定する場合は、プロトコル、プロトコルと宛先ポート、またはプロトコルと宛先ポート範囲を指定できます。ポートまたはポート範囲のみを指定することはできません。また、指定できるのは宛先ポートだけです。送信元ポートに基づくルールはサポートされていません。

ICMP の場合は、icmp を指定します。ファイアウォール ルールでは、ICMP のタイプとコードを指定できません。

ロギング

階層型ファイアウォール ポリシールールのロギングは、VPC のファイアウォール ルールのロギングと同じように機能しますが、次の点が異なります。

  • 参照フィールドには、ファイアウォール ポリシー ID と、ポリシーが接続されているノードの階層レベルを示す番号が含まれます。たとえば、0 は組織に適用されていることを意味します。1 はポリシーが組織の最上位フォルダに適用されていることを意味します。

  • 階層型ファイアウォール ポリシーのログには、ルールが適用される VPC ネットワークを識別する target_resource フィールドが含まれています。

ロギングを有効にできるのは、allow ルールと deny ルールのみです。goto_next ルールで有効にすることはできません。

事前定義ルール

すべての階層型ファイアウォール ポリシーには、優先度が最も低い 2 つの goto_next ルールが事前に定義されています。これらのルールは、ポリシーで明示的に定義されたルールと一致しない接続に適用されます。これにより、このような接続は下位レベルのポリシーまたはネットワーク ルールで処理されます。

  • 接続の処理を 1 つ下の評価レベル(goto_next)に送信する、非常に低い優先度(2147483646)の下り(外向き)ルール。
  • 非常に低い優先度(2147483647)の上り(内向き)ルール。接続の処理を 1 つ下の評価レベル(goto_next)に送信します。

これらの事前定義ルールは表示されますが、変更や削除はできません。これらのルールは、VPC ネットワークの暗黙のルールや事前設定ルールと異なります。

Identity and Access Management(IAM)のロール

IAM ロールは、階層型ファイアウォール ポリシーに関して次のアクションを管理します。

  • 特定のノードで有効となるポリシーの作成
  • 特定のノードとポリシーの関連付け
  • 既存のポリシーの変更
  • 特定のネットワークまたは VM で有効なファイアウォール ルールの表示

次の表に、各ステップに必要となるロールを示します。

機能 必要なロール
新しい階層型ファイアウォール ポリシーを作成する ポリシーが有効になるノードに対する compute.orgFirewallPolicyAdmin ロール
ポリシーをノードに関連付ける ターゲット ノードに対する compute.orgSecurityResourceAdmin と、ポリシー自体またはポリシーが存在するノードに対する compute.orgFirewallPolicyAdmin または compute.orgFirewallPolicyUser
ポリシー ファイアウォール ルールを追加、更新、削除してポリシーを変更する ポリシーが存在するノードまたはポリシー自体に対する compute.orgFirewallPolicyAdmin ロール
ポリシーを削除する ポリシーが存在するノードまたはポリシー自体に対する compute.orgFirewallPolicyAdmin ロール
VPC ネットワーク上で効力のあるファイアウォール ルールの表示 ネットワークに対して次のいずれかのロール:
compute.networkAdmin
compute.networkViewer
compute.securityAdmin
compute.securityReadOnly
compute.viewer
ネットワーク内の VM に対する有効なファイアウォール ルールの表示 VM に関する以下のロール:
compute.instanceAdmin
compute.securityAdmin
compute.securityReadOnly
compute.viewer

次のロールは、階層型ファイアウォール ポリシーに関連しています。

ロール名 説明
compute.orgFirewallPolicyAdmin ノードまたは個々のポリシーに付与できます。ノードに付与されている場合、ユーザーは階層型のファイアウォール ポリシーとルールの作成、更新、削除を行うことができます。個々のポリシーに付与されている場合、ユーザーはポリシールールを更新できますが、ポリシーを作成または削除することはできません。また、このロールを付与すると、そのノードに対して compute.orgSecurityResourceAdmin ロールも付与されていれば、ユーザーはそのポリシーをノードに関連付けることができます。
compute.orgSecurityResourceAdmin 組織レベルまたはフォルダに対して付与することによって、フォルダレベルの管理者がそのノードにポリシーを関連付けることができます。管理者には、ポリシーを所有するノードまたはポリシー自体を所有するノードに対して、compute.orgFirewallPolicyUser ロールまたは compute.orgFirewallPolicyAdmim ロールが付与されている必要があります。
compute.orgFirewallPolicyUser 組織レベルまたはフォルダに対して付与することによって、管理者は組織またはフォルダに関連付けられたポリシーを使用できます。ポリシーをそのノードに関連付けるには、ユーザーにターゲット ノードに対する compute.orgSecurityResourceAdmin ロールが付与されている必要があります。
compute.securityAdmin
compute.viewer
compute.networkUser
compute.networkViewer
ユーザーがネットワークまたはインスタンスに適用されているファイアウォール ルールを表示できるようにします。
ネットワークの compute.networks.getEffectiveFirewalls 権限とインスタンスの compute.instances.getEffectiveFirewalls 権限が含まれます。

次の例では、Joe は policies フォルダ内の階層型ファイアウォール ポリシーを作成、変更、削除できますが、フォルダに対する orgSecurityResourceAdmin のロールが付与されていないことから、階層型ファイアウォール ポリシーをフォルダに接続できません。

ただし、Joe が policy-1 を使用する権限を Mary に付与したため、その階層型ファイアウォール ポリシーを一覧表示し、dev-projects フォルダまたはその子と関連付けることができます。orgFirewallPolicyUser ロールでは、ポリシーをフォルダに関連付ける権限は付与されません。また、ユーザーにはターゲット フォルダに対する orgSecurityResourceAdmin ロールも付与されている必要があります。

policy-1 の例
policy-1 の例

階層型ファイアウォール ポリシーリソースの管理

階層型ファイアウォール ポリシーは、一連のファイアウォール ルールのみを定義し、ルールが適用される場所は定義しません。このため、これらのリソースを適用先のノードから階層の別の部分に作成できます。これにより、1 つの階層型ファイアウォール ポリシー リソースを組織内の複数のフォルダに関連付けることができます。

次の例では、policy-1dev-projects フォルダと corp-projects フォルダに適用されるため、それらのフォルダ内のすべてのプロジェクトに適用されます。

ポリシーの場所と関連付け
ポリシーの場所と関連付け

ポリシーのルールの変更

ポリシーでルールの追加、削除、変更を行うことができます。変更は個別に行われます。ポリシーにバッチ更新ルールのメカニズムはありません。変更が適用される順序は、コマンドが実行された順序とほぼ同じですが、保証されているわけではありません。

階層型ファイアウォール ポリシーに大規模な変更を加えて同時に適用する必要がある場合は、一時的なポリシーにポリシーのクローンを作成して、その一時的なポリシーを同じノードに割り当てることができます。その後、元のポリシーを変更してから、元のポリシーをノードに戻すことができます。これを行う手順については、ポリシー間でルールのクローンを作成するをご覧ください。

次の例では、policy-1dev-projects フォルダに接続され、アトミックに適用されるいくつかの変更を行います。scratch-policy という名前の新しいポリシーを作成し、既存のすべてのルールを policy-1 から scratch-policy にコピーして編集します。編集が完了したら、すべてのルールを scratch-policy から policy-1 にコピーして戻します。

ポリシーの変更
ポリシーの変更

ポリシーの移動

プロジェクトなどの階層型ファイアウォール ポリシーは、フォルダまたは組織リソースを親として持ちます。フォルダ スキームの進化に伴い、フォルダを削除する前に、階層型ファイアウォール ポリシーを新しいフォルダに移動しなければならない場合があります。フォルダが削除されると、フォルダが所有するポリシーも削除されます。

次の図は、ノード間でポリシーを移動した場合の関係とポリシーのルールが評価される方法を示しています。

ポリシーの移動
ポリシーの移動

階層型ファイアウォール ポリシーをフォルダに関連付ける

階層型ファイアウォール ポリシーは、組織またはフォルダノードに関連付けられていない限り適用されません。関連付けが完了すると、その組織またはフォルダの下位にあるすべてのネットワークに存在するすべての VM に適用されます。

ポリシーの関連付け
ポリシーの関連付け

リソース階層の変更

リソース階層の変更がシステム全体に反映されるまでに時間を要する場合があります。階層内の新しい場所に定義された階層型ファイアウォール ポリシーがネットワークによって直ちに継承されない場合があるため、階層型ファイアウォール ポリシー アタッチメントとリソース階層を同時に更新しないようにすることをおすすめします。

ポリシーの移動
ポリシーの移動

たとえば、dept-A フォルダを dev-projects フォルダから eng-projects フォルダに移動し、policy-1 の関連付けを dev-projects ではなく eng-projects に変更する場合は、dev-projects に対する policy-1 の関連付けを同時に解除しないようにします。配下のすべての VPC ネットワーク内の祖先を更新する前に、dev-projects フォルダが階層型ファイアウォール ポリシーの関連付けを失うと、短期間の間それらの VPC ネットワークは policy-1 によって保護されません。

共有 VPC で階層型ファイアウォール ポリシーを使用する

共有 VPC のシナリオでは、ホスト プロジェクトのネットワークに接続された VM インターフェースは、サービス プロジェクトではなく、ホスト プロジェクトの階層型ファイアウォール ポリシールールによって管理されます。

共有 VPC の VM
共有 VPC の VM

サービス プロジェクトがホスト プロジェクトとは異なるフォルダにある場合でも、共有ネットワークの VM インターフェースはホスト プロジェクト フォルダのルールを継承します。

サービス プロジェクト VM がホスト プロジェクトのルールを継承
サービス プロジェクト VM がホスト プロジェクトのルールを継承

VPC ネットワーク ピアリングで階層型ファイアウォール ポリシーを使用する

VPC ネットワーク ピアリングのシナリオでは、各 VPC ネットワークに関連付けられた VM インターフェースが、それぞれの VPC ネットワークの階層のポリシーを継承します。以下は、VPC ピアリング ネットワークが異なる組織に属している VPC ネットワーク ピアリングの例です。

VM はそれぞれのネットワークから継承
VM はそれぞれのネットワークから継承

有効になっているファイアウォール ルール

接続は階層型ファイアウォール ポリシールールと VPC ファイアウォール ルールの両方によって管理されるため、個別のネットワークまたは個別の VM インターフェースに影響するすべてのファイアウォール ルールを確認できます。

プロジェクト レベルの管理者は、VM に影響する階層型ファイアウォール ポリシーでルールを表示する権限を保持していない場合があります。ただし、ネットワークのファイアウォール ルールを表示する権限がユーザーに付与されている場合、そのユーザーはフォルダまたは組織からルールが継承されている場合でも、ネットワークに適用されるすべてのルールを確認できます。

ネットワークで有効になっているファイアウォール ポリシー

VPC ネットワークに適用されているすべてのファイアウォール ルールを表示できます。このリストには、階層型ファイアウォール ポリシーから継承されたすべてのルールと、VPC ネットワークから適用されるすべてのルールが含まれています。

インスタンスで有効になっているファイアウォール ルール

VM のネットワーク インターフェースに適用されているすべてのファイアウォール ルールを表示できます。このリストには、階層型ファイアウォール ポリシーから継承されたすべてのルールと、インターフェースの VPC ネットワークから適用されたすべてのルールが含まれます。

ルールは、組織レベルから VPC ルールの順に並べられます。VM インターフェースに適用されるルールのみが表示されます。他のポリシーのルールは表示されません。そのため、ユーザーは組織の全体的なファイアウォール ポリシーを表示できません。

次のステップ