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

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

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

仕様

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

リソース階層

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

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

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

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

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

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

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

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

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

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

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

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

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

ポリシー名

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

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

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

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

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

  • 階層型ファイアウォール ポリシーの場合、セキュアタグの統合はありません。

  • 階層型ファイアウォール ポリシーは組織レベルのリソースであり、グローバル ネットワーク ファイアウォール ポリシーはプロジェクト レベルのリソースです。

事前定義ルール

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

IPv4 ルール:

  • 宛先が 0.0.0.0/0 で、優先度が非常に低い(2147483646)下り(外向き)ルール。接続の処理を 1 つ下の評価レベル(goto_next)に送信します。

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

IPv6 ルール:

  • 宛先が ::/0 で、優先度が非常に低い(2147483644)下り(外向き)ルール。接続の処理を 1 つ下の評価レベル(goto_next)に送信します。

  • 送信元が ::/0 で、優先度が非常に低い(2147483645)上り(内向き)ルール。接続の処理を 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.orgFirewallPolicyAdmin ロールが付与されている必要があります。
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 はそれぞれのネットワークから継承

次のステップ