Appearance
Cloud DNS 空ゾーン
ルール ID: gcp.clouddns.zone.empty ・ カテゴリ: zombie ・ 必要な読み取り: インベントリのみ(初回スキャンで検出) 計画中
レコードをひとつも持たない公開権威ゾーンは、何の名前解決にも使われないままゾーン単位の課金が続くことがあります。このルールは、作ったまま忘れられた公開ゾーンを見つけます。VPC 内の名前解決に使う private zone は対象にしません。
このページは判定規範に従う予定仕様です。閾値・観測窓の根拠(出典)は実装時に付記します。
何を無駄とみなすか
apex(ゾーン頂点)の SOA / NS 以外にレコードセットがひとつもない公開権威ゾーン。apex の SOA / NS はゾーン作成時に自動作成され削除できないため、公開ゾーンでこれしかない場合を実質的に空とみなします。
private zone は、空に見えても split-horizon や特定 DNS suffix の名前解決を意図的に制御している可能性があるため、候補から除外します。
判定条件
- 公開範囲が public の通常の権威ゾーンである
- apex の SOA / NS 以外のレコードセットが 0 件、かつ作成から 15 日以上経過(単発観測では open にしない)
- apex 以外の NS レコード(サブドメイン委任)は実レコードとして扱い、使用中と判定します
- private zone、および forwarding / peering など設計上ユーザのレコードを持たないゾーン種別は対象外です
必須 facts
- ゾーンの構成種別(通常の権威ゾーンかどうか)と公開範囲(public / private)
- private zone に関連付けられた VPC network
- apex SOA / NS 以外のレコードセット数
- 作成からの経過日数
- 公開範囲や network の関連付けを含め、取得できない facts がある場合は「観測不能」と表示し、候補にしません(候補を捏造しない)。
誤検知・危険になり得る条件
- レコード投入前の準備中ゾーン(IaC の適用待ちなど)
- 親ゾーンやレジストラからの委任だけを先に設定してあるゾーン(削除すると委任だけが宙に浮きます)
- 環境複製のひな形として意図的に保持しているゾーン
private zone の split-horizon や名前解決ブロックは正当な用途です。このルールではリスク表示だけに頼らず、private zone 自体を判定対象から除外します。
実行前の確認
- 公開範囲が public であり、VPC network に関連付けられた private zone ではないことを確認する
- 親ゾーン・レジストラ側にこのゾーンへの委任(NS レコード)が残っていないかを確認する(残したまま削除すると名前解決の失敗として現れます)
- ゾーン名・命名規則から用途と担当チームを確認する
- IaC(Terraform 等)での定義有無を確認する
非破壊テストとロールバック
Safety Tier: high(削除は復元に手順が要る操作)
- ゾーンの定義(DNS 名・公開範囲・DNSSEC 設定など)を書き出して保存する
- 親ゾーン・レジストラ側の委任を先に外し、影響がないことを確認してからゾーンを削除する
ロールバック: 保存した定義からゾーンを再作成します。再作成後は割り当てられるネームサーバ集合が変わることがあるため、委任を再設定する場合はレジストラ・親ゾーン側の NS レコード更新まで行います。
効果検証
削減の確定は、変更前ベースラインと変更後請求の比較で行います(Verify)。