GCPのネットワーク境界セキュリティ図解まとめ

GCPのセキュリティ機能のうち、Cloud ArmorIAPVPC Service ControlsPrivate Service Connect は構成図で見た方が理解しやすい領域です。

IAMやSecret Manager、Cloud KMSは責務の違いを理解することが中心ですが、ネットワーク境界に関係するサービスは「どこに置かれるのか」「どの通信や境界に効くのか」を図で見ると整理しやすくなります。

本記事では、GCPのネットワーク境界セキュリティを、Internet入口、アプリ入口、Google API境界、private接続に分けて整理します。

ネットワーク境界で見る問い

まず見る問いは以下です。

問い代表サービス
Internetからの攻撃や大量リクエストをどこで止めるかCloud Armor
社内ユーザーだけWebアプリに通すにはIAP
VPC内リソースからGoogle APIへprivateに到達するにはPrivate Google Access / Private Service Connect
VPCからCloud SQLなどへprivateに接続するにはPrivate Service Access / Private Service Connect
GCSやBigQueryのデータ持ち出しをどう抑止するかVPC Service Controls

Cloud ArmorIAPは入口の話、PSCPrivate Google Accessはprivate接続の話、VPC Service Controlsはデータ境界の話です。

Cloud Armor: Internet入口の防御

Cloud Armorは、Internetから来るHTTP(S)リクエストに対して、WAF、DDoS対策、rate limit、IP制限などを行うサービスです。

flowchart LR
  user["Internet user"]
  armor["Cloud Armor"]
  policy["Security policy<br/>WAF rules / rate limit / IP allow/deny"]
  lb["External Application Load Balancer"]
  backend["Backend service<br/>Cloud Run / GKE / VM"]

  user --> armor --> lb --> backend
  armor -. "applies" .-> policy

見るべき問いは、外部からの攻撃や大量アクセスを、アプリへ届く前に止めたいかです。

Cloud Armorは、ユーザーが社員かどうかを判定するサービスではありません。ユーザー単位のアプリ入口制御はIAPで考えます。

IAP: アプリ入口のユーザー制御

IAPは、WebアプリやVMへのアクセスをユーザーIDベースで制御する仕組みです。

flowchart LR
  user["User"]
  idp["Google identity / IdP"]
  iap["IAP"]
  app["Web app<br/>Cloud Run / GKE / App Engine / VM"]

  user -->|"login"| idp
  user -->|"request"| iap
  iap -->|"allowed user only"| app

見るべき問いは、ネットワーク場所ではなく、ユーザーIDでアプリ入口を制御したいかです。

たとえば、社内管理画面をVPNなしで社員だけに公開したい場合にIAPを検討します。

IAPはIdPそのものではありません。IdPで認証されたユーザーを、アプリ入口で通すかどうかを制御する門番です。詳しくは『IAPとSSO・IdP・SAML・OIDC・IAMの関係』で扱います。

Private Google Access / PSC: Google APIへのprivate接続

Cloud Storage、BigQuery、Pub/Sub、Secret Manager などは、VPC内のVMではなくGoogle APIとして呼ぶサービスです。

VPC内リソースから外部IPなしでGoogle APIへ到達したい場合は、Private Google AccessPrivate Service Connectを見ます。

flowchart LR
  subgraph vpc["Your VPC"]
    vm["VM / GKE node<br/>external IPなし"]
    endpoint["PSC endpoint<br/>必要な場合"]
  end

  api["Google API<br/>Cloud Storage / BigQuery / Pub/Sub"]

  vm -->|"Private Google Access"| api
  vm --> endpoint
  endpoint -->|"Private Service Connect"| api

ここでの問いは、VPC内リソースからGoogle APIへ、privateに到達したいかです。

Private Google Access、Private Service Access、Private Service Connectの違いは『Private Google Access・Private Service Access・Private Service Connectの違い』で扱っています。

Private Service Access / PSC: Cloud SQLなどへのprivate接続

Cloud SQLやMemorystoreは自分のGCPリソースですが、Compute Engine VMのように自分のVPC内に直接置くものではありません。

VPC内アプリからCloud SQL private IPへ接続したい場合、Private Service AccessPrivate Service Connectが関係します。

flowchart LR
  subgraph vpc["Your VPC"]
    app["VPC内アプリ<br/>VM / GKE"]
  end

  producer["Service producer network<br/>Cloud SQL / Memorystore"]

  app -->|"Private Service Access / PSC"| producer

ここでの問いは、VPC内アプリから、Google管理DB/Cacheへprivateに接続したいかです。

PSCはGoogle API、Cloud SQL系、他VPCサービス、SaaSなどへprivate endpoint経由で接続できる汎用的な方式です。

VPC Service Controls: Google API境界のデータ持ち出し抑止

VPC Service Controlsは、private接続ではありません。Google Cloudサービスにservice perimeterを作り、境界外へのデータ持ち出しリスクを下げる仕組みです。

flowchart TB
  subgraph perimeter["Service perimeter"]
    projectA["Project A"]
    gcs["Cloud Storage"]
    bq["BigQuery"]
  end

  inside["Allowed client / workload"]
  outside["Outside project / external client"]

  inside -->|"allowed"| gcs
  inside -->|"allowed"| bq
  outside -. "blocked / restricted" .-> gcs
  outside -. "blocked / restricted" .-> bq

ここでの問いは、GCSやBigQueryなどのGoogle API系サービスから、境界外へデータを出されにくくしたいかです。

PSCが「privateに接続する」機能だとすると、VPC Service Controlsは「データ境界を作る」機能です。

機能目的
PSC接続経路をprivateにする
VPC Service ControlsGoogle API系サービスのデータ持ち出し境界を作る

入口・接続・境界を混ぜない

ネットワーク境界セキュリティでは、以下を混ぜないことが重要です。

領域問い代表サービス
Internet入口攻撃や大量リクエストを止めるかCloud Armor
アプリ入口ユーザーを通すかIAP
private接続private IP/endpointで到達するかPrivate Google Access / PSA / PSC
データ境界データ持ち出しを抑止するかVPC Service Controls

同じ「閉じる」「守る」でも、守っている対象が違います。

まとめ

  • Cloud ArmorはInternet入口でWAFルール、DDoS対策、rate limitなどを適用する
  • IAPはWebアプリ入口のユーザー単位アクセス制御
  • Private Google Access / PSCはGoogle APIへのprivate接続
  • Private Service Access / PSCはCloud SQLなどへのprivate接続
  • VPC Service ControlsはGoogle API系サービスのデータ持ち出し境界
  • ネットワーク境界セキュリティは、入口・接続・境界を分けて見ると整理しやすい

参考

タグ: GCP, クラウド設計, セキュリティ, ネットワーク