横断 / 全セクション
🎯 Deep Dive
SRE / 運用
Security Engineering の
SRE / 運用 / コスト / Observability 深掘り
セキュリティ機能を 設計したあと、運用フェーズで失敗しないための SRE 原則・SLO 設計・コスト管理・Observability・キャパシティ計画・GitOps を、公式情報と実務知見を組み合わせて深掘り。
1. SRE の原則とセキュリティ運用への適用
Google SRE の原則は「セキュリティ運用」にもそのまま適用できる。セキュリティを SLO で測ることが起点。
SRE の中核原則
- Embracing Risk:完璧を目指さず、許容可能なリスクを定義
- SLO / Error Budget:定量目標で運用判断
- Eliminating Toil:反復作業を自動化
- Monitoring Distributed Systems:4 Golden Signals
- Release Engineering:再現性の高いデプロイ
- Simplicity:複雑性は敵
セキュリティ運用への適用
- 「ゼロ脆弱性」は非現実 → Critical CVE 24h 修復のような目標
- SCC Finding 対応の SLO、PR 内 IAC scan の SLO
- 手動修復は自動修復に(Cloud Functions / Eventarc)
- SCC Findings、Audit Log のメトリック化
- セキュリティ設定変更も CI/CD で再現性確保
- シンプルなポリシーが最も守られる
2. Security SLI / SLO 設計
セキュリティ運用も SLO(Service Level Objective)で定量化できる。何を測るかを最初に決める。
典型 Security SLI 例
| SLI | 計測方法 | 典型 SLO |
| Critical CVE 修復率 | Container Analysis Findings → 修復までの時間 | 24 時間以内に 99% |
| SCC Critical Finding 対応時間 | Finding 作成 → クローズの中央値 | 1 時間以内(Critical) |
| Audit Log 到達遅延 | Cloud Logging API の P99 遅延 | SIEM 到達 5 分以内 99.9% |
| Sink エクスポート成功率 | logging.googleapis.com/exports/error_count | 99.99% |
| IAM Recommender 対応 | 未対応 Recommendation 数 | 過剰権限 30 日以内に 80% 削減 |
| Backup Restore Test 成功率 | 四半期の DR 演習結果 | 100% で RTO 達成 |
| VPC SC Dry Run → Enforce サイクル | 新規 perimeter の Dry Run 期間 | 4 週間以上を 100% |
| Access Approval 承認時間 | 申請 → 承認の P95 | 1 時間以内 95% |
SLO カード例
SLO: Critical CVE 修復
99% / 24h
達成率: 96.2% (今期)エラーバジェット残: 32%
指標: Artifact Registry Container Analysis で Critical CVE の検出時刻 → 修復済みイメージのデプロイ時刻の差分が 24h 以内の Finding 数 ÷ 全 Critical CVE Finding 数
SLO: Audit Log → SIEM 到達遅延
99.9% / 5min
達成率: 99.7% (今期)エラーバジェット残: 0%(バジェット消費中)
指標: Aggregated Sink → Pub/Sub → Chronicle Forwarder の end-to-end 遅延 P99 が 5 分以内の時間比率
3. エラーバジェット運用
SLO で 意図的に許容する失敗率を定義し、それを 変更の燃料として扱う。
エラーバジェットの計算
SLO: Audit Log → SIEM 到達 P99 5 分以内 99.9%
期間: 30 日 = 43,200 分
許容違反時間: 43,200 × 0.001 = 43.2 分
消費例:
第1週: 8 分(Pub/Sub 障害)
第2週: 18 分(Chronicle Forwarder 設定ミス)
第3週: 12 分(Sink 設定更新中の取りこぼし)
第4週: 残バジェット 5.2 分
→ 残わずか → 変更フリーズ / SRE が安定化に注力
運用ルール(典型)
- バジェット 70% 残:通常運用、変更を進める
- バジェット 30〜70%:変更速度を下げ、安定化を優先
- バジェット 30% 未満:変更フリーズ(緊急修正のみ)、根本原因対応
- バジェット 0%:全変更停止、ポストモーテム + 構造的改善
✅ ベストプラクティス
- SLO は サービスオーナーと セキュリティチームで合意
- SLO ダッシュボードは Cloud Monitoring SLO サービスで一元化
- バジェット消費はリアルタイム可視化、Slack 通知
- 四半期に SLO 見直し(target が緩すぎ / 厳しすぎ)
4. Observability の 3 本柱
「障害を予防 / 検知 / 復旧」するための観測体系。Metrics / Logs / Traces の三本柱。
Metrics
時系列の数値データ。集計に強く、長期保存が安価。アラート閾値の判定に使う。
- Cloud Monitoring(旧 Stackdriver)
- VM / GKE / Cloud Run のシステムメトリクス
- カスタムメトリクス(OpenTelemetry / Cloud Monitoring API)
- SCC Findings 件数 / Severity 分布
Logs
構造化された出来事の記録。原因究明・監査・コンプライアンスに必須。
- Cloud Audit Logs(Admin / Data Access / System Event / Policy Denied)
- VPC Flow Logs / Firewall Rules Logging
- アプリログ(structured JSON 推奨)
- Log Analytics で SQL 分析
Traces
分散システムでのリクエストフロー。レイテンシ / エラー原因の特定に。
- Cloud Trace(OpenTelemetry / OpenCensus)
- Cloud Profiler(CPU / メモリプロファイル)
- Error Reporting(例外集約)
- Cloud Debugger(本番デバッグ)
4 Golden Signals(Google SRE の原則)
- Latency:成功 / 失敗リクエストの応答時間
- Traffic:リクエスト数 / 秒
- Errors:失敗リクエスト率
- Saturation:システムリソースの飽和度
5. Cloud Monitoring 詳細
監視対象のセキュリティメトリクス(公式 + カスタム)
| メトリック | 意味 | 典型閾値 |
logging.googleapis.com/byte_count | Cloud Logging 取り込み量 | 日次 +20% でアラート |
logging.googleapis.com/exports/error_count | Sink エクスポートエラー数 | 1 分 1 件で SEV2 |
nat.googleapis.com/port_usage_factor | Cloud NAT ポート使用率 | 70% Warning / 90% Critical |
cloudkms.googleapis.com/key_versions_per_keyring | KeyRing 当たりの鍵バージョン数 | 上限 1,000、80% で監視 |
secretmanager.googleapis.com/secret_count | シークレット数 | 急増を異常検知 |
compute.googleapis.com/quota/cpus/usage | vCPU 使用クォータ | 80% で容量計画 |
dlp.googleapis.com/quota/processed_bytes | SDP 処理バイト数 | 月予算の 80% で警告 |
カスタムメトリクス(OpenTelemetry)
- SCC Critical Findings 数:Cloud Functions で集計し OpenTelemetry で投稿
- Audit Log 取り込み P99 遅延:Log Sink の処理時間を計測
- Workload Identity Federation の異常な claim 数:STS Audit Log から派生
- VPC SC Policy Denied 数:境界違反のトレンド
アラート設計の原則
✅ アラート設計の鉄則
- Actionable のみ:受け取った人がすぐ行動可能なものだけ
- SLO ベース:閾値ではなくバジェット消費率でアラート
- Multi-Window Burn Rate:短期(5 分)と長期(1 時間)で異なる感度
- 通知の階層化:Critical → PagerDuty / High → Slack / その他 → メール
- アラート疲労を避ける:月次レビューで誤検知 / 不要アラートを削減
6. ロギング戦略とコスト
料金構造(2026 年 5 月時点)
取り込み料金
$0.50/GiB
最初の 50 GiB / 月は無料
_Required / Default 保管
無料
既定 30 日以内
カスタム Log Bucket 保管
$0.01/GiB/月
31 日目以降
Log Analytics クエリ
$0.10/GiB
スキャン量課金
コスト削減策
- Exclusion Filter ヘルスチェック / 内部 SA / 高頻度低リスク操作を除外。例:
resource.type="k8s_pod" AND severity="DEBUG"
- Sampling VPC Flow Logs / Firewall Logs のサンプリングレートを段階的に下げる(既定 50% → 10%)
- Tier 分離 ホットログ(30 日 BigQuery)/ ウォーム(1 年 Log Bucket)/ コールド(7 年 GCS Coldline)
- Data Access 限定有効化 機微サービスのみ ON、その他は OFF を維持
- Log-based Metrics 大量ログから集計値だけメトリック化、ログ本体は除外可
- Aggregated Sink の Filter 最適化 組織全体の取り込み量を 30〜50% 削減可能
gcloud Exclusion Filter で高頻度低リスクログを除外
gcloud logging sinks update _Default \
--add-exclusion=name=exclude-k8s-debug,filter='resource.type="k8s_pod" AND severity="DEBUG"' \
--add-exclusion=name=exclude-lb-healthcheck,filter='resource.type="http_load_balancer" AND httpRequest.userAgent="GoogleHC/1.0"' \
--add-exclusion=name=exclude-secret-list,filter='protoPayload.methodName="google.cloud.secretmanager.v1.SecretManagerService.ListSecrets"'
典型コスト分解(中規模組織 / 月次)
想定: 50 プロジェクト / 月 5 TB の Audit Log 取り込み
Audit Log 取込 35%
SCC Premium 22%
VPC Flow Logs 14%
Cloud KMS 12%
Secret Manager 8%
その他 9%
7. Cloud Trace / Profiler / Error Reporting
- Cloud Trace:分散トレース。OpenTelemetry SDK で計装、レイテンシボトルネック特定
- Cloud Profiler:継続的 CPU / メモリプロファイリング、本番稼働中に低オーバーヘッド
- Error Reporting:未捕捉例外の集約、Slack / メール通知
- Cloud Debugger:本番コードのスナップショット取得(停止せずに)
セキュリティ系のトレース活用
- IAM / VPC SC 違反のリクエスト経路追跡
- SDP de-identify パイプラインのレイテンシ分析
- Vertex AI 推論の異常応答時間検出
8. セキュリティサービスのコスト管理
主要セキュリティサービスのコストドライバ
| サービス | コストドライバ | 節約策 |
| Cloud Logging | 取り込み量 / 保管期間 | Exclusion Filter / Sampling / Tier 分離 |
| Cloud Audit Logs (Data Access) | サービス × 操作頻度 | 機微対象のみ有効化、不要操作を除外 |
| SCC Premium / Enterprise | Asset 数 × 月額 | 非対象プロジェクトを除外、Tier 見直し |
| Cloud KMS | 鍵数 + Operation 数 | 不要鍵の destroy、ローテーション周期見直し |
| Cloud HSM | 鍵数(HSM は SOFTWARE の数倍) | HSM 必須の鍵のみ HSM、その他は SOFTWARE |
| Cloud EKM | 外部 KMS 側 + Operation 数 | キャッシュ TTL の最適化(外部 KMS 側の設定) |
| SDP / DLP | 処理バイト数 | Discovery scope 限定 / サンプリング |
| Cloud Armor | ポリシー数 + リクエスト数 | Edge / Backend Policy の役割分離、不要ルール削除 |
| Cloud IDS | Endpoint 時間 + 処理 GB | 本番 VPC のみ、TLS トラフィック除外 |
| Cloud NAT | 処理 GB + NAT IP 数 | PSC for Google APIs で egress 削減 |
| Secret Manager | アクティブシークレット数 + access 数 | 古いバージョンの destroy、不要 secret 削除 |
コスト可視化と統制
- Cloud Billing → BigQuery エクスポート:ラベル別 / プロジェクト別 / SKU 別の詳細分析
- FinOps ダッシュボード:Looker Studio / Looker で月次レビュー
- 予算アラート:50% / 75% / 90% / 100% / 120% で Slack 通知
- Custom Quota:プロジェクト単位で「BigQuery クエリ usage 上限」「Cloud NAT IP 数」など
- Recommender:Cloud Billing Recommender が「使われていない CMEK 鍵」「過剰な Log 保持」を提案
9. クォータ / キャパシティ計画
主要クォータ(既定値の一部)
| クォータ | 既定 | 備考 |
cryptoKeys.encrypt requests / minute | 300,000 | 大量バッチで枯渇しやすい |
logging.entries.write per minute | 120,000 | 大量アプリログで上限到達 |
secretmanager access / minute | 90,000 | マイクロサービスでは特に注意 |
compute.cpus per region | 24〜数千 | 新規リージョンは少なめ |
VPC Service Controls perimeters per org | 30 | 引き上げ申請可能 |
| Workload Identity Pools / Project | 100 | |
| Workload Identity Pool Providers / Pool | 10 | |
dlp processed bytes / day | 制限なし | 課金で青天井、Custom Quota で制限 |
容量計画の手順
- 過去 90 日の使用量を Cloud Monitoring から抽出
- 増加トレンド + 季節性を分析(イベント / セール / 月末バッチ)
- 3〜6 ヶ月先の 必要量を予測(線形 / ARIMA)
- クォータ 80% 到達時点を予測し、その 30 日前に引き上げ申請
- Cloud Monitoring の SLO Burn Rate Alertで予防検知
⚠️ クォータ枯渇の典型シナリオ
- 新規 BigQuery 取り込みで KMS encrypt クォータ枯渇 → 全 CMEK サービスが連鎖障害
- Secret Manager 大量アクセスでクォータ到達 → Pod 起動失敗
- Cloud NAT ポート枯渇 → 外部 API 接続が断続失敗
- Compute CPU クォータ枯渇 → Autoscale が止まり SLO 違反
10. Runbook / Playbook 整備
Runbook(手順書)に必須の項目
- トリガー条件(どのアラート / イベントで開く)
- 影響範囲の確認(影響評価コマンド)
- 初動対応(封じ込め手順)
- 復旧手順(ステップごとの gcloud / Terraform コマンド)
- エスカレーション基準(誰に / いつ)
- 関連ダッシュボードのリンク
- 過去のインシデントへのリンク
セキュリティ Runbook の代表例
- SA 鍵漏洩対応(Github / Public への流出検出時)
- VPC SC 違反による業務停止対応
- Cloud KMS 鍵 destroy 誤操作対応
- SCC Critical Finding 対応(IAM 異常 / マルウェア検知)
- 大量データ漏洩対応(72h 規制報告含む)
- 外部 IdP 障害時の Super Admin 利用
- Audit Log 欠落対応
- 本番 Org Policy 変更ロールバック
✅ Runbook の作り方
- Git で管理(Markdown)、CI で構文チェック
- 四半期に fire drillで実際に Runbook を実行
- 各ステップに 所要時間と 確認ポイントを明記
- 新人オンコールが 夜中に読んで実行できるレベル
11. オンコール / エスカレーション
オンコール体制設計
- Follow-the-Sun:複数拠点で時差カバー(米国 / 欧州 / 日本)
- Primary / Secondary:1 次対応者 + バックアップ
- Escalation Tree:1 次 → 2 次 → Manager → CISO → C-level
- RTO 明示:SEV1 = 15 分、SEV2 = 30 分など
オンコール健康管理(公式 SRE 原則)
- 1 週間のオンコール後に 1 週間のオフタイム
- ページング回数 1 シフトで 2 回以下を目標(Operational Overload)
- 業務時間外のページは compensationを支給
- 四半期に オンコール体験を振り返り、改善
Incident Command(インシデント対応の役割分担)
- Incident Commander (IC):全体指揮、意思決定
- Operations Lead:実際の復旧操作
- Communications Lead:社内外コミュニケーション
- Scribe:時系列ログを記録(ポストモーテムの材料)
12. Chaos Engineering / Game Day
想定シナリオを意図的に発動させ、対応力を訓練する。
セキュリティ系 Game Day シナリオ例
- SA 鍵漏洩 simulator:テスト用 SA 鍵を Public Gist に投稿し、検知から対応まで計測
- VPC SC Dry Run → 強制 enforce:影響範囲が見えるかテスト
- KMS 鍵 disable:開発環境で鍵を 30 分 disable し、依存サービスの fail-safe を確認
- 外部 IdP 停止:SSO IdP を意図的に停止、Super Admin 復旧手順を演習
- Cloud Logging 障害シミュレーション:Sink writerIdentity を一時剥奪、SIEM の欠落検知
- Critical Finding 発火:SCC に意図的に Finding を作り、対応 SLO 達成を計測
✅ Game Day 運用
- 四半期に 1 回、半日かけて実施
- 事前に「成功条件」を定義(RTO 達成 / Runbook 通り対応)
- 事後に blameless retrospective
- 明らかになったギャップは Backlog 化、次回までに改善
13. IaC / GitOps / Policy-as-Code
セキュリティ構成の IaC 化
- Terraform:組織ポリシー / IAM / VPC SC / KMS 鍵 / SCC Tier すべてコード化
- Config Connector / Config Controller:GCP リソースを Kubernetes CRD で管理
- Crossplane:マルチクラウド統一管理(必要なら)
- Open Policy Agent (OPA) / Gatekeeper:Policy-as-Code、CI で構成検証
- Sentinel:Terraform Enterprise の policy 検証
GitOps の実装例
[ 開発者 ]
│ PR 作成
▼
[ Git Repo: security-config ]
│ Cloud Build trigger
▼
[ Terraform plan + OPA policy check ]
│ レビュー(CODEOWNERS: SOC)
▼
[ PR マージ ]
│
▼
[ Cloud Build: Terraform apply ]
│
▼
[ GCP 構成変更 + Audit Log ]
│
▼
[ Config Drift Detection(cron)]
Policy-as-Code 例(OPA / Rego)
rego Workload Identity Federation Provider に attribute-condition を必須化
package terraform.gcp.wif
deny[msg] {
resource := input.resource.google_iam_workload_identity_pool_provider[name]
not resource.attribute_condition
msg := sprintf("WIF provider %q must define attribute_condition", [name])
}
deny[msg] {
resource := input.resource.google_iam_workload_identity_pool_provider[name]
resource.attribute_condition == ""
msg := sprintf("WIF provider %q has empty attribute_condition", [name])
}
Drift 検出
- Cloud Asset Inventoryで実際の構成を取得
- Terraform state との差分を Cloud Functionsで日次比較
- 差分があれば Slack 通知 + Security Posture Service で Finding 化
14. DR / BCP 設計
セキュリティ機能の DR 観点
| 機能 | DR 要件 | 実装 |
| Cloud KMS 鍵 | リージョン障害でも鍵アクセス可能 | multi-region keyring、または別 region の鍵で副本 |
| Cloud HSM | 同上 | multi-region HSM、定期 backup |
| EKM(外部 KMS) | 外部 KMS の冗長化 | 2 拠点冗長、SLA 99.99% |
| Secret Manager | シークレット保管の冗長 | user-managed replication(複数 region) |
| Audit Log | 欠落なし、改ざんなし | 2 重 Sink(GCS + BigQuery)、Bucket Lock |
| SCC | Finding ストレージの冗長 | Aggregated Sink で Pub/Sub 経由 SIEM |
| IAM ポリシー | 誤操作からの復元 | Cloud Asset Inventory の履歴で rollback |
| VPC SC ポリシー | 誤適用からの rollback | Terraform state + 古いバージョン保持 |
| 組織ポリシー | 同上 | Terraform で版管理 |
RTO / RPO の目安
- SOC ダッシュボード:RTO 30 分 / RPO 5 分
- Audit Log 取り込み:RTO 1 時間 / RPO 0(欠落なし)
- SCC Findings:RTO 4 時間 / RPO 1 時間
- 規制対応データ(Audit Log):RTO 8 時間 / RPO 0
- セキュリティ構成全体:RTO 1 営業日 / RPO 1 時間
15. セキュリティ運用 KPI
運用成熟度を測る KPI
| KPI | 目標 | 計測 |
| MTTD(平均検知時間) | 15 分以内 | インシデント発生時刻 → 検知時刻 |
| MTTR(平均復旧時間) | SEV1 = 1h、SEV2 = 4h | 検知 → 復旧 |
| MTTC(平均封じ込め時間) | SEV1 = 15 分 | 検知 → 封じ込め完了 |
| Toil 比率 | 50% 未満 | 反復作業 ÷ 総時間 |
| 自動修復率 | 70% 以上 | 自動 close Findings ÷ 全 Findings |
| SLO 達成率 | 100% | 定義 SLO 数のうち target 達成 |
| 未対応 Critical Finding 数 | 0 | SCC Findings の age 分布 |
| Coverage(カバレッジ) | 100% プロジェクト | SCC / Sink / 組織ポリシー対象 |
| Postmortem 完了率 | 100% / 72h 以内 | SEV1/2 インシデント数 ÷ ポストモーテム数 |
| Game Day 実施頻度 | 四半期 1 回以上 | ― |
16. 成熟度モデルとロードマップ
セキュリティ運用成熟度(5 段階)
Level 1: Reactive
- 事故が起きてから対応
- SLO 未定義
- Runbook なし
- 手動対応中心
Level 2: Managed
- 基本監視 + アラート
- Runbook 一部整備
- Cloud Logging 集約
- SCC Standard 有効
Level 3: Defined
- SLO / SLI 定義
- Runbook 完備
- IaC でセキュリティ構成
- SCC Premium、ETD 活用
Level 4: Proactive
- Error Budget 運用
- Game Day 四半期
- 自動修復 70% 以上
- SCC Enterprise、Chronicle
Level 5: Optimizing
- SLO バジェットで投資判断
- Toil 30% 未満
- Predictive Analytics
- マルチクラウド統合 SOC
ロードマップ提案
- L1→L2: 3 ヶ月
- L2→L3: 6 ヶ月
- L3→L4: 12 ヶ月
- L4→L5: 継続的改善