The rbac-builder reads a configuration yaml, and convert it to Robusta's RBAC rules.
In it, you should specify the account_id, scopes and groups
Each execution, the rbac-builder will delete all the existing scopes and groups for the account,
and will create new ones, according to the provided configuration
This is a configuration example: (the file can be found under config/definitions.yaml
)
account_id: 6c2cbf41-c7b5-48ab-9777-76d320b985d4 # UUID
scopes:
- name: scope-1
type: namespace
clusters:
cl1: ["*"]
cl2: ["default", "kube-system"]
- name: scope-2
type: cluster
clusters:
cl3: ["*"]
cl4: ["*"]
groups:
- name: dev-us-xyz
provider_group_id: ea50b713-93c0-45d3-a87d-de253c06db0a # UUID
type: namespace
permissions: ["POD_LOGS", "METRICS_VIEW", "JOB_DELETE"]
scopes: ["scope-1"]
- name: dev-eu-ttt
provider_group_id: 233bd8f0-60a7-4cbc-b151-b109c3308b07 # UUID
type: cluster
permissions: ["CLUSTER_DELETE", "POPEYE_SCAN"]
scopes: ["scope-1", "scope-2"]
To run this, you'll need to provide environment variable, with DB accesss parameters
Use the same credentials as the plaform-relay service
STORE_API_KEY=eyJ...
STORE_PASSWORD=e...
STORE_URL=https://...
[email protected]
If you're using self-signed certificates, add it using the CERTIFICATE (the same way it's added to the platform-relay service)
Scopes
Each scope has a type field that must be cluster or namespace
cluster scope, means the scope is on the entire cluster (all namespaces)
Each cluster scope should be in the format of: cluster-name: ["*"]
namespace scope, means the scope can be on a set of namespaces, within a cluster
The format of namespaces scope is: cluster-name: ["ns1", "ns2"]
You can also define a namespace scope on all cluster namespaces: cluster-name: ["*"]
Groups
Each group has a type field that must be cluster or namespace
cluster groups, can only be applied on scopes with type "cluster"
namespace groups, can only be applied on all scopes
Every group has a set of permissions. These are the actual actions the user will be allowed to do.
There are default permissions, which are given by default to every group.
For namespace groups, the default permissions are: APP_VIEW, JOB_VIEW, TIMELINE_VIEW
For cluster groups, the default permissions are: APP_VIEW, JOB_VIEW, TIMELINE_VIEW, NODE_VIEW, CLUSTER_VIEW
namespace groups can be assigned to one of the following permissions (on top of the default permissions):
APP_RESTART, JOB_DELETE, POD_LOGS, POD_DELETE, KRR_VIEW, POPEYE_VIEW, METRICS_VIEW
cluster groups can be assigned to one of the following permissions (on top of the default permissions):
APP_RESTART, JOB_DELETE, POD_LOGS, POD_DELETE, METRICS_VIEW, NODE_DRAIN, NODE_CORDON, NODE_UNCORDON, CLUSTER_DELETE, KRR_SCAN, KRR_VIEW, POPEYE_VIEW, POPEYE_SCAN, ALERT_CONFIG_EDIT, ALERT_CONFIG_VIEW, SILENCES_VIEW, SILENCES_EDIT
TBD