GCPのセキュリティ機能のうち、Cloud Armor、IAP、VPC Service Controls、Private 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 ArmorとIAPは入口の話、PSCやPrivate 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 AccessやPrivate 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 AccessやPrivate 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 Controls | Google 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系サービスのデータ持ち出し境界
- ネットワーク境界セキュリティは、入口・接続・境界を分けて見ると整理しやすい