The Deckhouse Platform installs CRDs but does not remove them when a module is disabled. If you no longer need the created CRDs, delete them.
The module lifecycle stage: General Availability
AuthorizationRule
Scope: Namespaced
Version: v1alpha1
Manages RBAC and authorization settings within a particular namespace.
The AuthorizationRule resource belongs to the basic role-based model. Its permissions add up with those of the granular model.
- objectstatus
Observed state of the rule, maintained by user-authz-controller.
- integerstatus.bindings
Number of bindings rendered for the rule.
- array of objectsstatus.conditions
Conditions of the rule.
Ready=Truemeans every binding of the rule is applied;Ready=Falsewith reasonInvalidSpecmeans the rule cannot be rendered and no binding was changed, with reasonApplyErrorthat the API server rejected a write (the message names the binding and the error).- stringstatus.conditions.lastTransitionTime
Time of the last change of the condition status.
- stringstatus.conditions.message
Details of the status.
- integerstatus.conditions.observedGeneration
Generation of the rule that the condition refers to.
- stringstatus.conditions.reason
Reason of the status,
BindingsApplied,InvalidSpecorApplyError. - stringstatus.conditions.status
Required value
Condition status.
Allowed values:
True,False,Unknown - stringstatus.conditions.type
Required value
Condition type. The controller sets
Ready.
- integerstatus.observedGeneration
Generation of the rule the status refers to.
- objectspec
Required value
- stringspec.accessLevel
Access level:
User— has access to information about all objects (including viewing pod logs) but cannot exec into containers, read secrets, and perform port-forwarding;PrivilegedUser— the same asUser+ can exec into containers, read secrets, and delete pods (and thus, restart them);Editor— the same asPrivilegedUser+ can create, edit, and delete the objects that are usually required for application tasks;Admin— the same asEditor+ can create and modify pods, create ServiceAccount tokens (serviceaccounts/token), manageRole,RoleBinding, andAuthorizationRuleobjects, and delete auxiliary objects (for example,ReplicaSetand the challenges and orders of theacme.cert-manager.iogroup).
Allowed values:
User,PrivilegedUser,Editor,AdminExample:
accessLevel: PrivilegedUser - booleanspec.allowScale
Defines if scaling of Deployments and StatefulSets is allowed/not allowed.
Default:
false - booleanspec.portForwarding
Allow/disallow the user to do
port-forwarding.Default:
false - array of objectsspec.subjects
Required value
Users, groups, and ServiceAccounts to grant the access level to.
Pay attention to the following nuances if this module is used together with the user-authn module:
- Use the user’s
emailas the username to grant privileges to the specific user; - When specifying a group, make sure that the necessary groups are allowed to be received from the provider, i.e., they are defined in the corresponding custom resource DexProvider.
- stringspec.subjects.kind
Required value
Type of user identification resource.
Allowed values:
User,Group,ServiceAccountExample:
kind: Group - stringspec.subjects.name
Required value
Resource name.
Example:
name: some-group-name - stringspec.subjects.namespace
ServiceAccount namespace.
Pattern:
[a-z0-9]([-a-z0-9]*[a-z0-9])?Length:
1..63
- Use the user’s
ClusterAuthorizationRule
Scope: Cluster
- v1
- v1alpha1
This object manages RBAC and namespace-based authorization.
The settings determine which access level is assigned to the user and/or group.
The ClusterAuthorizationRule resource belongs to the basic role-based model. Its permissions add up with those of the granular model.
- objectstatus
Observed state of the rule, maintained by user-authz-controller.
- integerstatus.bindings
Number of bindings rendered for the rule.
- array of objectsstatus.conditions
Conditions of the rule.
Ready=Truemeans every binding of the rule is applied;Ready=Falsewith reasonInvalidSpecmeans the rule cannot be rendered and no binding was changed, with reasonApplyErrorthat the API server rejected a write (the message names the binding and the error).- stringstatus.conditions.lastTransitionTime
Time of the last change of the condition status.
- stringstatus.conditions.message
Details of the status.
- integerstatus.conditions.observedGeneration
Generation of the rule that the condition refers to.
- stringstatus.conditions.reason
Reason of the status,
BindingsApplied,InvalidSpecorApplyError. - stringstatus.conditions.status
Required value
Condition status.
Allowed values:
True,False,Unknown - stringstatus.conditions.type
Required value
Condition type. The controller sets
Ready.
- integerstatus.observedGeneration
Generation of the rule the status refers to.
- objectspec
Required value
- stringspec.accessLevel
Access level:
User— has access to information about all objects (including viewing pod logs) but cannot exec into containers, read secrets, and perform port-forwarding;PrivilegedUser— the same asUser+ can exec into containers, read secrets, and delete pods (and thus, restart them);Editor— the same asPrivilegedUser+ can create, edit, and delete the objects that are usually required for application tasks;Admin— the same asEditor+ can create and modify pods, create ServiceAccount tokens (serviceaccounts/token), manageRole,RoleBinding, andAuthorizationRuleobjects, and delete auxiliary objects (for example,ReplicaSetand the challenges and orders of theacme.cert-manager.iogroup);ClusterEditor— the same asEditor+ can manage a limited set of cluster-wide objects used in application tasks (DaemonSet,StorageClass,CustomResourceDefinition,GatewayClass, and the objects that modules add at this level, for example,KeepalivedInstance). This role is best suited for cluster operators.-
ClusterAdmin— the same as bothClusterEditorandAdmin+ can manage cluster-wide service objects (namespaces, quotas,NetworkPolicy, the proxy subresources of nodes,ClusterAuthorizationRule,ClusterRole, andClusterRoleBinding). This role is best suited for cluster administrators.Warning.
ClusterAdmincan create ClusterAuthorizationRule objects only up to theClusterAdminlevel, and ClusterRoleBinding objects only to roles whose permissions it already holds. SuperAdmin— can perform any actions with any objects (note thatlimitNamespacesandnamespaceSelector(see below) restrictions remain valid).
Allowed values:
User,PrivilegedUser,Editor,Admin,ClusterEditor,ClusterAdmin,SuperAdminExample:
accessLevel: PrivilegedUser - array of objectsspec.additionalRoles
Additional roles to bind for subjects.
Use the
accessLevelparameter instead; this parameter is for exceptional cases.Example:
additionalRoles: - apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin- stringspec.additionalRoles.apiGroup
Required value
API group of the role. Only
rbac.authorization.k8s.iois supported.Example:
apiGroup: rbac.authorization.k8s.io - stringspec.additionalRoles.kind
Required value
Kind of the role.
Allowed values:
ClusterRoleExample:
kind: ClusterRole - stringspec.additionalRoles.name
Required value
Name of the role.
Example:
name: cluster-admin
- booleanspec.allowAccessToSystemNamespacesDeprecated
Available in editions: BE, SE, SE+, Ultimate/EE
Allow access to system namespaces (
kube-*,d8-*,default,antiopa,loghouse).Requires the enableMultiTenancy parameter. While it is disabled, a rule with this field is refused, and a rule that already has it is applied without its namespace limits, in every namespace of the cluster.
The namespace limits of the rule are enforced by the authorization webhook, so they do not apply to the subjects that the webhook does not check: control plane components, kubelets, and the ServiceAccounts of
kube-systemand of the namespaces whose names start withd8-. For them, the access level of the rule applies in every namespace.Deprecated. Use the namespaceSelector field instead.
Default:
false - booleanspec.allowScale
Defines if scaling of Deployments and StatefulSets is allowed/not allowed.
Default:
false - array of stringsspec.limitNamespacesDeprecated
Available in editions: BE, SE, SE+, Ultimate/EE
List of regex-patterns that define namespaces accessible by the user.
Each pattern must match the whole namespace name:
teamdoes not matchteam-2. A pattern that is not a valid RE2 regular expression is refused when the rule is written. If the check misses it, the pattern is ignored, the rule opens fewer namespaces, and theD8UserAuthzWebhookRulesQuarantinedalert fires.The decision making process:
- If the list is defined, then only its constituents are accessible.
- If the list is not defined, then all namespaces are accessible (except for the system ones, see the
allowAccessToSystemNamespacesfield).
Requires the enableMultiTenancy parameter. While it is disabled, a rule with this field is refused, and a rule that already has it is applied without its namespace limits, in every namespace of the cluster.
The namespace limits of the rule are enforced by the authorization webhook, so they do not apply to the subjects that the webhook does not check: control plane components, kubelets, and the ServiceAccounts of
kube-systemand of the namespaces whose names start withd8-. For them, the access level of the rule applies in every namespace.Deprecated. Use the namespaceSelector field instead.
Example:
limitNamespaces: production-.*- stringElement of the array
- objectspec.namespaceSelector
Available in editions: BE, SE, SE+, Ultimate/EE
Defines a set of namespaces accessible by the user, using the value of the
namespaceSelector.labelSelectorparameter.If the
namespaceSelectorparameter is specified, the values of thelimitNamespacesandallowAccessToSystemNamespacesparameters are ignored. If thenamespaceSelector.matchAnyfield is specified, then all namespaces (including system namespaces) will be accessible. Otherwise, only the namespaces with labels matching thenamespaceSelector.labelSelectorconditions will be accessible (including system namespaces).If the
namespaceSelectorparameter is not specified, then the set of available namespaces is determined by the value of thelimitNamespacesandallowAccessToSystemNamespacesparameters. If none of the parametersnamespaceSelector,limitNamespacesandallowAccessToSystemNamespacesare specified, then all namespaces will be available, except for the system ones (kube-*,d8-*,default,antiopa,loghouse).Requires the enableMultiTenancy parameter. While it is disabled, a rule with this field is refused, and a rule that already has it is applied without its namespace limits, in every namespace of the cluster.
The namespace limits of the rule are enforced by the authorization webhook, so they do not apply to the subjects that the webhook does not check: control plane components, kubelets, and the ServiceAccounts of
kube-systemand of the namespaces whose names start withd8-. For them, the access level of the rule applies in every namespace.- objectspec.namespaceSelector.labelSelector
Defines the label selector-based filter of the namespaces.
Cannot be used together with the
matchAnyparameter.If both
matchExpressionsandmatchLabelsparameters are set, their requirements are ANDed together — they must all be satisfied in order to match. If multiplematchExpressionconditions are provided, they all must be satisfied in order to match.- array of objectsspec.namespaceSelector.labelSelector.matchExpressions
An array of set-based expressions.
Example:
matchExpressions: - key: tier operator: In values: - production - staging - key: tier operator: NotIn values: - production- stringspec.namespaceSelector.labelSelector.matchExpressions.key
A label name.
- stringspec.namespaceSelector.labelSelector.matchExpressions.operator
A comparison operator.
Allowed values:
In,NotIn,Exists,DoesNotExist - array of stringsspec.namespaceSelector.labelSelector.matchExpressions.values
A label value.
- stringElement of the array
Pattern:
[a-z0-9]([-a-z0-9]*[a-z0-9])?Length:
1..63
- objectspec.namespaceSelector.labelSelector.matchLabels
A set of labels a namespace must have to match.
Example:
matchLabels: foo: bar baz: who
- booleanspec.namespaceSelector.matchAny
Unconditionally permits access to any namespace in the cluster, including system namespaces.
Cannot be used together with the
labelSelectorparameter.Since
labelSelectorprovides access to a limited number of the namespaces that match it,matchAnyis needed in cases where access to all namespaces is to be granted.Allowed values:
true
- booleanspec.portForwarding
Allow/disallow the user to do
port-forwarding.Default:
false - array of objectsspec.subjects
Required value
Users, groups, and ServiceAccounts to grant the access level to.
Pay attention to the following nuances if this module is used together with the user-authn module:
- Use the user’s
emailas the username to grant privileges to the specific user; - When specifying a group, make sure that the necessary groups are allowed to be received from the provider, i.e., they are defined in the corresponding custom resource DexProvider.
- stringspec.subjects.kind
Required value
Type of user identification resource.
Allowed values:
User,Group,ServiceAccountExample:
kind: Group - stringspec.subjects.name
Required value
Resource name.
Example:
name: some-group-name - stringspec.subjects.namespace
ServiceAccount namespace. The namespace limits of the rule do not apply to the ServiceAccounts of
kube-systemand of the namespaces whose names start withd8-: the authorization webhook does not check them.Pattern:
[a-z0-9]([-a-z0-9]*[a-z0-9])?Length:
1..63
- Use the user’s
Deprecated resource. Support for the resource might be removed in a later release.
This cluster-wide object manages RBAC and authorization.
The ClusterAuthorizationRule resource belongs to the basic role-based model. Its permissions add up with those of the granular model.
- objectstatus
Observed state of the rule, maintained by user-authz-controller.
- integerstatus.bindings
Number of bindings rendered for the rule.
- array of objectsstatus.conditions
Conditions of the rule.
Ready=Truemeans every binding of the rule is applied;Ready=Falsewith reasonInvalidSpecmeans the rule cannot be rendered and no binding was changed, with reasonApplyErrorthat the API server rejected a write (the message names the binding and the error).- stringstatus.conditions.lastTransitionTime
Time of the last change of the condition status.
- stringstatus.conditions.message
Details of the status.
- integerstatus.conditions.observedGeneration
Generation of the rule that the condition refers to.
- stringstatus.conditions.reason
Reason of the status,
BindingsApplied,InvalidSpecorApplyError. - stringstatus.conditions.status
Required value
Condition status.
Allowed values:
True,False,Unknown - stringstatus.conditions.type
Required value
Condition type. The controller sets
Ready.
- integerstatus.observedGeneration
Generation of the rule the status refers to.
- objectspec
Required value
- stringspec.accessLevel
Access level:
User— has access to information about all objects (including viewing pod logs) but cannot exec into containers, read secrets, and perform port-forwarding;PrivilegedUser— the same asUser+ can exec into containers, read secrets, and delete pods (and thus, restart them);Editor— the same asPrivilegedUser+ can create, edit, and delete the objects that are usually required for application tasks;Admin— the same asEditor+ can create and modify pods, create ServiceAccount tokens (serviceaccounts/token), manageRole,RoleBinding, andAuthorizationRuleobjects, and delete auxiliary objects (for example,ReplicaSetand the challenges and orders of theacme.cert-manager.iogroup);ClusterEditor— the same asEditor+ can manage a limited set of cluster-wide objects used in application tasks (DaemonSet,StorageClass,CustomResourceDefinition,GatewayClass, and the objects that modules add at this level, for example,KeepalivedInstance). This role is best suited for cluster operators.-
ClusterAdmin— the same as bothClusterEditorandAdmin+ can manage cluster-wide service objects (namespaces, quotas,NetworkPolicy, the proxy subresources of nodes,ClusterAuthorizationRule,ClusterRole, andClusterRoleBinding). This role is best suited for cluster administrators.Warning.
ClusterAdmincan create ClusterAuthorizationRule objects only up to theClusterAdminlevel, and ClusterRoleBinding objects only to roles whose permissions it already holds. SuperAdmin— can perform any actions with any objects (note thatlimitNamespaces(see below) restrictions remain valid).
Allowed values:
User,PrivilegedUser,Editor,Admin,ClusterEditor,ClusterAdmin,SuperAdminExample:
accessLevel: PrivilegedUser - array of objectsspec.additionalRoles
Additional roles to bind for subjects.
Use the
accessLevelparameter instead; this parameter is for exceptional cases.Example:
additionalRoles: - apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin- stringspec.additionalRoles.apiGroup
Required value
API group of the role. Only
rbac.authorization.k8s.iois supported.Example:
apiGroup: rbac.authorization.k8s.io - stringspec.additionalRoles.kind
Required value
Kind of the role.
Allowed values:
ClusterRoleExample:
kind: ClusterRole - stringspec.additionalRoles.name
Required value
Name of the role.
Example:
name: cluster-admin
- booleanspec.allowAccessToSystemNamespacesDeprecated
Available in editions: BE, SE, SE+, Ultimate/EE
Allow access to system namespaces (
kube-*,d8-*,default,antiopa,loghouse).Requires the enableMultiTenancy parameter. While it is disabled, a rule with this field is refused, and a rule that already has it is applied without its namespace limits, in every namespace of the cluster.
The namespace limits of the rule are enforced by the authorization webhook, so they do not apply to the subjects that the webhook does not check: control plane components, kubelets, and the ServiceAccounts of
kube-systemand of the namespaces whose names start withd8-. For them, the access level of the rule applies in every namespace.Deprecated. Use the namespaceSelector parameter (API version
v1of the CR) instead.Default:
false - booleanspec.allowScale
Defines if scaling of Deployments and StatefulSets is allowed/not allowed.
Default:
false - array of stringsspec.limitNamespacesDeprecated
Available in editions: BE, SE, SE+, Ultimate/EE
List of regex-patterns that define namespaces accessible by the user.
Each pattern must match the whole namespace name:
teamdoes not matchteam-2. A pattern that is not a valid RE2 regular expression is refused when the rule is written. If the check misses it, the pattern is ignored, the rule opens fewer namespaces, and theD8UserAuthzWebhookRulesQuarantinedalert fires.The decision making process:
- If the list is defined, then only its constituents are accessible.
- If the list is not defined, then all namespaces are accessible (except for the system ones, see the
allowAccessToSystemNamespacesfield).
Requires the enableMultiTenancy parameter. While it is disabled, a rule with this field is refused, and a rule that already has it is applied without its namespace limits, in every namespace of the cluster.
The namespace limits of the rule are enforced by the authorization webhook, so they do not apply to the subjects that the webhook does not check: control plane components, kubelets, and the ServiceAccounts of
kube-systemand of the namespaces whose names start withd8-. For them, the access level of the rule applies in every namespace.Deprecated. Use the namespaceSelector parameter (API version
v1of the CR) instead.Example:
limitNamespaces: production-.*- stringElement of the array
- booleanspec.portForwarding
Allow/disallow the user to do
port-forwarding.Default:
false - array of objectsspec.subjects
Required value
Users, groups, and ServiceAccounts to grant the access level to.
Pay attention to the following nuances if this module is used together with the user-authn module:
- Use the user’s
emailas the username to grant privileges to the specific user; - When specifying a group, make sure that the necessary groups are allowed to be received from the provider, i.e., they are defined in the corresponding custom resource DexProvider.
- stringspec.subjects.kind
Required value
Type of user identification resource.
Allowed values:
User,Group,ServiceAccountExample:
kind: Group - stringspec.subjects.name
Required value
Resource name.
Example:
name: some-group-name - stringspec.subjects.namespace
ServiceAccount namespace. The namespace limits of the rule do not apply to the ServiceAccounts of
kube-systemand of the namespaces whose names start withd8-: the authorization webhook does not check them.Pattern:
[a-z0-9]([-a-z0-9]*[a-z0-9])?Length:
1..63
- Use the user’s