Skip to main content
warning

The binaries used for Linux packages are dynamically linked and require glibc >=2.17 to be present on the system.

Installing Defakto Agent on Linux

The Defakto Agent can be deployed on Linux systems to issue SPIFFE IDs to workloads running on a bare-metal node or VM.

To deploy the Defakto Agent, you need either SSH access to the node, or the ability to write files to disk, download files from a URL, and install a package. You should also have systemd running on the node.

Step 1 — Choose an agent attestation method

The agent must authenticate to the Trust Domain Server using an attestation method. Choose the method that matches your environment:

See Agent Attestation Methods for the full list of available methods, policy configuration, and server-side setup.

Step 2 — Create the agent configuration

Create /etc/spirl/agent-config.yaml with your Trust Domain Server endpoint used during deployment and chosen attestation method. For example, using AWS Identity Document:

spirl-endpoint: your-trust-domain.org:443
agent-attestors:
- type: aws_iid

Refer to the individual attestation method page for the correct type value and any required config fields.

For all available configuration keys, see the Configuration Reference below.

Step 3 — Install the agent

Download the package for your architecture:

# AMD64 Debian
curl -o spirl-agent.deb https://spirl-releases.s3.us-west-2.amazonaws.com/spirl-agent/0.41.0/spirl-agent_0.41.0_linux_amd64.deb

# AMD64 RPM
curl -o spirl-agent.rpm https://spirl-releases.s3.us-west-2.amazonaws.com/spirl-agent/0.41.0/spirl-agent_0.41.0_linux_amd64.rpm

# ARM64 Debian
curl -o spirl-agent.deb https://spirl-releases.s3.us-west-2.amazonaws.com/spirl-agent/0.41.0/spirl-agent_0.41.0_linux_arm64.deb

# ARM64 RPM
curl -o spirl-agent.rpm https://spirl-releases.s3.us-west-2.amazonaws.com/spirl-agent/0.41.0/spirl-agent_0.41.0_linux_arm64.rpm

Install the Debian package:

sudo dpkg -i spirl-agent.deb

Or the RPM package:

sudo yum install spirl-agent.rpm

Step 4 — Verify

Verify the service is running:

systemctl status spirl-agent.service

Configuration Reference

The agent is configured via a YAML file at /etc/spirl/agent-config.yaml. The file path can be overridden with the --config-file-path flag or SPIRL_CONFIG_FILE_PATH env var. Keys use kebab-case.

Required

KeyTypeDefaultDescription
spirl-endpointstring or []stringlocalhost:8180Address(es) of the Trust Domain Server endpoint

Agent attestation configuration is also required — see Agent Attestation below.

Connection to TD Server

KeyTypeDefaultDescription
spirl-endpoint-enable-tlsbooltrueUse TLS when connecting to the Trust Domain Server endpoint
spirl-endpoint-supplemental-roots-filestring""Supplemental root CAs for validating the Trust Domain Server endpoint
spirl-endpoint-connection-max-ageduration30mMax age of connections to the Trust Domain Server endpoint

Workload Attestation

Fields marked with * can also be set via Managed Configuration, which is the preferred approach. Values set here override the managed configuration.

KeyTypeDefaultDescription
spiffe-socket-pathstring/var/run/spirl/spiffe.sockPath to the SPIFFE Workload API socket
disable-kubernetes-attestation *boolfalseTurn off Kubernetes workload attestation
disable-docker-attestation *booltrueTurn off Docker workload attestation
linux-attestation-discover-workload-path *boolfalseEnable discovery of workload binary path during attestation
jwt-attestation-supplemental-roots-filestring""Additional root CAs in PEM format for JWKS URL validation
extension-workload-attestation-exec-cmdstring""Path to the extension workload attestor executable
extension-workload-attestation-exec-args[]string[]Arguments to pass to the extension workload attestor
extension-workload-attestation-exec-checksumstring""SHA256 checksum of the extension executable for integrity verification
extension-workload-attestation-timeoutduration100msTimeout for the extension workload attestor to complete
allowed-attributes *[]string[]Attribute filter patterns; attributes not matching at least one filter are redacted
supplemental-roots-filestring""CAs to inject into the local trust bundle served to workloads via the SPIFFE Workload API, in addition to the Defakto-issued bundle

Agent Attestation

KeyTypeDefaultDescription
agent-attestation-methodstring""Method for attesting the agent to the server
agent-attestorsArray of { type: string, config: object }[]Agent attestor configurations
cluster-version-idstring""Cluster version ID used to authenticate the agent to the Trust Domain Server
cluster-version-key-filestring""Path to the cluster version private key file

See Agent Attestation Methods for the full list of attestation methods and their configuration.

Telemetry & Observability

KeyTypeDefaultDescription
spirl-agent-idstring""Human-readable agent identifier shown in logs and dashboards. If unset, a random ID is generated at startup (and changes on each restart).
telemetry-metrics-api-listen-addrstring""Address for Prometheus metrics endpoints
telemetry-enable-grpc-latency-monitoringboolfalseEnable gRPC latency histogram metrics
telemetry-enable-workload-svid-expiry-metricsboolfalseEnable workload SVID expiry metrics with pod/namespace/service-account labels
health-listen-addrstring:8086Address for /ready and /live health endpoints; set to "" to disable
silence-usage-logsboolfalseSuppress CPU/memory resource limit logging