Cloud Armor と他の Google プロダクトの統合

以降のセクションでは、Cloud Armor が Google Cloud の他の機能やプロダクトと連携する方法について説明します。

Cloud Armor と VPC ファイアウォール ルール

Cloud Armor のセキュリティ ポリシーと VPC ファイアウォール ルールは異なる役割を果たします。

  • Cloud Armor のセキュリティ ポリシーは、エッジ セキュリティを提供し、Google Front End(GFE)へのクライアント トラフィックを処理します。
  • VPC ファイアウォール ルールは、バックエンドとの間のトラフィックを許可または拒否します。上り(内向き)許可ファイアウォール ルールを作成する必要があります。そのターゲットはロードバランスされたバックエンド VM で、ソースがグローバル外部アプリケーション ロードバランサまたは従来のアプリケーション ロードバランサで使用される IP 範囲です。これらのルールにより、GFE とヘルスチェック システムがバックエンド VM と通信できるようになります。

たとえば、CIDR の範囲 100.1.1.0/24 と CIDR の範囲 100.1.2.0/24 からのトラフィックのみがグローバル外部アプリケーション ロードバランサまたは従来のアプリケーション ロードバランサにアクセスできるようにするシナリオを考えてみましょう。目標は、トラフィックがバックエンドのロード バランシング インスタンスに直接到達できないようにブロックすることです。つまり、グローバル外部アプリケーション ロードバランサやセキュリティ ポリシーが関連付けられている従来のアプリケーション ロードバランサ経由でプロキシされた外部トラフィックのみがインスタンスに到達できるようにします。

Cloud Armor セキュリティ ポリシーと上り(内向き)ファイアウォールを使用してアクセスを制限する。
Cloud Armor セキュリティ ポリシーと上り(内向き)ファイアウォールを使用してアクセスを制限する(クリックして拡大)

上の図は、次のデプロイ構成を示しています。

  1. 2 つのインスタンス グループを作成します。1 つは us-west1 リージョンに、もう 1 つは europe-west1 リージョンに作成します。
  2. バックエンド アプリケーション インスタンスをインスタンス グループの VM にデプロイします。
  3. グローバル外部アプリケーション ロードバランサまたは従来のアプリケーション ロードバランサをプレミアム ティアで作成します。URL マップと、前の手順で作成した 2 つのインスタンス グループをバックエンドとする単一のバックエンド サービスを構成します。ロードバランサの転送ルールで外部 IP アドレス 120.1.1.1 を使用する必要があります。
  4. 100.1.1.0/24 および 100.1.2.0/24 からのトラフィックを許可し、他のすべてのトラフィックを拒否する Cloud Armor セキュリティ ポリシーを構成します。
  5. このポリシーをロードバランサのバックエンド サービスに関連付けます。手順については、Cloud Armor セキュリティ ポリシーを構成するをご覧ください。より複雑な URL マップを持つ外部 HTTP(S) ロードバランサは、複数のバックエンド サービスを参照できます。必要に応じて、セキュリティ ポリシーを 1 つ以上のバックエンド サービスに関連付けることができます。
  6. グローバル外部アプリケーション ロードバランサまたは従来のアプリケーション ロードバランサからのトラフィックを許可するように、上り(内向き)許可ファイアウォール ルールを構成します。詳細については、ファイアウォール ルールをご覧ください。

Cloud Armor と外部アプリケーション ロードバランサおよび IAP

Identity-Aware Proxy(IAP)は、ユーザーの ID を検証し、そのユーザーがアプリケーションにアクセスできるかどうかを判断します。グローバル外部アプリケーション ロードバランサまたは従来のアプリケーション ロードバランサで IAP を有効にするには、ロードバランサのバックエンド サービスを使用します。同様に、Cloud Armor のエッジ セキュリティ ポリシーは、グローバル外部アプリケーション ロードバランサまたは従来のアプリケーション ロードバランサのバックエンド サービスに接続されます。

Cloud Armor のセキュリティ ポリシーと IAP の両方がバックエンド サービスで有効になっている場合、評価の順序はロードバランサの種類によって異なります。

  • グローバル外部アプリケーション ロードバランサのバックエンド サービスの場合、Cloud Armor の評価が最初に行われます。Cloud Armor でリクエストがブロックされた場合、IAP はリクエストを評価しません。Cloud Armor でリクエストが許可された場合、IAP はリクエストを評価します。IAP がリクエストを認証しなかった場合、リクエストはブロックされます。

  • 従来のアプリケーション ロードバランサのバックエンド サービスの場合、IAP の評価が最初に行われます。IAP がリクエストを認証した場合、Cloud Armor でリクエストが評価されます。IAP によるリクエストの認証が失敗した場合、Cloud Armor でリクエストは評価されません。

IAP で IP アドレスの拒否リストと許可リストを使用する。
IAP で IP アドレスの拒否リストと許可リストを使用する(クリックして拡大)

IAP と関連する構成の詳細については、Identity-Aware Proxy のドキュメントをご覧ください。

Cloud Armor とハイブリッド デプロイ

ハイブリッド デプロイでは、グローバル外部アプリケーション ロードバランサまたは従来のアプリケーション ロードバランサは、 Google Cloudの外部(別のクラウド プロバイダのインフラストラクチャなど)で実行されるアプリケーションやコンテンツ ソースにアクセスする必要があります。Cloud Armor を使用すると、このようなデプロイを保護できます。

次の図では、ロードバランサに 2 つのバックエンド サービスがあります。1 つは、バックエンドとしてインスタンス グループを持っています。もう 1 つのバックエンド サービスには、バックエンドとしてインターネット NEG があり、インターネット NEG は、サードパーティ プロバイダのデータセンターで実行されているアプリケーションに関連付けられています。

ハイブリッド デプロイ用の Cloud Armor。
ハイブリッド デプロイ用の Cloud Armor(クリックして拡大)

インターネット NEG をバックエンドとして持つバックエンド サービスに Cloud Armor のセキュリティ ポリシーを接続すると、グローバル外部アプリケーション ロードバランサまたは従来のアプリケーション ロードバランサに到着した、そのバックエンド サービス宛てのすべてのレイヤ 7 のリクエストが検査されます。

Cloud Armor でハイブリッド デプロイに対して提供される保護には、インターネット NEG に適用されるものと同じ制限が適用されます。

Cloud Armor と Google Kubernetes Engine(GKE)

以下のセクションでは、Cloud Armor が GKE と連携する仕組みについて説明します。

GKE Ingress

Cloud Armor のセキュリティ ポリシーを構成したら、Kubernetes Ingress を使用して GKE でこれを有効にできます。

セキュリティ ポリシーの名前を BackendConfig リソースに追加することで、セキュリティ ポリシーを BackendConfig で参照できます。次の BackendConfig マニフェストでは、example-security-policy という名前のセキュリティ ポリシーを指定しています。

apiVersion: cloud.google.com/v1
kind: BackendConfig
metadata:
  namespace: cloud-armor-how-to
  name: my-backendconfig
spec:
  securityPolicy:
    name: "example-security-policy"

Ingress の機能の詳細については、Ingress の構成をご覧ください。

GKE Gateway

Cloud Armor のセキュリティ ポリシーを構成したら、Kubernetes Gateway API を使用して GKE でこれを有効にできます。

セキュリティ ポリシーの名前を GCPBackendPolicy ポリシー リソースに追加することで、セキュリティ ポリシーを参照できます。次の GCPBackendPolicy ポリシー リソース マニフェストでは、example-security-policy という名前のバックエンド セキュリティ ポリシーを指定しています。

サービス

apiVersion: networking.gke.io/v1
kind: GCPBackendPolicy
metadata:
  name: my-backend-policy
  namespace: lb-service-namespace
spec:
  default:
    securityPolicy: example-security-policy
  targetRef:
    group: ""
    kind: Service
    name: lb-service

マルチクラスタ サービス

apiVersion: networking.gke.io/v1
kind: GCPBackendPolicy
metadata:
  name: my-backend-policy
  namespace: lb-service-namespace
spec:
  default:
    securityPolicy: example-security-policy
  targetRef:
    group: net.gke.io
    kind: ServiceImport
    name: lb-service

Cloud Armor バックエンド セキュリティ ポリシーの構成の詳細については、Cloud Armor バックエンド セキュリティ ポリシーを構成してバックエンド サービスを保護するをご覧ください。

Cloud Armor と Cloud CDN

Cloud CDN と Cloud Armor を併用することで、CDN オリジン サーバーを保護できます。Cloud Armor は、CDN オリジン サーバーをアプリケーション攻撃から確実に保護し、OWASP トップ 10 リスクを軽減して、レイヤ 7 フィルタリング ポリシーを適用します。Cloud Armor と Cloud CDN の連携に影響するセキュリティ ポリシーには、エッジ セキュリティ ポリシーとバックエンド セキュリティ ポリシーの 2 種類があります。

エッジ セキュリティ ポリシー

グローバル外部アプリケーション ロードバランサまたは従来のアプリケーション ロードバランサの背後にある Cloud CDN 対応バックエンド サービスと Cloud Storage バックエンド バケットには、エッジ セキュリティ ポリシーを使用できます。エッジ セキュリティ ポリシーを使用すると、コンテンツがキャッシュから提供される前にリクエストをフィルタリングできます。