Spec-Zone.ru › Kubernetes

SelfSubjectAccessReview

SelfSubjectAccessReview проверяет, может ли текущий пользователь выполнить действие.

apiVersion: authorization.k8s.io/v1

import "k8s.io/api/authorization/v1"

SelfSubjectAccessReview

SelfSubjectAccessReview проверяет, может ли текущий пользователь выполнить действие. Если spec.namespace не указан, это означает "во всех именованных пространствах". Self — это особый случай, так как пользователи всегда должны иметь возможность проверить, могут ли они выполнить действие.

  • apiVersion: authorization.k8s.io/v1

  • kind: SelfSubjectAccessReview

  • metadata (ObjectMeta)

    Стандартные метаданные списка. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

  • spec (SelfSubjectAccessReviewSpec), обязательный

    Spec содержит информацию о запрашиваемом запросе. поля user и groups должны быть пустыми

  • status (SubjectAccessReviewStatus)

    Сервер заполняет статус и указывает, разрешен ли запрос или нет

SelfSubjectAccessReviewSpec

SelfSubjectAccessReviewSpec — это описание запроса на доступ. Должно быть установлено ровно одно из ResourceAuthorizationAttributes и NonResourceAuthorizationAttributes

  • nonResourceAttributes (NonResourceAttributes)

    NonResourceAttributes описывает информацию для запроса доступа к нересурсным объектам

    NonResourceAttributes включает атрибуты авторизации, доступные для запросов к нересурсным объектам интерфейса Authorizer

    • nonResourceAttributes.path (string)

      Path — это путь URL-адреса запроса

    • nonResourceAttributes.verb (string)

      Verb — стандартный HTTP-глагол

  • resourceAttributes (ResourceAttributes)

    ResourceAuthorizationAttributes описывает информацию для запроса доступа к ресурсу

    ResourceAttributes включает атрибуты авторизации, доступные для запросов к ресурсам интерфейса Authorizer

    • resourceAttributes.fieldSelector (FieldSelectorAttributes)

      fieldSelector описывает ограничение доступа на основе поля. Он может только ограничивать доступ, а не расширять его.

      Это поле находится на стадии альфа-версии. Чтобы использовать это поле, вы должны включить AuthorizeWithSelectors ворота (отключены по умолчанию).

      *FieldSelectorAttributes указывает ограниченный доступ на основе поля. Создателям веб-хуков рекомендуется * убедиться, что rawSelector и requirements не установлены одновременно * рассмотреть поле requirements, если оно установлено * не пытаться анализировать или учитывать поле rawSelector, если оно установлено. Это для того, чтобы избежать другого уязвимости CVE-2022-2880 (т. е. согласование различных систем о том, как именно анализировать запрос — не то, чего мы хотим), см. https://www.oxeye.io/resources/golang-parameter-smuggling-attack для получения дополнительной информации. Для конечных точек *SubjectAccessReview kube-apiserver: * Если rawSelector пустой и requirements пустой, запрос не ограничен. * Если rawSelector присутствует, а requirements пустой, rawSelector будет проанализирован и ограничен, если анализ пройдет успешно. * Если rawSelector пустой, а requirements присутствуют, requirements должны соблюдаться * Если rawSelector и requirements присутствуют, запрос некорректен.

      • resourceAttributes.fieldSelector.rawSelector (string)

        rawSelector — это сериализация селектора поля, которая будет включена в параметр запроса. Реализации веб-хуков рекомендуется игнорировать rawSelector. kube-apiserver *SubjectAccessReview будет анализировать rawSelector, если requirements не присутствуют.

      • resourceAttributes.fieldSelector.requirements ([]FieldSelectorRequirement)

        Атомарно: будет заменено во время слияния

        requirements — это проаналированная интерпретация селектора поля. Все требования должны быть выполнены для того, чтобы экземпляр ресурса соответствовал селектору. Реализации веб-хуков должны обрабатывать требования, но как их обрабатывать — зависит от веб-хука. Поскольку требования могут только ограничивать запрос, безопасно разрешить неограниченный запрос, если требования не понятны.

        FieldSelectorRequirement — это селектор, содержащий значения, ключ и оператор, который связывает ключ и значения.

        • resourceAttributes.fieldSelector.requirements.key (string), обязательный

          key — это ключ селектора поля, к которому относится требование.

        • resourceAttributes.fieldSelector.requirements.operator (string), обязательный

          operator представляет отношение ключа к набору значений. Допустимые операторы — In, NotIn, Exists, DoesNotExist. Список операторов может расширяться в будущем.

        • resourceAttributes.fieldSelector.requirements.values ([]string)

          Атомарно: будет заменено во время слияния

          values — это массив строковых значений. Если оператор — In или NotIn, массив values должен быть непустым. Если оператор — Exists или DoesNotExist, массив values должен быть пустым.

    • resourceAttributes.group (string)

      Group — API-группа Resource. "*" означает все.

    • resourceAttributes.labelSelector (LabelSelectorAttributes)

      labelSelector описывает ограничение доступа на основе меток. Оно может только ограничить доступ, а не расширить его.

      Это поле находится в стадии альфа-версии. Чтобы использовать это поле, необходимо включить шлюз функций AuthorizeWithSelectors (отключен по умолчанию).

      *LabelSelectorAttributes указывает ограничение доступа по меткам. Авторы вебхуков должны * убедиться, что rawSelector и requirements не установлены одновременно * учитывать поле requirements, если оно установлено * не пытаться анализировать или учитывать поле rawSelector, если оно установлено. Это для предотвращения другой уязвимости CVE-2022-2880 (т. е. необходимость достижения согласия разных систем по тому, как именно анализировать запрос — это то, чего мы не хотим), см. https://www.oxeye.io/resources/golang-parameter-smuggling-attack для получения более подробной информации. Для конечных точек SubjectAccessReview kube-apiserver: * Если rawSelector пустой и requirements пустой, запрос не ограничен. * Если rawSelector присутствует, а requirements пустой, rawSelector будет проанализирован и ограничен, если анализ пройдёт успешно. * Если rawSelector пустой, а requirements присутствуют, requirements должны быть учтены * Если rawSelector присутствует и requirements присутствуют, запрос некорректен.

      • resourceAttributes.labelSelector.rawSelector (string)

        rawSelector — это сериализация селектора поля, которая будет включена в параметр запроса. Реализациям вебхуков рекомендуется игнорировать rawSelector. *SubjectAccessReview kube-apiserver будет анализировать rawSelector, пока requirements не присутствуют.

      • resourceAttributes.labelSelector.requirements ([]LabelSelectorRequirement)

        Атомарный: будет заменён при слиянии

        requirements — это проанализированное толкование селектора меток. Все требования должны быть выполнены для того, чтобы экземпляр ресурса соответствовал селектору. Реализации вебхуков должны обрабатывать требования, но как их обрабатывать — решать вебхуку. Поскольку требования могут только ограничить запрос, безопасно разрешить неограниченный запрос, если требования не понятны.

        Требование селектора меток — это селектор, содержащий значения, ключ и оператор, который связывает ключ и значения.

        • resourceAttributes.labelSelector.requirements.key (string), required

          key — это ключ метки, к которому применяется селектор.

        • resourceAttributes.labelSelector.requirements.operator (string), required

          operator представляет отношение ключа к набору значений. Допустимые операторы — In, NotIn, Exists и DoesNotExist.

        • resourceAttributes.labelSelector.requirements.values ([]string)

          Атомарный: будет заменён при слиянии

          values — массив строковых значений. Если оператор — In или NotIn, массив values должен быть непустым. Если оператор — Exists или DoesNotExist, массив values должен быть пустым. Этот массив заменяется во время стратегической модификации патча.

    • resourceAttributes.name (string)

      Name — имя ресурса, запрашиваемого для «получения» или удаляемого для «удаления». "" (пустое) означает все.

    • resourceAttributes.namespace (string)

      Namespace — пространство имён действия, запрашиваемого. В настоящее время нет различий между отсутствием пространства имён и всеми пространствами имён "" (пустое) по умолчанию для LocalSubjectAccessReviews "" (пустое) пустое для ресурсов кластерного уровня "" (пустое) означает «все» для ресурсов пространства имён из SubjectAccessReview или SelfSubjectAccessReview

    • resourceAttributes.resource (string)

      Resource — один из существующих типов ресурсов. «*» означает все.

    • resourceAttributes.subresource (string)

      Subresource — один из существующих типов ресурсов. "" означает ни один.

    • resourceAttributes.verb (string)

      Verb — глагол API ресурсов Kubernetes, например: get, list, watch, create, update, delete, proxy. «*» означает все.

    • resourceAttributes.version (string)

      Version — версия API ресурса. «*» означает все.

© 2024 The Kubernetes Authors | Documentation Distributed under CC BY 4.0
Copyright © 2024 The Linux Foundation ®. All rights reserved.
https://kubernetes.io/docs/reference/kubernetes-api/authorization-resources/self-subject-access-review-v1/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API