Vertex AI TensorBoard instances created without a customer-managed key
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
| Field | Value |
|---|---|
| Rule IDs | RC-1348 |
| Category | compliance |
| Severity | low |
| Metric | none — pure configuration read |
| Threshold | no kmsKeyName in encryptionSpec |
| Source | ZopNight |
| Permissions used | aiplatform.tensorboards.list · aiplatform.tensorboards.get |
Where it applies
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
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
-
Create a key in the instance’s region and grant the Vertex AI service agent,
service-PROJECT_NUMBER@gcp-sa-aiplatform.iam.gserviceaccount.com, theroles/cloudkms.cryptoKeyEncrypterDecrypterrole. -
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 -
Point training jobs and the SDK at the new instance for all future runs.
-
Re-upload any historical logs you need to keep, then delete the old instance.