ストーリー
コンプライアンスゲートとは
パイプラインの特定のポイントで、コンプライアンス要件への適合性を自動的にチェックし、基準を満たさない場合はパイプラインを停止する仕組みです。
ゲートの配置ポイント
コード → [Gate 1] → ビルド → [Gate 2] → ステージング → [Gate 3] → 本番
PR品質 セキュリティ リリース承認
| ゲート | チェック内容 | 対応規格 |
|---|---|---|
| Gate 1: PR品質 | コードレビュー、SAST、SCA、テストカバレッジ | SOC2 CC8.1 |
| Gate 2: セキュリティ | コンテナスキャン、SBOM生成、脆弱性閾値 | PCI DSS 6.3 |
| Gate 3: リリース承認 | 承認者確認、変更記録、監査ログ | SOC2 CC6.1 |
SOC2対応のゲート設計
SOC2 Type IIで求められるコントロールをパイプラインに実装します。
変更管理コントロール
| SOC2要件 | パイプライン実装 |
|---|---|
| CC6.1: 論理的アクセス制御 | ブランチ保護ルール、CODEOWNERS |
| CC6.8: 不正変更の防止 | PRレビュー必須、署名付きコミット |
| CC8.1: 変更管理プロセス | 承認ワークフロー、変更ログ自動記録 |
# GitHub Branch Protection: SOC2対応設定
branch_protection:
required_status_checks:
strict: true
contexts:
- "security/sast"
- "security/sca"
- "test/unit"
- "test/integration"
required_pull_request_reviews:
required_approving_review_count: 2
dismiss_stale_reviews: true
require_code_owner_reviews: true
required_signatures: true
enforce_admins: true
ポリシー as Code
コンプライアンス要件をコードとして定義し、バージョン管理します。
Open Policy Agent (OPA)
# opa/deployment-policy.rego
package deployment
# 本番デプロイには2名以上の承認が必要
deny[msg] {
input.environment == "production"
count(input.approvers) < 2
msg := "本番デプロイには2名以上の承認が必要です"
}
# 承認者はデプロイ実施者と異なる必要がある
deny[msg] {
input.environment == "production"
input.deployer == input.approvers[_]
msg := "デプロイ実施者は承認者になれません(職務分離)"
}
# Critical脆弱性が存在する場合はデプロイを阻止
deny[msg] {
input.vulnerabilities[v]
v.severity == "CRITICAL"
msg := sprintf("Critical脆弱性が検出されました: %s", [v.id])
}
ポリシーの管理
| 側面 | 方針 |
|---|---|
| 保管場所 | 専用リポジトリ(org/compliance-policies) |
| バージョン管理 | SemVer、変更にはセキュリティチームの承認が必要 |
| テスト | ポリシー自体のユニットテスト |
| 配布 | パイプラインがポリシーリポジトリを参照 |
監査ログの自動化
コンプライアンス監査で必要な情報を自動的に記録します。
記録すべきイベント
| イベント | 記録内容 |
|---|---|
| コード変更 | 変更者、レビュー者、承認者、コミットハッシュ |
| ビルド | ビルドID、使用イメージ、依存関係一覧 |
| セキュリティスキャン | スキャン結果、検出された脆弱性、対処状況 |
| デプロイ | デプロイ者、承認者、環境、アーティファクトバージョン |
| ロールバック | 実施者、理由、影響範囲 |
監査ダッシュボード
監査ダッシュボード項目:
- デプロイ履歴(誰が、いつ、何を、どこに)
- セキュリティスキャン結果の推移
- 未対処の脆弱性一覧と対応期限
- コンプライアンスゲートの通過率
- ポリシー違反の発生件数と傾向
まとめ
| ポイント | 内容 |
|---|---|
| コンプライアンスゲート | パイプラインの3箇所に配置(PR、ビルド後、リリース前) |
| SOC2対応 | 変更管理、アクセス制御、監査ログを自動化 |
| ポリシー as Code | OPAでコンプライアンス要件をコード化 |
| 監査ログ | 全イベントを自動記録、ダッシュボードで可視化 |
チェックリスト
- コンプライアンスゲートの3つの配置ポイントを理解した
- SOC2要件のパイプライン実装方法を理解した
- ポリシー as Codeの概念と実装を理解した
- 監査ログの自動化の重要性を理解した
次のステップへ
次は「サプライチェーンセキュリティ」です。アーティファクトの生成から配布までのサプライチェーン全体をセキュアにする方法を学びましょう。
推定読了時間: 30分