Appearance
KMS 旧鍵バージョン stale
ルール ID: gcp.kms.keyversion.stale ・ カテゴリ: zombie ・ 必要な読み取り: インベントリのみ(初回スキャンで検出) 計画中
鍵ローテーションの後も ENABLED のまま残り続けている古い鍵バージョンを見つけます。鍵バージョンは残っているだけで課金対象になり、ローテーションを重ねるほど静かに増えていきます。
このページは判定規範に従う予定仕様です。閾値・観測窓の根拠(出典)は実装時に付記します。
何を無駄とみなすか
primary でない ENABLED の鍵バージョンが長期間放置されている状態。もう暗号化には使われないバージョンにも課金が続きます。
判定条件
- 非 primary な ENABLED の鍵バージョンで、90 日超経過しているもの → disable(無効化)を提案します
- destroy(破棄)は提案しません — 破棄は不可逆で、そのバージョンで暗号化された既存データが復号不能になるためです
- DISABLED にしても課金は継続します。課金を止められるのは destroy だけですが、その判断は本ルールの提案範囲外(利用者の運用判断)です
必須 facts
- 鍵バージョンの状態(ENABLED / DISABLED 等)と primary かどうか
- バージョンの作成日時と経過日数
- 鍵の用途(暗号化/復号・署名など)
取得できない facts がある場合は「観測不能」と表示し、候補にしません(候補を捏造しない)。
誤検知・危険になり得る条件
- 古いバージョンで暗号化されたデータがまだ残っている鍵 — 復号には暗号化時のバージョンが必要なため、disable すると復号エラーになります
- 外部システムが特定バージョンの公開鍵を署名検証に使い続けている非対称鍵
- 監査・保全要件で旧バージョンの保持が定められている鍵
実行前の確認
- そのバージョンで暗号化されたデータが残存し得るか(データの再暗号化が済んでいるか)を確認する
- 鍵を利用しているサービス・アプリケーションと管理チームを特定し、合意を得る
- IaC(Terraform 等)で鍵バージョンの状態が管理されていないか確認する
非破壊テストとロールバック
Safety Tier: medium(disable は可逆な設定変更)
- disable した後に観察期間を置き、復号エラー・署名検証エラーが発生しないことを確認します
- ロールバック: 鍵バージョンの re-enable(エラーが出たら即座に戻せます)
- destroy には進めません(本ルールは disable までを提案します)
効果検証
削減の確定は、変更前ベースラインと変更後請求の比較で行います(Verify)。なお DISABLED の間は課金が続くため、disable 段階では請求は変わりません — 課金の停止は destroy を行う利用者判断に委ねられます。