Spec-Zone.ru › Kubernetes

SubjectAccessReview

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

apiVersion: authorization.k8s.io/v1

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

SubjectAccessReview

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

  • apiVersion: authorization.k8s.io/v1

  • kind: SubjectAccessReview

  • metadata (ObjectMeta)

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

  • spec (SubjectAccessReviewSpec), необходимо

    Spec содержит информацию о запрашиваемом для оценки действии

  • status (SubjectAccessReviewStatus)

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

SubjectAccessReviewSpec

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

  • extra (map[string][]string)

    Extra соответствует методу user.Info.GetExtra() из аутентификатора. Поскольку это входные данные для авторизатора, здесь требуется отражение.

  • groups ([]string)

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

    Groups — это группы, для которых выполняется проверка.

  • 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 ресурса. «*» означает все.

    • 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. Kube-apiserver *SubjectAccessReview будет анализировать rawSelector, если requirements не присутствуют.

      • resourceAttributes.labelSelector.requirements ([]LabelSelectorRequirement)

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

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

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

        • resourceAttributes.labelSelector.requirements.key (string), необходимо

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

        • resourceAttributes.labelSelector.requirements.operator (string), необходимо

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

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

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

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

    • resourceAttributes.name (string)

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

    • 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 ресурса. «*» означает все.

  • uid (string)

    UID информация о запрашивающем пользователе.

  • user (string)

    User — это пользователь, для которого выполняется проверка. Если указан «User», но не «Groups», то это интерпретируется как «Что если пользователь не является членом какой-либо группы»

SubjectAccessReviewStatus

SubjectAccessReviewStatus

  • allowed (boolean), необходимо

    Allowed необходимо. True, если действие будет разрешено, false в противном случае.

  • denied (boolean)

    Denied необязательно. True, если действие будет отклонено, в противном случае false. Если both allowed ложно и denied ложно, тогда авторизатор не имеет мнения о том, следует ли авторизовать действие. Denied не может быть истинным, если Allowed истинно.

  • evaluationError (string)

    EvaluationError — это указание на то, что во время проверки авторизации произошла ошибка. Совершенно возможно получить ошибку и продолжить определение статуса авторизации несмотря на это. Например, RBAC может отсутствовать роль, но достаточно ролей всё ещё присутствуют и позволяют делать выводы о запросе.

  • reason (string)

    Reason необязательно. Указывает причину, по которой запрос был разрешен или отклонен.

© 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/subject-access-review-v1/

Spec-Zone.ru

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