GCPセキュリティサービス逆引き: こういうときはどれを使う?

GCPのセキュリティサービスは、サービス名から覚えるよりも、要件から逆引きできる方が実務でも試験でも使いやすいです。

「社内ユーザーだけ通したい」「APIキーを保管したい」「保存時暗号化の鍵を顧客管理したい」「外部IPを禁止したい」といった要件から、どのサービスを選ぶかを整理します。

まず逆引き表

やりたいこと使うサービス見るポイント
DDoS / WAF / rate limitでWebアプリを守りたいCloud ArmorLoad Balancer前段の入口防御
社内ユーザーだけWebアプリに通したいIAPユーザーIDベースのアプリ入口制御
GCPリソースの操作権限を制御したいIAM誰が何をできるか
アプリにGCPリソース操作権限を持たせたいService Account + IAMアプリの実行主体と最小権限
APIキーやDBパスワードを保管したいSecret Managerアプリが読む秘密値
保存時暗号化の鍵を顧客管理したいCloud KMS / CMEKCloud KMS鍵を対象サービスに指定
機密データを検出・マスキングしたいSensitive Data ProtectionPII検出、分類、マスク
GCS / BigQuery のデータ持ち出しを抑止したいVPC Service Controlsservice perimeter
外部IP付きVMを禁止したいOrganization Policy組織・フォルダ・プロジェクト単位の制約
設定不備や脅威を可視化したいSecurity Command Centerセキュリティ検知・統合管理
監査ログを追いたいCloud Audit Logs / Cloud Logging誰が何をしたか

Webアプリの外部入口を守りたい

選定の目安
  • 要件: Internetから来る攻撃、DDoS、WAF、bot、rate limitを扱いたい
  • 選択: Cloud Armor

Cloud Armorは、Load Balancerの前段でHTTP(S)リクエストに対してセキュリティポリシーを適用します。

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<br/>Cloud Run / GKE / VM"]

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

アプリに入ってよいユーザーを判定するIAPや、GCPリソース操作権限を制御するIAMとは役割が違います。

社内ユーザーだけWebアプリに入れたい

選定の目安
  • 要件: 社員や特定グループだけ管理画面にアクセスさせたい。VPNなしでユーザー単位に制御したい
  • 選択: IAP

IAPは、アプリの前段でユーザー認証・認可を行う門番です。

flowchart LR
  user["User"]
  idp["IdP / Google identity"]
  iap["IAP"]
  app["Web app"]

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

IAPそのものはIdPではありません。Google Workspace、Cloud Identity、外部IdPなどで認証されたユーザーを、アプリ入口で通すかどうかを制御します。

IAPとIdPの関係は『IAPとSSO・IdP・SAML・OIDC・IAMの関係』で扱います。

GCPリソースの操作権限を制御したい

選定の目安
  • 要件: 誰がCloud Storageを読めるか、誰がBigQueryを見られるか、誰がCloud Runにデプロイできるかを制御したい
  • 選択: IAM

IAMはGCPリソース操作権限を制御します。

人間ユーザーは、IAMで許可されたGCPリソース操作だけできます。アプリはService Accountとして動き、IAMで許可されたGCPリソース操作だけできます。

アプリの権限は、Service Accountに必要最小限のIAMロールを付ける形で設計します。

APIキーやDBパスワードを保管したい

選定の目安
  • 要件: APIキー、DBパスワード、Webhook secret、証明書を安全に保管したい
  • 選択: Secret Manager

Secret Managerは、アプリが実行時に読む秘密値を置くサービスです。

Cloud RunがSecret ManagerからDB_PASSWORDを読み、その値を使ってCloud SQLへ接続するような使い方です。

.env に入れがちな秘密値を、IAM・監査・バージョン管理つきで扱うサービスと考えると分かりやすいです。

保存時暗号化の鍵を顧客管理したい

選定の目安
  • 要件: Cloud SQL / GCS / BigQuery の保存時暗号化に使う鍵を自分で管理したい。鍵をローテーション、無効化、監査したい
  • 選択: Cloud KMS / CMEK

CMEKは、GCPサービスの保存時暗号化にCloud KMS上の顧客管理鍵を使う方式です。

Cloud SQL / GCS / BigQuery のCMEK設定でCloud KMS鍵を指定します。

Secret Managerはアプリが読む秘密値Cloud KMS / CMEKは暗号鍵と保存時暗号化の領域です。詳しくは『Secret Manager・Cloud KMS・CMEKの違い』で扱っています。

データ持ち出しを抑止したい

選定の目安
  • 要件: GCSやBigQueryなどのデータを境界外に持ち出されにくくしたい
  • 選択: VPC Service Controls

VPC Service Controlsは、Google Cloudサービスに対してservice perimeterを作り、境界外へのデータ流出リスクを下げる仕組みです。

VPC-SCはprivate接続ではなく、Google API系サービスのデータ境界を作るための仕組みです。

Private Service Connectはprivate接続VPC Service Controlsはデータ持ち出し境界です。名前は似ていませんが、どちらも「閉じる」雰囲気があるため混ざりやすいです。

組織全体で禁止ルールを強制したい

選定の目安
  • 要件: 外部IP付きVMを作らせたくない。特定リージョン以外を使わせたくない。特定サービスの利用を制限したい
  • 選択: Organization Policy

Organization Policyは、組織・フォルダ・プロジェクト単位でガードレールを設定します。

IAMが「誰に何を許可するか」なら、Organization Policyは「組織として何を禁止・制限するか」です。

設定不備や脅威を見つけたい

選定の目安
  • 要件: 危険な設定、脆弱性、脅威、リスクを可視化したい
  • 選択: Security Command Center

Security Command Centerは、GCP上のセキュリティ状態を集約して見るためのサービスです。

アプリの正常性監視というより、クラウド環境のセキュリティリスクを見つける領域です。

まとめ

  • 外部攻撃、WAFルール、rate limitはCloud Armorで扱う
  • 社内ユーザーだけWebアプリに通すならIAP
  • GCPリソース操作権限はIAM
  • アプリの実行権限はService Account + IAM
  • APIキーやDBパスワードはSecret Manager
  • 保存時暗号化の顧客管理鍵はCloud KMS / CMEK
  • データ持ち出し境界はVPC Service Controls
  • 組織全体の禁止ルールはOrganization Policy
  • 設定不備や脅威の可視化はSecurity Command Center

参考

タグ: GCP, クラウド設計, セキュリティ