Security

Security is part of the control plane.

Managing Docker on a machine is a privileged operation. Every host holds its own identity, the control server authorizes each action, the agent can perform only the operations it was built with, and what changes is recorded.

01Agent identity

Every agent has its own identity.

A host enrolls with a short-lived token and comes away with a credential of its own. An individual agent can be revoked without replacing one global fleet key.

Enrollment lifecycle

  1. An administrator creates a short-lived enrollment token.
  2. The agent enrolls over authenticated TLS.
  3. The agent receives its own device-specific credential.
  4. Ongoing communication uses a device-authenticated encrypted channel.
  5. A single agent credential can be revoked without replacing the others.
  6. Enrollment and revocation are recorded in the audit history.

02Capability model

Defined operations instead of arbitrary commands.

The agent accepts a fixed catalogue of named capabilities with validated payloads, decided when it was built. A request names a container or a stack and an operation from that catalogue; none of them carries a command, an argument list or input for a container.

There is no exec, no attach and no shell on any path, and nothing that administers the host itself — nothing reboots a machine, installs a package or changes a system setting. What Dockplane changes on a managed host it changes through the Docker Engine: containers, and the stacks made of them.

The catalogue is listed in full in the security model.

  1. Browser session

    Dockplane application

    An authenticated operator requests an operation on a workload.

  2. HTTPS

    Control server

    Checks the session, applies backend authorization and attaches audit and correlation context.

  3. Authenticated agent channel

    Dockplane agent

    Accepts a named capability with a validated payload and re-checks it before acting on the host.

  4. Docker Engine API

    Docker Engine

    Performs the requested operation locally on the managed host.

Example capabilities

host.metricscontainer.inspectcontainer.logscontainer.restartcontainer.replacestack.deploy

03 — Authorization

The backend is the authorization boundary.

Hiding a button is not access control. Sensitive API operations and dispatched agent actions require backend authorization.

Permissions are granular by operation: reading a container, following its output, changing it and removing it are separate grants, so an operator who should be able to restart a stuck service does not also have to be able to delete one. They apply across the environment today; scoping them to a single host or group is planned, not present.

04 — Audit

Operational changes leave a trail.

Security-relevant and infrastructure-changing actions are recorded with actor, target, result and correlation context, without turning the audit log into a secret store.

05 — Docker access

Docker access is privileged.

Access to the Docker daemon can be equivalent to privileged host control depending on configuration. Dockplane documents that trust boundary rather than presenting Docker socket access as harmless.

An unauthenticated Docker TCP endpoint is not an acceptable way to simplify agent deployment.

06 — Secrets

Secrets do not belong in logs.

Passwords, enrollment material, private keys, session credentials and unrestricted environment values must be excluded or redacted from normal logging and telemetry.

Found a security issue?

Report it privately rather than in a public issue. A report is most useful when it names the affected version and component, describes the impact and includes a reproduction with sanitized logs.

Report a vulnerability

Please do not disclose an exploitable issue publicly before the maintainers have had a chance to investigate and prepare a fix.