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