Skip to content

Users, roles and permissions ​

Admins with the users.manage permission manage people under Administration → Users and Administration → Roles.

How access works ​

  • A role is a named set of permissions. You can create as many as you like.
  • A user gets one or more role assignments. Each assignment is for everything, for one cluster, or for one HAProxy instance.
  • On one cluster, only the role's cluster permissions count there. On one HAProxy, only its HAProxy permissions count there.
  • A user only sees clusters where they have at least cluster.view, and HAProxy instances where they have at least haproxy.view.
  • Hub permissions (managing users, clusters, settings and alerts) only count when the role is assigned on everything.

So "Operator on staging, Viewer on production" is two assignments for one user, and so is "HAProxy operator on lb-edge-1 only".

k10y / roles
Editing a role's permissions

Permissions ​

Per cluster ​

PermissionAllows
cluster.viewSee the cluster: overview, nodes, workloads, pods, services, ConfigMaps, events, map, charts
secrets.viewSee Secrets (names, types and key names; values are never shown)
logs.viewRead pod logs and live logs
workloads.scaleScale Deployments and StatefulSets
workloads.restartRestart workloads; suspend, resume and run CronJobs
workloads.update_imageChange a Deployment's container image
workloads.rollbackRoll back Deployments
workloads.deleteDelete Deployments and Jobs
pods.execOpen a shell in a pod's container
pods.deleteDelete pods
services.deleteDelete Services
config.deleteDelete ConfigMaps and Secrets
nodes.manageCordon, uncordon and drain nodes
resources.editEdit an object's YAML in its details panel
apply.yamlCreate or update objects with Apply YAML
namespaces.protectChoose the cluster's protected namespaces, where every action, edit and shell is refused
ai.useRun AI investigations
audit.viewSee the activity log

HAProxy (assign on one HAProxy instance, or on everything) ​

Permissions cover a whole HAProxy instance: all its frontends, backends and servers.

PermissionAllows
haproxy.viewSee the instance: frontends, backends, servers, live numbers, charts, topology, logs, certificates, stick tables, the IP blocklist and config history (not the raw config)
haproxy.operateRun it without changing its config: drain, maintenance and re-enable servers, rolling deploys, block and unblock IPs, let rate-limited clients in again (instant, no reload)
haproxy.configureChange its config: frontends, routes, backends, servers, maintenance pages, certificates, Kubernetes sync, copy and group sync, restore old versions; read and edit the raw config (it can contain passwords)
haproxy.manageEdit or remove the instance and its Data Plane API login. Adding a new instance needs this on everything

Notes:

  • The first IP block on an instance adds the blocklist to every frontend, which is a config change, so it needs haproxy.configure once. After that, haproxy.operate is enough.
  • Changing several instances of a group at once needs haproxy.configure on each of them. "Compare configs" only shows the members you can configure.

Hub (assign on everything) ​

PermissionAllows
clusters.manageAdd, edit and remove clusters (their agent URLs and tokens)
users.manageManage users, roles and role assignments
settings.manageManage system settings (AI providers, alert channels)
alerts.manageCreate and edit alert rules

Built-in roles ​

One set of roles per system, plus Admin. Give Kubernetes roles on everything or one cluster, and HAProxy roles on everything or one HAProxy.

RoleAssign onPermissions
AdmineverythingEverything, including users, settings, clusters and HAProxy instances. It can't be edited or deleted.
Kubernetes viewereverything or one clusterView, logs and activity.
Kubernetes operatoreverything or one clusterView, logs, Secrets, scale, restart, update image, roll back, delete pods, edit YAML, apply YAML, AI, activity. Not the shell.
Kubernetes admineverything or one clusterEvery cluster permission, including deletes, the pod shell, draining nodes and choosing protected namespaces.
HAProxy viewereverything or one HAProxySee frontends, backends, servers, live numbers, logs and history.
HAProxy operatoreverything or one HAProxyViewer, plus drain and maintenance, rolling deploys, blocking IPs and the AI assistant. No config changes.
HAProxy admineverything or one HAProxyEverything on HAProxy: config changes, the raw config, the connection, and the AI assistant.

For someone who works on both, give two roles, e.g. Kubernetes operator on staging and HAProxy operator on lb-edge-1. The Roles page shows which system each role applies to. Edit the built-in roles or create your own.

Upgrading from 2.4 or older: the old Operator and Viewer roles are renamed Kubernetes operator and Kubernetes viewer. Their HAProxy permissions move to HAProxy operator and HAProxy viewer, which their users get automatically, so nobody loses access.

Add a user ​

Users → New user: username, display name, a starting password, and one or more role assignments. Keep Must change password at next login ticked so they choose their own.

Day-to-day ​

  • Reset a password: open the user, type a new password and save. They're signed out everywhere and must change it at the next sign-in.
  • Disable an account: Disable on the Users page. They're signed out immediately and can't sign in until enabled again.
  • Sign a user out: Sign out signs them out of every device. See Sessions.
  • Delete a user: their past actions stay in the audit log under their username.

There must always be at least one active user who can manage users on all clusters. k10y won't let you remove the last one.

Example roles ​

RolePermissionsAssign
Developercluster.view, logs.viewproduction only
Developer (staging)Operator permissions + pods.execstaging only
On-callOperator permissions + nodes.manageall clusters
Auditorcluster.view, audit.viewall clusters
HAProxy operatorhaproxy.view, haproxy.operateone HAProxy, e.g. lb-edge-1
Load balancer adminall four haproxy.* permissionsone HAProxy, or everything to also add new instances

Free and open source. Created and maintained by Kang Kimchhay. Kubernetes is a trademark of The Linux Foundation and HAProxy of HAProxy Technologies; k10y is not affiliated with either.