暗号化の 3 層(at rest / in transit / in use)、CMEK / Cloud HSM / Cloud EKM、Sensitive Data Protection、Secret Manager、Confidential Computing、Vertex AI セキュリティを、公式仕様・鍵管理運用・FIPS 認証・落とし穴まで深掘り。
PCSE で必ず問われる 3 層。保存中(at rest)と転送中(in transit)は Google が既定で自動暗号化。使用中(in use)は Confidential Computing でオプトイン。
公式仕様:データは DEK(Data Encryption Key) で暗号化、DEK は KEK(Key Encryption Key) で暗号化されて格納される。公式 既定暗号化
Cloud KMS の鍵を KEK として使う方式。鍵のライフサイクル(作成 / ローテーション / 失効)を顧客が制御。公式 CMEK
| Level | 鍵の場所 | 認証 | 使いどころ |
|---|---|---|---|
| SOFTWARE | Cloud KMS(ソフトウェア) | FIPS 140-2 Level 1 | 一般的な要件 |
| HSM | Cloud HSM(GCP 内 HSM) | FIPS 140-2 Level 3 | 金融 / 規制要件 |
| EXTERNAL | 顧客の外部 KMS(インターネット経由) | 外部 KMS 次第 | 鍵を GCP に預けない |
| EXTERNAL_VPC | 顧客の外部 KMS(プライベート経路) | 外部 KMS 次第 | + プライベート接続要件 |
# 1. KeyRing 作成(asia-northeast1 リージョン)
gcloud kms keyrings create finance-kr \
--location=asia-northeast1
# 2. CryptoKey 作成、90 日でローテーション
gcloud kms keys create finance-key \
--location=asia-northeast1 --keyring=finance-kr \
--purpose=encryption \
--protection-level=hsm \
--rotation-period=90d \
--next-rotation-time=2026-08-01T00:00:00Z
# 3. BigQuery service account に Encrypt/Decrypt 権限を付与
gcloud kms keys add-iam-policy-binding finance-key \
--location=asia-northeast1 --keyring=finance-kr \
--member=serviceAccount:bq-PROJECT@bigquery-encryption.iam.gserviceaccount.com \
--role=roles/cloudkms.cryptoKeyEncrypterDecrypter
# 4. BigQuery テーブルを CMEK で作成
bq mk --table \
--destination_kms_key=projects/PROJECT/locations/asia-northeast1/keyRings/finance-kr/cryptoKeys/finance-key \
DATASET.TABLE
cryptoKeyEncrypterDecrypter 付与忘れ → API エラーcryptoKey-encrypt-requests-per-minute 300,000(リージョン)。大量バッチでは事前申請CMEK の Protection Level: HSM で利用できる、FIPS 140-2 Level 3 認証 のハードウェアセキュリティモジュール。鍵は HSM 外に出ない。公式 Cloud HSM
鍵を GCP の外(顧客のオンプレ KMS / Thales / Fortanix / Equinix / Futurex 等)に置く方式。GCP は復号 API を呼び出すだけ。公式 EKM
rotationPeriod で指定(最短 1 日、最長 100 年)DestroyCryptoKeyVersion / RestoreCryptoKeyVersion は必ずアラート対象使用中(in use)暗号化。クラウド運用者・ハイパーバイザ・ホスト OS から VM メモリを保護。公式
AMD SEV / SEV-SNP / Intel TDX で VM メモリを暗号化。VM 起動時にチェックボックス 1 つ。性能オーバーヘッドは数%。
対応マシンタイプ:N2D / C2D / C3 / C3D 等
GKE Node Pool を Confidential VM 化。Pod の機密データもメモリ保護。
TEE + Attestation。複数当事者の 合同計算(federated analytics)で互いの生データを見せずに処理。GA
Confidential Space の Workload は起動時に Attestation Verifier で workload_image / image_digest / environment を検証 → 信頼できる場合のみ鍵 / データを開放。
# 特定の image digest かつ specific service account の Workload のみ KMS 鍵を利用可 resource.type == "cloudkms.googleapis.com/CryptoKey" && has(request.auth.claims.google.compute_engine.confidential_space) && request.auth.claims.google.compute_engine.confidential_space.image_digest == "sha256:abc123def..." && request.auth.claims.google.compute_engine.confidential_space.workload_sa == "joint-compute@PROJECT.iam.gserviceaccount.com"
機微データの検出・分類・de-identify・再識別リスク解析を行う API/サービス。公式
| 機能 | 役割 | 典型シナリオ |
|---|---|---|
| Discovery | BigQuery / GCS / Cloud SQL を自動スキャン、機微データの所在をマップ化 | 事業全体の PII リスク棚卸し |
| Inspection | 提供されたテキスト / 画像 / 構造化データから infoType を検出 | 取り込み時の動的スキャン |
| De-identification | Mask / Replace / Tokenize / FPE / Generalize / Bucketize | 分析者に PII を見せない |
| Re-identification risk analysis | k-anonymity / l-diversity / t-closeness で再識別リスクを定量 | 研究データ公開前の評価 |
| 手法 | 可逆性 | 形式維持 | JOIN 維持 | 説明 |
|---|---|---|---|---|
| Redaction | × | × | × | 該当部分を完全削除 |
| Replacement | × | × | × | 定型文字列に置換(例: [PHONE]) |
| Masking | × | △ | × | X 文字で置換、一部桁は残す |
| Crypto Hash | × | × | ◯ | HMAC-SHA-256、決定論的 |
| Crypto Deterministic | ◯ | × | ◯ | AES-SIV、鍵で復号可 |
| FPE (FFX/FF1) | ◯ | ◯ | ◯ | 形式維持で可逆、PCI-DSS 適合 |
| Date Shift | △ | ◯ | ◯ | 日付を相対オフセットでシフト |
| Bucketize / Generalize | × | × | △ | 連続値を範囲化 |
EMAIL_ADDRESS PHONE_NUMBER CREDIT_CARD_NUMBER JAPAN_INDIVIDUAL_NUMBER JAPAN_DRIVERS_LICENSE_NUMBER IP_ADDRESS PERSON_NAME DATE_OF_BIRTH MEDICAL_RECORD_NUMBER US_SOCIAL_SECURITY_NUMBER
POST https://dlp.googleapis.com/v2/projects/PROJECT/locations/asia-northeast1/content:deidentify
{
"item": { "value": "メール: alice@example.com / 電話: 090-1234-5678" },
"deidentifyConfig": {
"infoTypeTransformations": {
"transformations": [{
"infoTypes": [{"name":"EMAIL_ADDRESS"},{"name":"PHONE_NUMBER"}],
"primitiveTransformation": {
"cryptoDeterministicConfig": {
"cryptoKey": {
"kmsWrapped": {
"wrappedKey": "BASE64_WRAPPED_KEY",
"cryptoKeyName": "projects/.../cryptoKeys/dlp-tokenize"
}
},
"surrogateInfoType": { "name": "TOKENIZED" }
}
}
}]
}
},
"inspectConfig": {
"infoTypes": [{"name":"EMAIL_ADDRESS"},{"name":"PHONE_NUMBER"}]
}
}
パスワード / API キー / トークン / 証明書のマネージド管理。Cloud KMS とは別物(KMS は鍵管理、Secret Manager はシークレット管理)。公式
roles/secretmanager.secretAccessor# 1. シークレット作成(自社管理レプリケーション)
gcloud secrets create db-password \
--replication-policy=user-managed \
--locations=asia-northeast1,us-central1
# 2. バージョン追加
echo -n "S3cure!Pass" | gcloud secrets versions add db-password --data-file=-
# 3. アプリの SA に最小権限付与
gcloud secrets add-iam-policy-binding db-password \
--member=serviceAccount:app@PROJECT.iam.gserviceaccount.com \
--role=roles/secretmanager.secretAccessor
# 4. アプリ起動時に取得
gcloud secrets versions access latest --secret=db-password
roles/datacatalog.categoryFineGrainedReader を付与した人だけが列を見られるCREATE ROW ACCESS POLICY で SQL ベースのフィルタ条件元テーブルへの直接権限なしで、ビューの結果のみ参照させる。SDP de-identify + Authorized View の組み合わせが 分析者向け公開 の標準。
AI ワークロード保護は PCSE で新規追加された出題。公式 Vertex AI セキュリティ
aiplatform.googleapis.com を perimeter に含め、データ流出を防ぐ| 脅威 | 説明 | 対策 |
|---|---|---|
| 学習データ漏洩 | training データに含まれる PII がモデル出力で再生成 | SDP で事前 de-identify、Differential Privacy、出力監視 |
| モデル抽出攻撃 | API を大量呼び出してモデルを複製 | Cloud Armor で Rate Limit、認証 API 化、Confidence Score の制限 |
| モデル反転攻撃 | 出力から学習データを推定 | 出力に対する SDP スキャン、ノイズ注入 |
| プロンプトインジェクション | ユーザー入力で system prompt を上書き | 入力サニタイズ、system prompt と入力の分離、出力検証 |
| データ汚染(poisoning) | 悪意ある training data を混入 | training データの整合性確認、ハッシュ検証、専用 SA |
roles/compute.osLogin(sudo なし) / roles/compute.osAdminLogin(sudo あり)compute.requireOsLogin で全 VM 強制compute.requireShieldedVm で全 VM 強制(非対応 OS は失敗するので段階展開)cryptoKeyEncrypterDecrypter 付与忘れチェック(IaC で自動化)