Skip to content

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(削除は復元に手順が要る操作)

  1. ゾーンの定義(DNS 名・公開範囲・DNSSEC 設定など)を書き出して保存する
  2. 親ゾーン・レジストラ側の委任を先に外し、影響がないことを確認してからゾーンを削除する

ロールバック: 保存した定義からゾーンを再作成します。再作成後は割り当てられるネームサーバ集合が変わることがあるため、委任を再設定する場合はレジストラ・親ゾーン側の NS レコード更新まで行います。

効果検証

削減の確定は、変更前ベースラインと変更後請求の比較で行います(Verify)。