Check ID: bigquery_table_cmk_encryption
Provider: GCP
Service: bigquery
Severity: HIGH
Categories: encryption
Resource type: bigquery.googleapis.com/Table

What this check verifies

BigQuery tables use customer-managed encryption keys (CMEK) for at-rest encryption. The evaluation identifies tables lacking a configured Cloud KMS key, indicating use of default Google-managed encryption instead.

Risk

Without CMEK, encryption keys are not under your control, reducing key custody and auditability. You can’t enforce region-bound keys, custom rotation, or revoke access by disabling a key, weakening confidentiality and compliance. A compromised account may retain data access without an external KMS gate.

Recommendation

Protect BigQuery tables with Cloud KMS CMEK to retain key ownership and control.
  • Set dataset/project default keys
  • Match key location to dataset region
  • Enforce least-privilege on KMS and monitor usage
  • Rotate keys and define revocation procedures
  • Apply org policies to require CMEK and restrict permissible key projects

Remediation

bq cp -f —destination_kms_key projects/<KMS_PROJECT_ID>/locations/<LOCATION>/keyRings/<KEY_RING>/cryptoKeys/<KEY> <DATASET_ID>.<TABLE_ID> <DATASET_ID>.<TABLE_ID>

References

Where this check fires

This check runs on every scheduled scan against your GCP account. Findings appear at Cloud Security → Findings filterable by Check ID = bigquery_table_cmk_encryption. To re-evaluate after a fix, hit Run now on the account’s schedule under Cloud Security → Schedules — the next scan re-checks this control and marks the finding fixed or keeps it persistent.
← Back to GCP checks