ClusterAuthorizationRule

Scope: Cluster

Управляет настройками RBAC и авторизацией по namespace.

  • spec (объект)

    Обязательный параметр.

    • accessLevel (строка)

      Уровень доступа:

      • User — позволяет получать информацию обо всех объектах (включая доступ к журналам Pod’ов), но не позволяет заходить в контейнеры, читать секреты и выполнять port-forward;
      • PrivilegedUser — то же самое, что и User, но позволяет заходить в контейнеры, читать секреты, а также позволяет удалять Pod’ы (что обеспечивает возможность перезагрузки);
      • Editor — то же самое, что и PrivilegedUser, но предоставляет возможность создавать, изменять и удалять namespace и все объекты, которые обычно нужны для прикладных задач;

        Важно! т.к. Editor уполномочен редактировать RoleBindings, он может сам себе расширить полномочия в рамках namespace.

      • Admin — то же самое, что и Editor, но позволяет удалять служебные объекты (производные ресурсы, например, ReplicaSet, certmanager.k8s.io/challenges и certmanager.k8s.io/orders);
      • ClusterEditor — то же самое, что и Editor, но позволяет управлять ограниченным набором cluster-wide объектов, которые могут понадобиться для прикладных задач (ClusterXXXMetric, ClusterRoleBindings, KeepalivedInstance, DaemonSet и т.д). Роль для работы оператора кластера.

        Важно! т.к. ClusterEditor уполномочен редактировать ClusterRoleBindings, он может сам себе расширить полномочия.

      • ClusterAdmin — то же самое, что и ClusterEditor + Admin, но позволяет управлять служебными cluster-wide объектами (производные ресурсы, например, MachineSets, Machines, OpenstackInstanceClasses…, а так же ClusterAuthorizationRule). Роль для работы администратора кластера.

        Важно! т.к. ClusterAdmin уполномочен редактировать ClusterRoleBindings, он может сам себе расширить полномочия.

      • SuperAdmin — разрешены любые действия с любыми объектами, при этом ограничения limitNamespaces (см. ниже) продолжат работать.

      Допустимые значения: User, PrivilegedUser, Editor, Admin, ClusterEditor, ClusterAdmin, SuperAdmin

      Пример: "PrivilegedUser"

    • 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
      
      • apiGroup (строка)

        apiGroup для пользователей.

        Длина: 1..∞

        Пример: "rbac.authorization.k8s.io"

        Обязательный параметр.

      • kind (строка)

        Kind роли.

        Допустимые значения: ClusterRole, Role

        Пример: "ClusterRole"

        Обязательный параметр.

      • name (строка)

        Название роли.

        Длина: 1..∞

        Пример: "cluster-admin"

        Обязательный параметр.

    • allowAccessToSystemNamespaces (булевый)

      Разрешить пользователю доступ в служебные namespace (["kube-.*", "d8-.*", "loghouse", "default"]).

      Доступно только с включённым параметром enableMultiTenancy.

      По умолчанию: false

      Эти возможности доступны только в enterprise edition.

    • allowScale (булевый)

      Разрешить/запретить масштабировать (выполнять scale) Deployment’ы и StatefulSet’ы.

      По умолчанию: false

    • limitNamespaces (массив строк)

      Белый список разрешённых namespace в формате регулярных выражений.

      Политика:

      • Если список указан, то разрешаем доступ только по нему.
      • Если список не указан, то считаем, что разрешено всё, кроме системных namespace (см. spec.allowAccessToSystemNamespaces ниже).

      Доступно только с включённым параметром enableMultiTenancy.

      Эти возможности доступны только в enterprise edition.

      Длина: 1..∞

      Пример: "production-.*"

    • portForwarding (булевый)

      Разрешить/запретить выполнять port-forward.

      По умолчанию: false

    • subjects (массив объектов)

      Пользователи и/или группы, которым необходимо предоставить права.

      Спецификация…

      Важно! При использовании совместно с модулем user-authn, для выдачи прав конкретному пользователю в качестве имени необходимо указывать его email.

      Обязательный параметр.

      • kind (строка)

        Тип ресурса.

        Допустимые значения: User, Group, ServiceAccount

        Пример: "Group"

        Обязательный параметр.

      • name (строка)

        Имя ресурса.

        Длина: 1..∞

        Пример: "some-group-name"

        Обязательный параметр.

      • namespace (строка)

        Namespace для ServiceAccount.

        Длина: 1..∞

Управляет настройками RBAC и авторизацией по namespace.

  • spec (объект)

    Обязательный параметр.

    • accessLevel (строка)

      Уровень доступа:

      • User — позволяет получать информацию обо всех объектах (включая доступ к журналам Pod’ов), но не позволяет заходить в контейнеры, читать секреты и выполнять port-forward;
      • PrivilegedUser — то же самое, что и User, но позволяет заходить в контейнеры, читать секреты, а также позволяет удалять Pod’ы (что обеспечивает возможность перезагрузки);
      • Editor — то же самое, что и PrivilegedUser, но предоставляет возможность создавать, изменять и удалять namespace и все объекты, которые обычно нужны для прикладных задач;

        Важно! т.к. Editor уполномочен редактировать RoleBindings, он может сам себе расширить полномочия в рамках namespace.

      • Admin — то же самое, что и Editor, но позволяет удалять служебные объекты (производные ресурсы, например, ReplicaSet, certmanager.k8s.io/challenges и certmanager.k8s.io/orders);
      • ClusterEditor — то же самое, что и Editor, но позволяет управлять ограниченным набором cluster-wide объектов, которые могут понадобиться для прикладных задач (ClusterXXXMetric, ClusterRoleBindings, KeepalivedInstance, DaemonSet и т.д). Роль для работы оператора кластера.

        Важно! т.к. ClusterEditor уполномочен редактировать ClusterRoleBindings, он может сам себе расширить полномочия.

      • ClusterAdmin — то же самое, что и ClusterEditor + Admin, но позволяет управлять служебными cluster-wide объектами (производные ресурсы, например, MachineSets, Machines, OpenstackInstanceClasses…, а так же ClusterAuthorizationRule). Роль для работы администратора кластера.

        Важно! т.к. ClusterAdmin уполномочен редактировать ClusterRoleBindings, он может сам себе расширить полномочия.

      • SuperAdmin — разрешены любые действия с любыми объектами, при этом ограничения limitNamespaces (см. ниже) продолжат работать.

      Допустимые значения: User, PrivilegedUser, Editor, Admin, ClusterEditor, ClusterAdmin, SuperAdmin

      Пример: "PrivilegedUser"

    • 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
      
      • apiGroup (строка)

        apiGroup для пользователей.

        Длина: 1..∞

        Пример: "rbac.authorization.k8s.io"

        Обязательный параметр.

      • kind (строка)

        Kind роли.

        Допустимые значения: ClusterRole, Role

        Пример: "ClusterRole"

        Обязательный параметр.

      • name (строка)

        Название роли.

        Длина: 1..∞

        Пример: "cluster-admin"

        Обязательный параметр.

    • allowAccessToSystemNamespaces (булевый)

      Разрешить пользователю доступ в служебные namespace (["kube-.*", "d8-.*", "loghouse", "default"]).

      Доступно только с включённым параметром enableMultiTenancy.

      По умолчанию: false

      Эти возможности доступны только в enterprise edition.

    • allowScale (булевый)

      Разрешить/запретить масштабировать (выполнять scale) Deployment’ы и StatefulSet’ы.

      По умолчанию: false

    • limitNamespaces (массив строк)

      Белый список разрешённых namespace в формате регулярных выражений.

      Политика:

      • Если список указан, то разрешаем доступ только по нему.
      • Если список не указан, то считаем, что разрешено всё, кроме системных namespace (см. spec.allowAccessToSystemNamespaces ниже).

      Доступно только с включённым параметром enableMultiTenancy.

      Эти возможности доступны только в enterprise edition.

      Длина: 1..∞

      Пример: "production-.*"

    • portForwarding (булевый)

      Разрешить/запретить выполнять port-forward.

      По умолчанию: false

    • subjects (массив объектов)

      Пользователи и/или группы, которым необходимо предоставить права.

      Спецификация…

      Важно! При использовании совместно с модулем user-authn, для выдачи прав конкретному пользователю в качестве имени необходимо указывать его email.

      Обязательный параметр.

      • kind (строка)

        Тип ресурса.

        Допустимые значения: User, Group, ServiceAccount

        Пример: "Group"

        Обязательный параметр.

      • name (строка)

        Имя ресурса.

        Длина: 1..∞

        Пример: "some-group-name"

        Обязательный параметр.

      • namespace (строка)

        Namespace для ServiceAccount.

        Длина: 1..∞