Security

What Nodrik can read, and what it cannot.

Nodrik reads your telemetry, transiently, using an identity you grant and can revoke. This page states precisely what that means. If anything here is vague, treat it as a bug and tell us.

1 · What Nodrik can read

One service account per customer, created in our project, granted these four roles by you on the projects you choose:

RoleWhy it is neededVerbs
roles/logging.viewerwhat the service saidentries.list
roles/monitoring.viewerwhat the metrics did, and what else is firingtimeSeries.list · alerts.list · alertPolicies.list · notificationChannels.list
roles/errorreporting.viewerwhat is failing, and since whengroupStats.list
roles/run.viewerwhat changed in a deployrevisions.list · services.get

Optionally, per service you name, one more read-only role — a custom role defined in your project holding exactly the get and list permissions the tool behind it calls — so Nodrik can read a service's settings as well as its telemetry. Never granted with the four, never asked for in advance, deleted by the revoke script. For GKE it reads the GKE API and never connects to your cluster. The full list, verbs and all:optional configuration roles.

Optionally, a GitHub App you install with Contents and Metadata, read-only, on the repositories you select — so Nodrik can name the commit behind a deploy.

2 · What Nodrik cannot do

3 · What persists, and what does not

Nodrik is a reach-in product: telemetry is read at investigation time through your own APIs and used to answer one question. Your telemetry is never copied out wholesale or indexed. The transcript below is excerpts of what was read — each tool result capped at 4,000 characters — not a copy of the telemetry itself.

What we do store:

Every tool result is redacted before the model sees it, and the transcript again before it is written: private keys, API keys, bearer tokens, payment card numbers, email addresses (other than Google service-account identities) and IP addresses are replaced. Where each of the things above is held, service by service, is stated in the DPA(clause 7).

4 · It happens in your audit log

The grant is your action, performed by your administrator. Granting a role is an IAM policy change, so it lands in your project's Admin Activity audit log automatically — that log is always on and cannot be turned off.

The reads that follow are a different log. Every call the four viewer roles make —entries.list, timeSeries.list, groupStats.list,revisions.list, services.get — is a Data Accessaudit log entry, and Google leaves Data Access logging off by default for every service except BigQuery. Skip this step and the grant is logged; the reads it produces are not.

Turn it on once, for the services Nodrik uses, and it stays on:

  1. In the Google Cloud console, open IAM & Admin → Audit Logs on the project you granted.
  2. Select Cloud Logging, Cloud Monitoring,Cloud Run Admin and Error Reporting (add any configuration-role service you opted into — Cloud SQL, Memorystore, GKE, Compute Engine, or the load balancer).
  3. For each, enable Admin Read and Data Read, then save.

From then on, every read is attributable and you can query it:

gcloud logging read \
  'protoPayload.authenticationInfo.principalEmail="tenant-YOURID@tg-shard-0.iam.gserviceaccount.com"' \
  --project YOUR_PROJECT --freshness 30d

Before you turn it on, that same query returns only the grant itself and whatever else your project already logs — not Nodrik's reads. This is Google's default for every service on every Google Cloud project, not something particular to us; we would rather say so than let "attributable in your audit log" read as true before you have done anything.

Revoking is symmetrical: remove the role bindings — the four, and any optional configuration role — and Nodrik goes blind, immediately.

5 · Where things run

Nodrik runs on Google Cloud. Model inference runs on Vertex AI inside Google's boundary — your redacted telemetry excerpt is sent to Google's model endpoint as part of the investigation, and is not used to train models.

During an investigation Nodrik may also send a short search query to Google's documentation search API (the Developer Knowledge API, a Google Cloud API), and open one of the pages that search returned, to check an error message or a command against Google's current Google Cloud documentation — never the open web. After the report is written, the claims its suggested fix makes are checked the same way. The query is derived from the already-redacted investigation, and nothing is stored there.

Stated rather than buried: every model request goes to Vertex AI's global endpoint, so the telemetry excerpts in it may be processed outside the EEA. Nothing is stored there. Where each part of the product holds data, service by service, and the transfer terms that apply, are in the DPA (clause 7).

6 · Read the exact grants before you run them

Onboarding is a documented set of gcloud commands. You can run the manual doc, the script, or the Terraform module — all three produce identical grants, and all three are readable before you run them. That is deliberate: the auditable script is the transparency artefact.

7 · Certifications, honestly

We are not SOC 2 certified. We run audit logging, least-privilege access, keyless CI, and PR-gated change control from day one, and we will certify when a customer's procurement process requires it. We would rather say that plainly than display a badge-shaped placeholder.

8 · Sub-processors

The full list, with locations and notice terms, is in the data processing agreement. Questions: support@nodrik.dev.