Back to Checks
Cloud DNS managed zone has DNSSEC enabled
dns_dnssec_disabled
Service: dnsSeverity: medium
OfficialBuilt-inVerified
Categories:encryption
Resource Type:dns.googleapis.com/ManagedZone
Cloud DNS managed zones are assessed for DNSSEC status. Zones with DNSSEC sign zone data and publish DNSKEY/RRSIG; zones without it remain unsigned and unauthenticated.
Risk
Without DNSSEC, DNS responses lack authenticity, enabling cache poisoning, spoofed referrals, and domain hijacking. Victims may be redirected to attacker hosts, exposing credentials and data (confidentiality), enabling tampered content and records (integrity), and causing misrouting or outages (availability).
Run this check with Prowler
Run in Prowler CloudRun
prowler gcp --checks dns_dnssec_disabledRecommendation
Enable DNSSEC on public zones and complete the chain of trust by publishing a DS record at your registrar. Use DNSSEC-validating resolvers, apply least privilege for DNS administration, and monitor key lifecycle events. Private zones are not DNSSEC-signed.
Remediation
CLI
gcloud dns managed-zones update <DNS_ZONE> --dnssec-state onTerraform
resource "google_dns_managed_zone" "<example_resource_name>" {
name = "<example_resource_name>"
dns_name = "example.com."
dnssec_config {
state = "on" # Critical: enables DNSSEC for the managed zone
}
}Other
1In the Google Cloud Console, go to Cloud DNS
2Click the managed zone name
3Click Edit
4Under DNSSEC, select On
5Click Save
Check Code
from prowler.lib.check.models import Check, Check_Report_GCP
from prowler.providers.gcp.services.dns.dns_client import dns_client
class dns_dnssec_disabled(Check):
def execute(self) -> Check_Report_GCP:
findings = []
for managed_zone in dns_client.managed_zones:
report = Check_Report_GCP(
metadata=self.metadata(),
resource=managed_zone,
location=dns_client.region,
)
report.status = "PASS"
report.status_extended = (
f"Cloud DNS {managed_zone.name} has DNSSEC enabled."
)
if not managed_zone.dnssec:
report.status = "FAIL"
report.status_extended = (
f"Cloud DNS {managed_zone.name} doesn't have DNSSEC enabled."
)
findings.append(report)
return findingsReferences
- https://www.trendmicro.com/trendaivisiononecloudriskmanagement/knowledge-base/gcp/CloudDNS/enable-dns-sec.html
- https://cloud.google.com/dns/docs/dnssec-config
- https://cloud.google.com/sdk/gcloud/reference/dns/managed-zones/create?authuser=4
- https://cloud.google.com/dns
- https://docs.cloud.google.com/dns/docs/dnssec
- https://cloud.google.com/dns/docs/dnssec-config?hl=vi
- https://cloud.google.com/dns/docs/registrars?hl=Es