Есть ли клиентский API Python для «kubectl auth can-i --list»

Я пытаюсь перечислить разрешения, связанные с учетной записью службы «foobar-user», применяемой к моему кластеру в пространстве имен «kube-system»:

kubectl auth can-i --list --as=system:serviceaccount:kube-system:foobar-user --namespace=kube-system

Resources                                       Non-Resource URLs                     Resource Names     Verbs
clusterroles                                    []                                    []                 [create list update watch get]
deployments                                     []                                    []                 [create list update watch get]
endpoints                                       []                                    []                 [create list update watch get]
pods                                            []                                    []                 [create list update watch get]
rolebindings                                    []                                    []                 [create list update watch get]
roles                                           []                                    []                 [create list update watch get]
secrets                                         []                                    []                 [create list update watch get]
services                                        []                                    []                 [create list update watch get]
selfsubjectaccessreviews.authorization.k8s.io   []                                    []                 [create]
selfsubjectrulesreviews.authorization.k8s.io    []                                    []                 [create]
                                                [/.well-known/openid-configuration]   []                 [get]
                                                [/api/*]                              []                 [get]
                                                [/api]                                []                 [get]
                                                [/apis/*]                             []                 [get]
                                                [/apis]                               []                 [get]
                                                [/healthz]                            []                 [get]
                                                [/healthz]                            []                 [get]
                                                [/livez]                              []                 [get]
                                                [/livez]                              []                 [get]
                                                [/openapi/*]                          []                 [get]
                                                [/openapi]                            []                 [get]
                                                [/openid/v1/jwks]                     []                 [get]
                                                [/readyz]                             []                 [get]
                                                [/readyz]                             []                 [get]
                                                [/version/]                           []                 [get]
                                                [/version/]                           []                 [get]
                                                [/version]                            []                 [get]
                                                [/version]                            []                 [get]
nodes                                           []                                    []                 [list watch get]

Что такое эквивалентный API для этого через клиент Python для kubernetes, чтобы перечислить разрешения, связанные с учетной записью службы? Ценю вашу помощь, спасибо!

Любой вопрос «kubectl делает это, но какой у него API?» отвечает, набирая многословие как kubectl --v=100 auth can-i, а затем имитируя его HTTP-запросы, используя привязку API по вашему выбору.

mdaniel 05.04.2022 05:03
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
0
1
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Эквивалентный API для этого через клиент Python для kubernetes:

AuthorizationV1Api — создать SelfSubjectRulesReview

Официальная документация Kubernetes выглядит следующим образом:

SelfSubjectRulesReview: обзор, который возвращает набор действий, которые пользователь может выполнять в пространстве имен. Полезно для пользователей, чтобы быстро подвести итоги своего доступа, или для пользовательских интерфейсов, чтобы скрыть/показать действия.

Проверка доступа к API

Спасибо, что поделился! Я попробовал и у меня есть скрипт, который вызывает API, но я получаю сообщение об ошибке HTTP 400 Bad Request: «SelfSubjectAccessReview в версии \"v1\" не может быть обработан как SelfSubjectAccessReview: v1.SelfSubjectAccessReview.Spec: readObjectStart: expect { or n , но найдено \", обнаружена ошибка в #10 байте ...|{\"spec\": \"foo-bar|..., больший контекст ...|{\"spec\": \"foo -bar\"}|..." Любая идея о том, почему запрос искажен?

KGosalia 07.04.2022 02:40

@KGosalia Я думаю, что в сообщении об ошибке ясно сказано: "SelfSubjectAccessReview in version \"v1\" cannot be handled as a SelfSubjectAccessReview: v1.SelfSubjectAccessReview.Spec: readObjectStart: expect { or n, but found \", часть spec должна быть объектом json, а не строкой.

YwH 07.04.2022 07:16

Я вижу, но это уже python dict. Вот мой фрагмент кода: spec = {"namespace": "foo-bar"} с kubernetes.client.ApiClient(configuration) as api_client: api_instance = kubernetes.client.AuthorizationV1Api(api_client) body = kubernetes.client.V1SelfSubjectAccessReview(spec= spec) api_response = api_instance.create_self_subject_access_review(body) pprint(api_response) body = {'api_version': None, 'kind': None, 'metadata': None, 'spec': 'foo-bar', 'status': None }

KGosalia 07.04.2022 21:26

При этом я столкнулся с следующей ошибкой: ".authorization.k8s.io \"\" недействителен: spec.resourceAttributes: Неверное значение: \"null\": должен быть указан ровно один из nonResourceAttributes или resourceAttributes"

KGosalia 07.04.2022 21:29

@KGosalia Ваш спецификационный словарь все еще недействителен, он должен выглядеть как объект, описанный здесь: github.com/kubernetes-client/python/blob/master/kubernetes/d‌​ocs/…

YwH 08.04.2022 05:25

Спасибо, разобрался! В запросе отсутствовали аргументы с ключевыми словами

KGosalia 08.04.2022 22:02

Другие вопросы по теме