Skip to main content
Installing the Ankra Agent does not create a new compliance boundary. It creates one new privileged identity inside a boundary you already govern. That distinction carries the whole page. A new boundary means new controls, new evidence and a new perimeter to defend - the agent introduces none of those. A new privileged identity means an entry in an inventory you already maintain, assessed by a process you already run. The agent is the second thing. Most controls a reviewer reaches for come back out of scope or already satisfied. One comes back in scope and stays there: the agent holds a cluster-admin ServiceAccount. That is answered directly below rather than left to be discovered.

Scope determination

“Out of scope” means the agent adds nothing the control governs. “Satisfied” means it is in scope and passes as evidence rather than as a gap.

What crosses the boundary

Every connection is opened by the agent, from inside your cluster, outbound. There is no inbound row in this table because there is no inbound path. The egress-IP lookup is the only optional outbound call and it stays off unless you enable it. Both required destinations are stable hostnames, so confining the agent’s namespace to them with a NetworkPolicy is straightforward - see Hardening the Agent.

What never leaves the cluster

  • Secret values - before a Secret enters the sync pipeline, every data and stringData value is replaced with a short SHA-256 digest. Key names survive so the console can show key counts, and a rotated value still changes the digest so change detection works, but the plaintext never reaches the control plane and never reaches the agent’s own on-disk buffer.
  • Container images and their contents - vulnerability scanning runs in-cluster and only findings metadata leaves. No image layers or filesystem contents.
  • SOPS plaintext - values encrypted with SOPS are decrypted inside your cluster at deploy time. Git and the control plane hold ciphertext only.
  • Application traffic and volume data - the agent never sees request bodies, database contents, or persistent volume data.
  • Credentials in logs - agent logs pass through a redaction handler that strips authorization headers, embedded URL credentials, provider tokens, password assignments and docker config JSON before a line is emitted.
One deliberate exception: the console’s view secret action returns live secret values to an operator who holds the permission for it. That is an authorised, audited, on-demand read rather than a background flow. If your policy forbids it, withhold the permission through Roles & Access.

Runtime posture as benchmark evidence

The pod ships hardened rather than leaving hardening to you, and every setting below is visible in the chart before you install. Verify any of these against a running agent with the commands in Hardening the Agent.

The cluster-admin question

The agent’s ClusterRole grants every verb on every resource in every API group, plus all non-resource URLs, bound cluster-wide. There is no way to present that as least privilege. Why it is that way. The agent installs arbitrary Helm charts and raw manifests that you choose, reconciles them, and proxies authenticated kubectl - including watch, logs -f and exec - for the whole cluster. A tool that deploys arbitrary workloads needs reach equivalent to the workloads it deploys. What it means for your review. The agent belongs in your privileged-access inventory, recorded as a justified exception and reviewed on the same cadence as your other cluster-admin bindings. It will appear in a CIS 5.1.1 review. That is the correct outcome, not a finding to argue away.

Compensating controls

  • The identity is revocable from outside the cluster. Each cluster has its own registration token. Revoking it at the platform, or rotating the Kubernetes Secret holding it, cuts the agent off without needing cluster access. After repeated identity rejection the agent stops and the cluster is marked disconnected.
  • Per-agent, per-organisation transport credentials. NATS credentials are issued to that agent at registration, scoped to its own command subject, on an account isolated per organisation. Session tokens rotate. There is no shared or long-lived transport secret.
  • Approval gates automated writes. AI-proposed changes become drafts applied as attributed Git commits, each approved by a person by default. If an organisation enables chat autonomy, a conversation its user has opted into Auto executes low-risk, purely additive, pre-validated changes without a per-change click - every such action carries an attributed audit entry, and removals, cluster lifecycle, and anything failing validation still require a human. The AI never mutates a cluster outside this pipeline and is never shown secret values.
  • Reconciliation is bounded. Release operations serialise on a Kubernetes Lease, and pruning runs behind anti-mass-deletion guards and sync windows, so drift correction converges toward Git rather than issuing surprise deletions.
  • Git holds desired state. Every change is diffable, attributable and revertable by you, independently of the platform.
  • Administrative actions are append-only audited, and exportable - see Audit Export.
The ClusterRole cannot currently be narrowed through chart values. If your policy requires a smaller grant, the workable routes are network and admission constraints, cluster tiering, or the self-hosted deployment - all covered in Hardening the Agent.

Framework mapping

A cluster-admin component inside a cardholder data environment cannot be descoped by asserting it does not touch cardholder data. Either keep Ankra-managed clusters outside the CDE, or assess the agent as an in-scope system component.

Hardening the Agent

Restrict egress, ship metrics and logs, and pin optional behaviours.

Shared Responsibility

Why Ankra’s footprint in your certification is narrow.

Ankra Agent

How the agent works and what it does.

Data Handling

What the control plane stores.