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/