Skip to main content
compliance · gcp

Vertex AI TensorBoard instances created without a customer-managed key

resource types
1
rule IDs covered
1
severity
low

What does ZopNight detect here?

Vertex AI TensorBoard instances hold every uploaded training log, including scalars, histograms, graph definitions, images and text, and accept a customer-managed key only when created with `gcloud ai tensorboards create --kms-key`. ZopNight flags TensorBoard instances with no Cloud KMS key as low-severity compliance findings, with no saving.

Signal and threshold

How ZopNight evaluates Vertex AI TensorBoard instances created without a customer-managed key.
Field Value
Rule IDsRC-1348
Categorycompliance
Severitylow
Metricnone — pure configuration read
Thresholdno kmsKeyName in encryptionSpec
SourceZopNight
Permissions usedaiplatform.tensorboards.list · aiplatform.tensorboards.get

What training logs reveal

TensorBoard logs look harmless, but they carry more than loss curves. Google’s CMEK resource table describes a TensorBoard key as covering all data from uploaded logs: scalars, histograms, graph definitions, images and text. Images logged during training are often samples of the training data itself, and graph definitions describe the model architecture.

The TensorBoard setup guide is explicit about timing: if you want the data encrypted with CMEK, you must enable the key when creating the instance.

Listing TensorBoard instances

Terminal window
gcloud ai tensorboards list --region=REGION \
--format="table(name, displayName, encryptionSpec.kmsKeyName)"

An empty key column means Google default encryption.

How ZopNight flags an instance

ZopNight inventories each TensorBoard instance and records whether its encryption settings include a Cloud KMS key name. A confirmed absence raises the finding. Experiment count, log volume and last-upload time do not affect it.

What it leaves alone

Instances created with a key are silent. If the encryption setting was not collected, no finding is produced. Other Vertex AI resources are checked by their own rules, for example GCP Vertex AI vertex-model Without CMEK for the models these runs produce.

Compliance, not cost

There is no saving. The gap is training artefacts, sometimes including sample data, held outside the key policy that covers the rest of the pipeline.

Moving experiments to a keyed instance

  1. Create a key in the instance’s region and grant the Vertex AI service agent, service-PROJECT_NUMBER@gcp-sa-aiplatform.iam.gserviceaccount.com, the roles/cloudkms.cryptoKeyEncrypterDecrypter role.

  2. Create the new instance with the key:

    Terminal window
    gcloud ai tensorboards create --region=REGION --display-name=NAME \
    --kms-key=KEY --kms-keyring=KEYRING --kms-location=REGION --kms-project=KMS_PROJECT
  3. Point training jobs and the SDK at the new instance for all future runs.

  4. Re-upload any historical logs you need to keep, then delete the old instance.

See it fire on your bill.

Connect an account read-only. The first findings land in minutes.

472 rule families across 353 resource types on 22 platforms. Every threshold, metric, and IAM action is documented on these pages before you grant anything.

472 rule families documented
353 resource types covered
read-only default access level
Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console· Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console·