AuthorizationRule
Scope: Namespaced
Version: v1alpha1
Управляет настройками RBAC и авторизацией в пределах конкретного пространства имен (namespace’а).
Ресурс
AuthorizationRule
используется в устаревшей ролевой модели, которая будет удалена в будущих версиях Deckhouse. Рекомендуем использовать новую ролевую модель.
- spec
Обязательный параметр
- spec.accessLevel
Уровень доступа:
User
— позволяет получать информацию обо всех объектах (включая доступ к журналам подов), но не позволяет заходить в контейнеры, читать Secret’ы и выполнять port-forward;PrivilegedUser
— то же самое, что и User, но позволяет заходить в контейнеры, читать Secret’ы, а также удалять поды (что обеспечивает возможность перезагрузки);Editor
— то же самое, что иPrivilegedUser
, но предоставляет возможность создавать, изменять и удалять все объекты, которые обычно нужны для прикладных задач;Admin
— то же самое, что и Editor, но позволяет удалять служебные объекты (производные ресурсы, напримерReplicaSet
,certmanager.k8s.io/challenges
иcertmanager.k8s.io/orders
).
Допустимые значения:
User
,PrivilegedUser
,Editor
,Admin
Пример:
accessLevel: PrivilegedUser
- spec.allowScale
Разрешить/запретить масштабировать (выполнять scale) Deployment’ы и StatefulSet’ы.
По умолчанию:
false
- spec.portForwarding
Разрешить/запретить выполнять
port-forward
.По умолчанию:
false
- spec.subjects
Обязательный параметр
Пользователи и/или группы, которым необходимо предоставить права.
При использовании совместно с модулем user-authn обратите внимание на следующие нюансы:
- Для выдачи прав конкретному пользователю в качестве имени необходимо указывать его
email
. - При указании группы убедитесь, что необходимые группы допускаются к получению от провайдера, то есть указаны в соответствующем custom resource DexProvider.
- spec.subjects.kind
Обязательный параметр
Тип ресурса.
Допустимые значения:
User
,Group
,ServiceAccount
Пример:
kind: Group
- spec.subjects.name
Обязательный параметр
Имя ресурса.
Пример:
name: some-group-name
- spec.subjects.namespace
Namespace для ServiceAccount.
Шаблон:
[a-z0-9]([-a-z0-9]*[a-z0-9])?
Длина:
1..63
- Для выдачи прав конкретному пользователю в качестве имени необходимо указывать его
ClusterAuthorizationRule
Scope: Cluster
Управляет настройками RBAC и авторизацией по namespace.
Настройки определяют, какой уровень доступа назначен пользователю и/или группе.
- spec
Обязательный параметр
- spec.accessLevel
Уровень доступа:
User
— позволяет получать информацию обо всех объектах (включая доступ к журналам подов), но не позволяет заходить в контейнеры, читать Secret’ы и выполнять port-forward;PrivilegedUser
— то же самое, что иUser
, но позволяет заходить в контейнеры, читать Secret’ы, а также удалять поды (что обеспечивает возможность перезагрузки);Editor
— то же самое, что иPrivilegedUser
, но предоставляет возможность создавать, изменять и удалять все объекты, которые обычно нужны для прикладных задач;Admin
— то же самое, что иEditor
, но позволяет удалять служебные объекты (производные ресурсы, напримерReplicaSet
,certmanager.k8s.io/challenges
иcertmanager.k8s.io/orders
);ClusterEditor
— то же самое, что иEditor
, но позволяет управлять ограниченным набором cluster-wide-объектов, которые могут понадобиться для прикладных задач (ClusterXXXMetric
,KeepalivedInstance
,DaemonSet
и т. д). Роль для работы оператора кластера;-
ClusterAdmin
— то же самое, что иClusterEditor
+Admin
, но позволяет управлять служебными cluster-wide-объектами (производные ресурсы, напримерMachineSets
,Machines
,OpenstackInstanceClasses
и т. п., а такжеClusterAuthorizationRule
,ClusterRoleBindings
иClusterRole
). Роль для работы администратора кластера.Важно! Так как
ClusterAdmin
уполномочен редактироватьClusterRoleBindings
, он может сам себе расширить полномочия; SuperAdmin
— разрешены любые действия с любыми объектами, при этом ограниченияnamespaceSelector
иlimitNamespaces
(см. ниже) продолжат работать.
Допустимые значения:
User
,PrivilegedUser
,Editor
,Admin
,ClusterEditor
,ClusterAdmin
,SuperAdmin
Пример:
accessLevel: PrivilegedUser
- spec.additionalRoles
Дополнительные роли, которые необходимо выдать для заданных
subjects
.Параметр сделан на крайний случай, вместо него категорически рекомендуется использовать параметр
accessLevel
.Пример:
additionalRoles: - apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-write-all - apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-read-all
- spec.additionalRoles.apiGroup
Обязательный параметр
apiGroup для пользователей.
Пример:
apiGroup: rbac.authorization.k8s.io
- spec.additionalRoles.kind
Обязательный параметр
Kind роли.
Допустимые значения:
ClusterRole
Пример:
kind: ClusterRole
- spec.additionalRoles.name
Обязательный параметр
Название роли.
Пример:
name: cluster-admin
- spec.allowAccessToSystemNamespacesПараметр устарел
Разрешить пользователю доступ в служебные namespace (
["kube-.*", "d8-.*", "loghouse", "default"]
).Доступно только с включенным параметром enableMultiTenancy.
По умолчанию:
false
Доступно только в enterprise edition.
- spec.allowScale
Разрешить/запретить масштабировать (выполнять scale) Deployment’ы и StatefulSet’ы.
По умолчанию:
false
- spec.limitNamespacesПараметр устарел
Список разрешенных namespace в формате регулярных выражений.
Политика:
- Если список указан, разрешаем доступ только по нему.
- Если список не указан, считаем, что разрешено все, кроме системных namespace (см.
spec.allowAccessToSystemNamespaces
ниже).
Доступно только с включенным параметром enableMultiTenancy.
Параметр устарел, используйте вместо него параметр namespaceSelector.
Доступно только в enterprise edition.
Пример:
limitNamespaces: production-.*
- Элемент массива
- spec.namespaceSelector
Определяет доступные пространства имен на основе значений, указанных в параметре
namespaceSelector.labelSelector
.Если параметр
namespaceSelector
указан, значения параметровlimitNamespaces
иallowAccessToSystemNamespaces
игнорируются. Таким образом, будут доступны либо все пространства имен с метками, подпадающими под указанные в параметреnamespaceSelector.labelSelector
условия (включая системные пространства имен), либо все пространства имен (включая системные), если указан параметрnamespaceSelector.matchAny
.Если параметр
namespaceSelector
не указан, набор доступных пространств имен определяется значением параметровlimitNamespaces
иallowAccessToSystemNamespaces
. Если не указан ни один из параметровnamespaceSelector
,limitNamespaces
иallowAccessToSystemNamespaces
, будут доступны все пространства имен, за исключением системных (kube-*
,d8-*
,loghouse
,default
).Доступно только с включенным параметром enableMultiTenancy.
Доступно только в enterprise edition.
- spec.namespaceSelector.labelSelector
Фильтр по меткам пространств имен.
Не может использоваться совместно с параметром
matchAny
.Если указаны одновременно
matchExpressions
иmatchLabels
, учитываются оба фильтра (AND).Доступно только в enterprise edition.
- spec.namespaceSelector.labelSelector.matchExpressions
Список фильтров на основе выражений.
Доступно только в enterprise edition.
Пример:
matchExpressions: - key: tier operator: In values: - production - staging - key: tier operator: NotIn values: - production
- spec.namespaceSelector.labelSelector.matchExpressions.key
Имя метки.
Доступно только в enterprise edition.
- spec.namespaceSelector.labelSelector.matchExpressions.operator
Оператор сравнения.
Доступно только в enterprise edition.
Допустимые значения:
In
,NotIn
,Exists
,DoesNotExist
- spec.namespaceSelector.labelSelector.matchExpressions.values
Значение метки.
Доступно только в enterprise edition.
- Элемент массива
Шаблон:
[a-z0-9]([-a-z0-9]*[a-z0-9])?
Длина:
1..63
- spec.namespaceSelector.labelSelector.matchLabels
Фильтр на основе совпадения/несовпадения меток.
Доступно только в enterprise edition.
Пример:
matchLabels: foo: bar baz: who
- spec.namespaceSelector.matchAny
Разрешает доступ ко всем пространствам имен в кластере, включая системные.
Не может использоваться совместно с параметром
labelSelector
.Так как с помощью параметра
labelSelector
можно предоставить доступ только к определенному перечню пространств имен, параметрmatchAny
необходим в случаях, когда нужно предоставить доступ ко всем пространствам имен.Доступно только в enterprise edition.
Допустимые значения:
true
- spec.portForwarding
Разрешить/запретить выполнять
port-forward
.По умолчанию:
false
- spec.subjects
Обязательный параметр
Пользователи и/или группы, которым необходимо предоставить права.
При использовании совместно с модулем user-authn обратите внимание на следующие нюансы:
- Для выдачи прав конкретному пользователю в качестве имени необходимо указывать его
email
. - При указании группы убедитесь, что необходимые группы допускаются к получению от провайдера, то есть указаны в соответствующем custom resource DexProvider.
- spec.subjects.kind
Обязательный параметр
Тип ресурса.
Допустимые значения:
User
,Group
,ServiceAccount
Пример:
kind: Group
- spec.subjects.name
Обязательный параметр
Имя ресурса.
Пример:
name: some-group-name
- spec.subjects.namespace
Namespace для ServiceAccount.
Шаблон:
[a-z0-9]([-a-z0-9]*[a-z0-9])?
Длина:
1..63
- Для выдачи прав конкретному пользователю в качестве имени необходимо указывать его
Cluster-wide-ресурс для управления настройками RBAC и авторизацией
Ресурс
ClusterAuthorizationRule
используется в устаревшей ролевой модели, которая будет удалена в будущих версиях Deckhouse. Рекомендуем использовать новую ролевую модель.
- spec
Обязательный параметр
- spec.accessLevel
Уровень доступа:
User
— позволяет получать информацию обо всех объектах (включая доступ к журналам подов), но не позволяет заходить в контейнеры, читать Secret’ы и выполнять port-forward;PrivilegedUser
— то же самое, что иUser
, но позволяет заходить в контейнеры, читать Secret’ы, а также удалять поды (что обеспечивает возможность перезагрузки);Editor
— то же самое, что иPrivilegedUser
, но предоставляет возможность создавать, изменять и удалять все объекты, которые обычно нужны для прикладных задач;Admin
— то же самое, что иEditor
, но позволяет удалять служебные объекты (производные ресурсы, напримерReplicaSet
,certmanager.k8s.io/challenges
иcertmanager.k8s.io/orders
);ClusterEditor
— то же самое, что иEditor
, но позволяет управлять ограниченным набором cluster-wide-объектов, которые могут понадобиться для прикладных задач (ClusterXXXMetric
,KeepalivedInstance
,DaemonSet
и т. д). Роль для работы оператора кластера;-
ClusterAdmin
— то же самое, что иClusterEditor
+Admin
, но позволяет управлять служебными cluster-wide-объектами (производные ресурсы, напримерMachineSets
,Machines
,OpenstackInstanceClasses
и т. п., а такжеClusterAuthorizationRule
,ClusterRoleBindings
иClusterRole
). Роль для работы администратора кластера.Важно! Так как
ClusterAdmin
уполномочен редактироватьClusterRoleBindings
, он может сам себе расширить полномочия; SuperAdmin
— разрешены любые действия с любыми объектами, при этом ограниченияlimitNamespaces
(см. ниже) продолжат работать.
Допустимые значения:
User
,PrivilegedUser
,Editor
,Admin
,ClusterEditor
,ClusterAdmin
,SuperAdmin
Пример:
accessLevel: PrivilegedUser
- spec.additionalRoles
Дополнительные роли, которые необходимо выдать для заданных
subjects
.Параметр сделан на крайний случай, вместо него категорически рекомендуется использовать параметр
accessLevel
.Пример:
additionalRoles: - apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-write-all - apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-read-all
- spec.additionalRoles.apiGroup
Обязательный параметр
apiGroup для пользователей.
Пример:
apiGroup: rbac.authorization.k8s.io
- spec.additionalRoles.kind
Обязательный параметр
Kind роли.
Допустимые значения:
ClusterRole
Пример:
kind: ClusterRole
- spec.additionalRoles.name
Обязательный параметр
Название роли.
Пример:
name: cluster-admin
- spec.allowAccessToSystemNamespacesПараметр устарел
Разрешить пользователю доступ в служебные namespace (
["kube-.*", "d8-.*", "loghouse", "default"]
).Доступно только с включенным параметром enableMultiTenancy.
По умолчанию:
false
Доступно только в enterprise edition.
- spec.allowScale
Разрешить/запретить масштабировать (выполнять scale) Deployment’ы и StatefulSet’ы.
По умолчанию:
false
- spec.limitNamespacesПараметр устарел
Список разрешенных namespace в формате регулярных выражений.
Политика:
- Если список указан, разрешаем доступ только по нему.
- Если список не указан, считаем, что разрешено все, кроме системных namespace (см.
spec.allowAccessToSystemNamespaces
ниже).
Доступно только с включенным параметром enableMultiTenancy.
Параметр устарел, используйте вместо него параметр namespaceSelector (версия
v1
custom resource’а).Доступно только в enterprise edition.
Пример:
limitNamespaces: production-.*
- Элемент массива
- spec.portForwarding
Разрешить/запретить выполнять
port-forward
.По умолчанию:
false
- spec.subjects
Обязательный параметр
Пользователи и/или группы, которым необходимо предоставить права.
При использовании совместно с модулем user-authn обратите внимание на следующие нюансы:
- Для выдачи прав конкретному пользователю в качестве имени необходимо указывать его
email
. - При указании группы убедитесь, что необходимые группы допускаются к получению от провайдера, то есть указаны в соответствующем custom resource DexProvider.
- spec.subjects.kind
Обязательный параметр
Тип ресурса.
Допустимые значения:
User
,Group
,ServiceAccount
Пример:
kind: Group
- spec.subjects.name
Обязательный параметр
Имя ресурса.
Пример:
name: some-group-name
- spec.subjects.namespace
Namespace для ServiceAccount.
Шаблон:
[a-z0-9]([-a-z0-9]*[a-z0-9])?
Длина:
1..63
- Для выдачи прав конкретному пользователю в качестве имени необходимо указывать его