Setting Permissions

Complete list of access sets, platform and cluster permissions.

Rights management in the Shturval platform is carried out using access sets (permissions). This page contains a complete list of preconfigured sets, platform and cluster permissions, as well as roles in Argo CD and Kubeflow permissions.


Access set levels

LevelDescription of features
PlatformAccess to the entire platform; to client clusters without access to the management cluster; only to the management cluster; to logs; to Argo CD; to Kubeflow
ClusterAccess to a specific client cluster; to the cluster logs; to infrastructure; to Argo CD projects and Kubeflow cluster profiles
NamespaceAccess to a specific namespace; to the Argo CD project and Kubeflow namespace profile

Note: Changing the access set will change the rights of all users and groups to whom it is assigned. If a set is assigned to at least one user or group, it can only be deleted after all assignments have been removed. Pre-configured sets cannot be edited or deleted - create a new set if necessary.

Note: Permissions apply only to users and groups. For ServiceAccounts, a separate mechanism for assigning rights is used (see the screenshot below).

Access manager - permission sets


Platform permissions

Platform permissions control access to resources managed by the management cluster.

ResolutionAuthorityLevelsComment
access-map-getView assigned roles, access treePlatform—
cluster-createCreating client clustersPlatformAdditionally requires at least provider-get, provider-edit and ippool-get. It is recommended to use the platform-admin
permissions-editManaging user and group rights in the management clusterPlatform—
permissions-getObtaining rights information in the management clusterPlatform—
platform-roles-editServiceAccounts Rights ManagementPlatform—
platform-roles-getRetrieving information about ServiceAccounts rightsPlatform—
provider-editInfrastructure Provider ManagementPlatformRecommended in conjunction with ippool-get
provider-getGetting information about providersPlatformRecommended in conjunction with ippool-get
ippool-editManagemente pools of IP addressesPlatformRecommended in conjunction with ippool-get, provider-get, provider-edit
ippool-getObtaining IP Address PoolsPlatformPools are assigned to the provider, so it is recommended in conjunction with provider-get, provider-edit
cluster-deleteRemoving client clustersPlatform, Cluster—
cluster-editAnnotations, Reconciliation Suspension, NewslettersPlatform, ClusterAdditionally requires at least cluster-get and cluster-info
cluster-getView cluster and informational messagesPlatform, Cluster, NamespaceAt the Namespace level, allows reading cluster objects
cluster-infoGetting information about the clusterPlatform, Cluster—
cluster-infra-editManagement of units, machinesPlatform, Cluster—
cluster-infra-getObtaining information about nodes, machinesPlatform, Cluster—
cluster-roles-editRights management in a clusterPlatform, Cluster—
cluster-roles-getRetrieving information about rights in a clusterPlatform, Cluster—
namespace-roles-editRights management in namespacesPlatform, Cluster, Namespace—
namespace-roles-getObtaining information about rights in namespacesPlatform, Cluster, Namespace—
tenant-getObtaining information about a tenantPlatform, Cluster, NamespaceOnly users with platform assignments can obtain information about the tenant itself
tenant-editTenant managementPlatform, ClusterOnly users with platform assignments can change information about the tenant itself

Cluster permissions

They are specified in YAML format. The first line is the API group. Full access example:

- apiGroups: ['*']
  resources: ['*']
  verbs: ['*']
- nonResourceURLs: ['*']
  verbs: ['*']

Roles in Argo CD

All roles are available at any permission set level. If the Argo CD role is defined in the Platform tier set, it is assigned in each client cluster. The role is not created in the management cluster.

RolePermissions in Argo CDDescription
adminpolicyAppCreate, policyAppGet, policyAppUpdate, policyAppSync, policyAppDelete, policyAppSetCreate, policyAppSetGet, policyAppSetUpdate, policyAppSetDelete, policyExecCreate, policyLogsGetFull access: creating projects, applications
editpolicyAppCreate, policyAppGet, policyAppSync, policyAppSetCreate, policyAppSetGetCreating applications without changing the repository and deleting them
viewpolicyAppGet, policyAppSetGetRead only

Kubeflow permissions

RoleKubeflow PermissionsDescription
kubeflow-adminFull access to notebooks, pipelines, runs, jobs, experiments, KServe/Knative, Argo Workflows, Spark/Training, TensorBoard/PVC, associated Kubernetes resources, also managing roles/rolebindings, creating localsubjectaccessreviews and full access to Knative resourcesFull administration of the Kubeflow environment and related resources, including access control
kubeflow-editCreate, edit, delete and view: notebooks, pipelines, runs, jobs, experiments, KServe/Knative, Argo Workflows, Spark/Training, TensorBoard/PVC and related Kubernetes resourcesWorking with ML resources: launching, changing and deleting workloads, without environment administration and access control
kubeflow-viewView notebooks, pipelines, runs, jobs, experiments, KServe/Knative, Spark/Training, TensorBoard/PVC, pods, logs, statuses and events; additionally creating visualizations and creating/deleting viewerRead-only on Kubeflow Resources
Illustration: Kubeflow permissions

Kubeflow Access Manager


Default access sets

Illustration: Default access sets

Default permission sets

Level “Platform”

SetPurposeDescriptionKubeflowArgo CD
platform-adminPlatform AdministratorFull access to all platform and cluster resourceskubeflow-adminadmin
sec-platform-adminSecurity AdministratorManaging assignments at all levels, ClusterIssuers; viewing logs, cluster certificates, metrics, service availability, Issuers at the namespace level, Cilium network policies and pages of the “Security” section (security policies, report on scan results, report on violated policies, report on found vulnerabilities)kubeflow-viewview
sec-platform-auditAuditor of main objectsView platform and cluster pages, except Secrets, NCI, SSC, Ingress Controllerskubeflow-viewview
sec-platform-audit-fullAuditor of all objectsView all platform and cluster pageskubeflow-viewview
tenant-role-binderTenant Access ManagerManaging access to tenants, viewing tenants, section “Access Management”. No access to clusters——
tenant-role-viewerTenant Access AuditorView access in tenants, managerand access tree. No access to clusters——

Cluster level

SetPurposeDescriptionKubeflowArgo CD
cluster-adminCluster AdministratorFull access to the resources of the selected clusterkubeflow-adminadmin
cluster-admin-restrictedCluster managementAll resources except nodes, machines, tenants and deleting a clusterkubeflow-adminadmin
sec-cluster-auditAuditor of main cluster objectsView cluster pages except Secrets, NCI, SSC, Ingress Controllerskubeflow-viewview
sec-cluster-audit-fullAuditor of all cluster objectsView all cluster pageskubeflow-viewview
sec-security-reportViewing information security reportsAccess at the level of the selected cluster to view pages of the “Security” section (security policies, report on scan results, report on violated policies, report on found vulnerabilities), events and reports on violated policies and found vulnerabilities in all namespaces of the cluster——

Level “Namespace”

SetPurposeDescriptionKubeflowArgo CD
dev-basicBrowse ResourcesView the “Loads”, “Network” sections, PersistentVolumeClaims, Configmaps, Quotas pages in the selected namespace. You can view events, reports on triggered security policies and found vulnerabilities. No access to sub-resources, for example pods/logs, pods/exec—view
dev-debuggerFinding errorsViewing a report on found vulnerabilities, Pods of the selected namespace, reading logs (pods/logs), port forwarding (pods/portforward) and connecting to remote access (pods/exec)——
dev-deployerDeploying the applicationResource management in the “Loads” and “Network” sections, on the PersistentVolumeClaims, Configmaps, Quotas pages. You can view events, reports on triggered security policies and found vulnerabilities. No access to sub-resources, for example pods/logs, pods/execkubeflow-editedit
editChanging ResourcesChanging all resources in the namespace, including sub-resources services/proxy, deployments/rollback, pods/attach, pods/exec, pods/portforward, pods/proxy, deployments/scale, replicasets/scale, statefulsets/scale, serviceaccounts/token. You can view events, reports on triggered security policies and found vulnerabilities, logs (pods/log)kubeflow-editedit
namespace-adminNamespace administratorFull access to namespace resourceskubeflow-adminadmin
ops-ns-managerQuota managementManaging Quotas in namespace——
ops-role-managerAccess ControlServiceAccounts and access rights in namespace——
viewBrowse ResourcesView all resources in the namespace, except Secrets. You can view events, reports on triggered security policies and found vulnerabilities, logs (pods/log)kubeflow-viewview

Creating a custom access set

Step-by-step instructions

  1. Go to Access Management → Access Manager.
  2. Create a set, select a level (Platform, Cluster, Namespace).
  3. Set a name (required, immutable), description, optional Kubeflow role, and role in Argo CD.
  4. Add cluster permissions (YAML) and/or platform permissions.
  5. Save. The set will become available for assignment to users and groups.
Illustration: Step-by-step instructions

Form for creating a custom set of permissions

Platform and cluster permissions

Platform permissions control access to resources managed by the management cluster. These objects are stored in the management cluster, even if the assignment is made at the Cluster or Namespace level:

  • Cluster API objects: cluster.x-k8s.io, bootstrap.cluster.x-k8s.io, infrastructure.cluster.x-k8s.io (Cluster, Machine, KubeadmControlPlane, etc.);
  • Access control objects: permissions.shturval.tech (UserRole, GroupRole, Permissions);
  • Providers, IP pools, tenants, etc.

The list of platform permissions is in the Platform permissions table above.

Cluster permissions are RBAC in Kubernetes format. They specify access to resources of client clusters (Pods, Deployments, Services, ConfigMaps, etc.). The format is standard for ClusterRole: apiGroups, resources, verbs, if necessary nonResourceURLs. Cluster permissions from the Platform tier set apply to all client clusters; from the “Cluster” level set - to the selected cluster; from the “Namespace” level set - to the selected namespace.

You can create a set with only the Argo CD role or only with the Kubeflow role - then leave the cluster and platform permissions empty.

Custom resources under the hood

When creating a custom access set, the platform creates the Permissions resource (API group permissions.shturval.tech) in the namespace shturval-backend of the management cluster. Architecture of the rights approval operator and CRD field reference - in the docment Permissions operator. The Permissions resource stores:

  • Set name;
  • Level (Platform, Cluster, Namespace);
  • List of platform permissions;
  • Cluster permissions (YAML);
  • Kubeflow role (kubeflow-admin, kubeflow-edit, kubeflow-view);
  • Role in Argo CD (admin, edit, view).

When assigning a set to a user or group, a UserRole or GroupRole is created - they refer to one or more Permissions.

When synchronizing the access control module controller:

  1. Reads UserRole/GroupRole and associated Permissions;
  2. Combines permissions from all assigned sets;
  3. Creates or updates in target clusters:
    • ClusterRole — from cluster permissions set;
    • RoleBinding — ClusterRole binding to a subject (user or group members);
  4. If there is a Kubeflow role, it gives the user or group the appropriate access rights to Kubeflow;
  5. If there is an Argo CD role, creates or updates roles in Argo CD projects.

More details: Custom resources for managing access rights, How access rights are assigned.