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

      Пример:

      accessLevel: 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 для пользователей.

        Пример:

        apiGroup: rbac.authorization.k8s.io
        
      • kindстрока

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

        Kind роли.

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

        Пример:

        kind: ClusterRole
        
      • nameстрока

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

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

        Пример:

        name: 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.

      Пример:

      limitNamespaces:
      - production-.*
      
    • portForwardingбулевый

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

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

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

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

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

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

      При использовании совместно с модулем user-authn, обратите внимание на следующие нюансы:

      • Для выдачи прав конкретному пользователю в качестве имени необходимо указывать его email;
      • При указании группы убедитесь, что необходимые группы допускаются к получению от провайдера, т.е. указаны в соответствующем custom resource DexProvider.
      • kindстрока

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

        Тип ресурса.

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

        Пример:

        kind: Group
        
      • nameстрока

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

        Имя ресурса.

        Пример:

        name: some-group-name
        
      • namespaceстрока

        Namespace для ServiceAccount.

        Шаблон: [a-z0-9]([-a-z0-9]*[a-z0-9])?

        Длина: 1..63

Управляет настройками 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

      Пример:

      accessLevel: 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 для пользователей.

        Пример:

        apiGroup: rbac.authorization.k8s.io
        
      • kindстрока

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

        Kind роли.

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

        Пример:

        kind: ClusterRole
        
      • nameстрока

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

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

        Пример:

        name: 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.

      Пример:

      limitNamespaces:
      - production-.*
      
    • portForwardingбулевый

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

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

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

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

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

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

      При использовании совместно с модулем user-authn, обратите внимание на следующие нюансы:

      • Для выдачи прав конкретному пользователю в качестве имени необходимо указывать его email;
      • При указании группы убедитесь, что необходимые группы допускаются к получению от провайдера, т.е. указаны в соответствующем custom resource DexProvider.
      • kindстрока

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

        Тип ресурса.

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

        Пример:

        kind: Group
        
      • nameстрока

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

        Имя ресурса.

        Пример:

        name: some-group-name
        
      • namespaceстрока

        Namespace для ServiceAccount.

        Шаблон: [a-z0-9]([-a-z0-9]*[a-z0-9])?

        Длина: 1..63