このドキュメントでは、Cloud Next Generation Firewall(Cloud NGFW)で安全なタグを設計、管理、適用するためのアーキテクチャのベスト プラクティスについて説明します。セキュアタグは、ファイアウォール ルールの評価を動的 IP アドレスではなく仮想マシン(VM)ワークロード ID にバインドすることで、ネットワーク セキュリティに ID 認識型のアプローチを提供します。セキュアタグは、Cloud Next Generation Firewall Essentials 階層に含まれる基本的な機能であり、すべての Cloud NGFW 階層でサポートされています。このガイドは、クラウド ネットワーク セキュリティ ポリシーを設計して維持するネットワーク アーキテクト、セキュリティ管理者、DevOps エンジニアを対象としています。
このドキュメントでは、安全なタグのライフサイクルの 4 つの主要な段階に沿ってベスト プラクティスを整理しています。
- タグ スキーマを設計する: タグをワークロード ID に合わせ、マイクロセグメンテーションを構成し、セキュアタグの割り当て上限を超えないようにタグを粗粒度に保ちます。
- アクセス制御とガバナンスを構成する: Identity and Access Management(IAM)の職務分離を確立し、適切なスコープを選択して、VM プロビジョニング時にタグを適用します。
- ファイアウォール ポリシーとルールロジックを設計する: ルール評価を最適化し、階層型ポリシーを構成して、安全なデフォルト拒否ルールを実装します。
- 保護、モニタリング、監査: タグホールドを使用して誤って削除されないようにし、ファイアウォール ロギングを有効にして、定期的なアクセス監査を実施します。
このガイドを使用する前に、ファイアウォールの安全なタグの概要と Cloud NGFW の概要を理解しておいてください。
ベスト プラクティスの概要
次の表に、セキュアタグのライフサイクル全体にわたるコア ベスト プラクティスをまとめます。
| ライフサイクル ステージ | 主な推奨事項 | 説明 |
|---|---|---|
| タグ スキーマの設計 | タグを Workload Identity に合わせる | ワークロード ロール(env/prod や tier/database など)でタグキーを定義し、相互に排他的な値を適用して、タグを粗粒度のままにして割り当て上限内に収めます。 |
| アクセス制御とガバナンス | 職掌分散を強制適用する | roles/resourcemanager.tagAdmin ロールをセキュリティ チームにのみ付与し、roles/resourcemanager.tagUser ロールをデプロイ パイプラインに制限し、適切なスコープ(organization=auto と network)を選択します。 |
| VM のプロビジョニング | 作成時にタグを適用する | プロビジョニング中にセキュアタグを VM ネットワーク インターフェースにバインドし、組織のポリシーを使用して、すべての新しいインスタンスにタグを要求します。 |
| ポリシー アーキテクチャ | ターゲット セキュアタグを指定する | 静的評価のパフォーマンスを向上させるため、ファイアウォール ルールでターゲット セキュアタグを使用します。階層型ポリシーでデフォルト拒否ルールを構成して、タグなしリソースを保護します。 |
| クロス ネットワーク セキュリティ | Virtual Private Cloud(VPC)間の安全な接続 | 静的 CIDR ブロックを管理せずに、ピアリングされた VPC ネットワークと Network Connectivity Center(NCC)スポーク間で ID 境界を維持します。 |
| 保護とモニタリング | タグを保護してモニタリングする | 誤削除を防ぐためにタグ保持を適用し、トラブルシューティングのためにファイアウォール ルール ロギングを有効にして、IAM 割り当てを定期的に監査します。 |
タグスキーマを設計する
適切に構造化されたタグスキーマを使用すると、ファイアウォール ルールが簡素化され、セキュリティ監査が効率化され、ポリシーの競合が防止されます。
タグを Workload Identity に合わせる
個別のワークロード ロール、アプリケーション ティア、規制分類に基づいてセキュアタグキーを設計します。
- 環境の階層:
env/prod、env/staging、env/dev - アプリケーション ティア:
tier/frontend、tier/backend、tier/database - コンプライアンス ステータス:
scope/pci-dss、scope/hipaa
例: 3 階層アプリケーションのマイクロセグメンテーション
一般的な 3 層ウェブ アプリケーションは、ウェブ フロントエンド、アプリケーション バックエンド、データベースで構成されています。データベースを不正アクセスから保護するには、セキュアタグを使用してネットワーク マイクロ セグメンテーションを適用し、各階層が隣接する階層とのみ通信できるようにします。
[ Web Tier (tag: tier/frontend) ]
|
| Allow port 8080 (Web can communicate with App)
v
[ App Tier (tag: tier/backend) ]
|
| Allow port 5432 (App can communicate with DB)
v
[ Database Tier (tag: tier/database) ]
このフローを適用するには、次の 2 つのファイアウォール ポリシー ルールを構成します。
- ルール 1(ウェブからアプリ): 送信元タグが
tier/frontendで、ターゲットタグがtier/backendの場合、ポート8080で上り(内向き)を許可します。 - ルール 2(アプリから DB): 送信元タグが
tier/backendで、ターゲット タグがtier/databaseの場合、ポート5432で上り(内向き)を許可します。
結果: tier/frontend と tier/database 間のトラフィックを許可するファイアウォール ルールがないため、ウェブ フロントエンドはデータベース階層と直接通信できません。Cloud NGFW は、VM インスタンスが同じ IP サブネットを共有している場合でも、この境界を自動的に適用します。
ネットワーク タグからセキュアタグへの移行
VPC ネットワーク タグからファイアウォール セキュアタグにアップグレードする場合は、次のアーキテクチャの違いに注意してください。
| 能力 | ネットワーク タグ(VPC ルール) | セキュアタグ(ファイアウォール ポリシー) |
|---|---|---|
| ターゲット仕様 | targetTags = ["web-tier"] |
targetSecureTags = ["tagValues/1234567890"] |
| ソースの仕様 | sourceTags = ["db-client"] |
sourceSecureTags = ["tagValues/0987654321"] |
| 適用範囲 | 単一 VPC ネットワークのみ | ピアリングされた VPC ネットワーク、NCC スポーク、階層型ポリシー間 |
| ルーティングのサポート | ネットワーク タグを静的ルートのネクストホップとして使用できます(ルートタグとも呼ばれます)。 | ルーティングにセキュアタグを使用することはできません。ファイアウォール トラフィック フィルタリングにのみ使用します。 |
| アクセス制御 | 個々のタグに対する IAM 権限がない | Resource Manager と IAM ロールは、タグのアクセスとバインディングを厳密に管理します |
相互に排他的なタグ値を適用する
リソースがタグキーごとに 1 つの値を受け取るようにします。たとえば、VM インスタンスには env/prod または env/dev のいずれかを割り当てる必要がありますが、両方を割り当てることはできません。
推奨: 単一の環境タグ(
env/prod)を割り当て、宛先タグ(env/shared-loggingなど)を参照する明示的なファイアウォール ルールを使用して共有サービスへのアクセスを許可します。しないこと: 同じ VM に複数の環境タグ(
env/prodとenv/dev)をスタックします。これにより、VM は開発ファイアウォール ルールと一致し、本番環境リソースがデベロッパー トラフィックに公開されます。
割り当て内に収まるようにタグを粗粒度にする
一意のインスタンス固有のタグを作成するのではなく、類似する VM インスタンスを共有タグ値でグループ化します。粗粒度のタグ付けにより、セキュリティ ポスチャーを管理しやすくし、組織が安全なタグの割り当て上限を超えるのを防ぐことができます。
タグスキーマを計画する際は、次の上限を確認してください。
マルチ NIC VM にサービス アカウントではなくタグを使用する
ファイアウォール ポリシーの送信元または宛先としては、サービス アカウントよりもセキュアタグをおすすめします。サービス アカウントとは異なり、セキュアタグはマルチホーム VM の個々のネットワーク インターフェース(vNIC)に直接バインドできます。このアプローチでは、各ネットワーク インターフェースに異なるネットワーク ポリシーを適用できます。
アクセス制御とガバナンスを構成する
IAM は、厳格なアクセス制御と職務の明確な分離を実現するために、安全なタグを管理します。
IAM ロールで職務を分離する
タグを作成する管理者とワークロードをプロビジョニングするチームの間に運用上の境界を確立します。
- タグ管理者(
roles/resourcemanager.tagAdmin): タグキーと値の作成、編集、削除を行うため、中央のネットワーク管理者とセキュリティ管理者にのみ付与します。 - Tag User(
roles/resourcemanager.tagUser): タグを VM ネットワーク インターフェースにバインドするために、特定のプロジェクトまたはリソース スコープで自動化された CI/CD デプロイ パイプラインまたはプロビジョニング サービス アカウントに付与します。 - タグ閲覧者(
roles/resourcemanager.tagViewer): タグ構成の読み取り専用の可視性を必要とする運用チームと監査チームに付与します。
セルフタグ付けと権限昇格を防止する
- 推奨: 監査済みの Infrastructure as Code(IaC)デプロイ パイプライン(Terraform
google_tags_tag_bindingワークフローなど)に、プロジェクトまたはネットワーク インターフェース レベルでroles/resourcemanager.tagUserを排他的に付与します。 - 禁止事項: 組織レベルでデベロッパー グループに
roles/resourcemanager.tagUserを広範に付与しないでください。これにより、デベロッパーが未承認の開発ワークロードに本番環境タグ(env/prodなど)を自己付加することを防ぐことができます。
タグキーのスコープを適切に設定する
運用ガバナンスに一致するリソース階層のレベルで、セキュアタグキーを定義します。
- 組織スコープのタグ(
purpose-data=organization=auto): 複数の VPC ネットワーク、ピアリングされたネットワーク、階層型ファイアウォール ポリシー全体で一元化されたセキュリティ ガバナンスを実現するために、組織レベルまたはフォルダレベルでキーを定義します。 - ネットワーク スコープのタグ(
purpose-data=network): タグを単一の VPC ネットワークに永続的に限定する必要があるプロジェクト レベルの分離にのみ使用します。
VM 作成時にタグの割り当てを適用する
作成時にセキュアタグを VM ネットワーク インターフェースにバインドすると、ワークロードが起動時にすぐに保護されます。
ユーザーと自動化されたパイプラインが必須のセキュリティ タグなしでインスタンスをプロビジョニングできないようにするには、組織のポリシーを構成して、リソース作成時にタグを適用します。このポリシーは、タグ付けされていない保護されていない VM インスタンスの作成をブロックします。
ファイアウォール ポリシーとルールロジックを設計する
セキュアタグをファイアウォール ポリシーに統合して、ルール評価を最適化し、一貫した保護を維持します。
中央適用に階層型ファイアウォール ポリシーを使用する
組織レベルまたはフォルダレベルの階層型ファイアウォール ポリシー内でセキュアタグを参照するファイアウォール ルールを定義します。階層型ポリシーは、ローカル プロジェクトのオーナーがオーバーライドできない組織全体のガバナンスを適用します。
効率性の目標セキュアタグを指定する
ファイアウォール ポリシールールを作成するときは、可能な限りターゲット セキュアタグ(targetSecureTags)を指定します。Cloud NGFW は、ターゲット タグと送信元タグを異なる方法で評価します。
ターゲット セキュアタグ(静的に一致): ターゲットタグを含むルールは、それらのタグを持つ VM インスタンスにのみ静的に適用されます。これにより、各 VM で評価されるルールの数が減り、パフォーマンスが向上します。
送信元セキュアタグ(接続ごとに動的に照合): ターゲットタグなしで送信元タグ(
sourceSecureTags)のみを指定するルールは、ネットワーク内のすべての VM インスタンスの接続ごとに動的に評価されるため、処理オーバーヘッドが増加します。
階層型デフォルト拒否を使用して安全なデフォルトを実装する
VM インスタンスは親フォルダまたは組織から GCE_FIREWALL セキュアタグを継承しないため、階層ポリシーで安全なフォールバック ルールを定義して、タグなしリソースを保護します。
デフォルト拒否ルール: デフォルトですべてのトラフィックを拒否する、優先度の低いルール(優先度
65000など)を組織レベルまたはフォルダレベルで作成します。条件付き許可ルール: 特定のセキュアタグ間(
tier/frontendからtier/backendなど)でのみトラフィックを許可する優先度の高いルールを作成します。
タグなしで VM インスタンスが作成された場合、またはタグが切り離された場合、階層型のデフォルト拒否ルールによって、インスタンスとの間のトラフィックが自動的にブロックされます。
ピアリングされたネットワークと NCC でセキュアタグを使用する
セキュアタグを使用して、VPC ネットワーク ピアリングまたは NCC VPC スポークで接続された VPC ネットワーク間のトラフィックを制御します。セキュアタグは、接続されたネットワーク間で ID 認識型の境界を維持します。CIDR ブロックの変更を管理する必要はありません。
保護、モニタリング、監査
継続的な運用管理により、安全なタグ構成の安全性と復元力が維持されます。
タグ保留を使用して重要なタグ値を保護する
使用中のタグを削除したときに発生する偶発的な停止を防ぎます。
- 重要なセキュアタグ値にタグ保留を適用して、削除を防ぎます。
- VM ネットワーク インターフェースから Secure タグを切り離す前に、アクティブなファイアウォール ルールが Secure タグに依存していないことを確認します。 Google Cloud を使用して安全なタグ値を削除するには、すべてのリソース バインディング(およびタグホールド)を削除する必要があります。
ファイアウォール ルールのロギングを有効にする
セキュアタグを使用するすべてのルールでファイアウォール ポリシー ルールのロギングを有効にします。これらのログは、一致するトラフィック ヒットをキャプチャして、アクセス パターンの監査、セグメンテーションの検証、接続の問題のトラブルシューティングに役立ちます。
IAM ロールの割り当てを定期的に監査する
roles/resourcemanager.tagAdmin と roles/resourcemanager.tagUser のプリンシパル割り当てを定期的に監査します。この監査では、承認されたパイプラインのみにタグ バインディング権限があることを確認します。これにより、権限昇格を防ぎ、環境の分離を維持できます。