Runbook — Entitle resource registration (E2E)
Audience: contributor · Profile:
demo· Read this when: you want to confirm built resources really do register as Entitle integrations.
End-to-end check that built VMs/DBs register as Entitle integrations, and (for
private targets) that the Entitle agent makes them reachable. See
../integrations/beyondtrust/entitle.md and
../design/entitle-resource-registration.md.
Prerequisites
- An Entitle tenant; in the Entitle console note an owner user UUID and a
workflow UUID, and confirm the application slugs (
ssh,postgresql,mysql,mssql) via theentitle_applicationsdata source. - Settings → Integrations → Entitle: API URL (pre-filled), API token, Terraform provider
API key, Owner ID (
entitle_owner_id) and Workflow ID (entitle_workflow_id) — all in the panel — and toggle Register built VMs & databases in Entitle on. The SSH sudo user is optional (each VM registers with its cloud-default login user automatically).
1. Public resource (no agent)
- Build a public Linux VM (AWS/Azure/GCP) with Register in Entitle checked (Azure/GCP: a VM with a public IP).
- Expect: the deploy job logs
Registered in Entitle (integration …); an SSH ephemeral accounts integration appears in Entitle with noagent_token. - Terminate the VM → the integration is removed.
If registration is skipped, confirm both the global Registration enabled flag and the per-build checkbox are on (
docker compose logs app | grep -i entitle).
2. Provision the agent (one-time, for private targets)
- Provision a dedicated cluster:
POST /api/k8s/clusters/provision(EKS), or register an existing one. - Install the agent: the cluster page → Entitle agent button (or
POST /api/k8s/clusters/{id}/entitle-agent {"action":"install"}). On first install the dashboard auto-mints an agent token via the provider key, stashes its value in the secrets backend (entitle_agent_token_ref→config://entitle/agent-token), and recordsentitle_agent_token_name— no manual token step. (Pre-setentitle_agent_token_refyourself only to use an externally-minted token.)entitle_agent_chart_repodefaults tohttps://anycred.github.io/entitle-charts/; addentitle_agent_helm_extra_setonly if the bundled Datadog needs it. Track thek8s_entitle_agentjob; expect the agent pod healthy andentitle_agent_cluster_idset. - Teardown: the
removeaction — and the decommission of the hosting cluster — uninstalls the agent and destroys the auto-minted token (an operator-suppliedentitle_agent_token_refis never touched), so the name is free for the next install. A failed token destroy fails the job and keeps the stash; retry to converge.
3. Private resource (agent path)
- Build a private cloud database (RDS) — or a private VM — with Register in Entitle checked.
- Expect: a PostgreSQL/MySQL/SQL Server (or SSH) integration in Entitle with
agent_token = {entitle_agent_token_name}; the agent reaches the private target. - Request JIT access in Entitle → confirm the ephemeral account / DB role is minted.
- Decommission → the integration is removed.
Notes
- Registration is non-fatal: a failure never blocks the VM/DB; the reason lands on the job. A private target with no agent configured raises a clear error.
- The agent token is passed to the chart as a plaintext Helm value (
agent.token, streamed over stdin — not--set; chart limit) — resolved server-side, but it lands in the in-cluster Helm release Secret. The agent's integration secrets are governed byentitle_agent_kms_type(set to a cloud secret manager / Vault to keep them out of etcd) — not ESO.