realm-management roles on the target realm.
Supported platforms
Prerequisites
- A Keycloak realm you want CloudThinker to inspect.
- Admin access to create a confidential client and assign service-account roles —
kcadm.sh(self-hosted) or the realm console (Phase Two). - The realm’s base URL and realm name.
The connection scopes to the roles you grant the
cloudthinker-svc service account. Assign the least-privileged realm-management roles that cover what CloudThinker needs.Setup
Both paths create the same artifact: acloudthinker-svc confidential client with realm-management roles on its service account. Self-hosted uses kcadm.sh; Phase Two uses the realm console.
- Self-hosted Keycloak
- Phase Two
Provision the client with Use narrower roles (e.g.
kcadm.sh, Keycloak’s admin CLI. Run from any shell where it’s available.1
Authenticate
2
Create the client
3
Assign realm-management roles
view-realm, view-users) if you want least-privilege.4
Get the client secret
5
Add the connection in CloudThinker
Navigate to Connections → Keycloak and enter:
- KEYCLOAK_URL:
http://<host-ip>:8080 - KEYCLOAK_REALM: your realm name
- KEYCLOAK_CLIENT_ID:
cloudthinker-svc - KEYCLOAK_CLIENT_SECRET: secret from the previous step
Connection details
Required permissions
Thecloudthinker-svc service account needs realm-management roles on the target realm. Common roles:
Agent capabilities
Once connected, Oliver can:Verify the connection
Example prompts
Troubleshooting
403 Forbidden on realm operations
403 Forbidden on realm operations
- Service account is missing the required
realm-managementrole for that operation - Self-hosted: re-run
add-roleswith the missing role - Phase Two: re-check both pages of the role assignment list
Cannot reach Keycloak URL
Cannot reach Keycloak URL
- Self-hosted: confirm the base URL matches your Keycloak hostname
- Phase Two: copy the URL exactly from the realm Details → Host field
Empty client secret
Empty client secret
- The client must be confidential —
publicClient=false(self-hosted) or Client authentication enabled (Phase Two) - Public clients have no secret
Security
- Least privilege — grant only the permissions the agents need for your use case; start read-only and widen later.
- Read-only by default — use read-only credentials unless you want agents to make changes through this connection.
- Rotate credentials — rotate keys and tokens on your normal schedule; CloudThinker picks up the new value when you update the connection.
- Revoke on offboarding — remove the credential at the provider when you delete a connection or a teammate leaves.
- Dedicated client — use
cloudthinker-svcas a dedicated service-account client, not a shared admin client. - Secret rotation — rotate the client secret periodically via the Credentials tab.
Related
Oliver Agent
Security and compliance agent
Connections Overview
All available connections