Kubernetes Аутентификация * Модель 1002 * представляет способ, которым конкретная учетная запись пользователя или службы может быть назначена в кластере k8s, однако методы Авторизация определяют, был ли первоначальный запрос от посетителя кластера направлен на выполнениенекоторые действия над ресурсами / объектами кластера имеют достаточные разрешения, чтобы сделать это возможным.
Из-за того, что вы использовали определенные учетные записи служб для каждого модуля Pod всего кластера и предоставили им конкретные RBAC правила, возможно использовать API SelfSubjectAccessReview для проверки запросов к REST API k8s и определения, имеет ли клиентская учетная запись службы Pod соответствующие разрешения для выполнения каких-либо действий в целевом пространстве имен Pod.
Этого можно добиться, используя подкоманду kubectl auth can-i
, предоставив необходимую информацию для олицетворения пользователя.
Я предполагаю, что вы также можете запросить группу API авторизации k8s в схеме запроса HTTP итогда рструктурированные данные задницы из формата JSON / YAML, как в примере ниже:
Обычная kubectl auth can-i
команда для проверки, может ли default
SA получать данные о модулях в default
пространстве имен:
kubectl auth can-i get pod --as system:serviceaccount:default:default
Эквивалентный метод через HTTP-вызов к REST API k8s с использованием JSON-типа контента в Bearer Токен аутентификация:
curl -k \
-X POST \
-d @- \
-H "Authorization: Bearer $MY_TOKEN" \
-H 'Accept: application/json' \
-H "Impersonate-User: system:serviceaccount:default:default" \
-H 'Content-Type: application/json' \
https://<API-Server>/apis/authorization.k8s.io/v1/selfsubjectaccessreviews <<'EOF'
{
"kind": "SelfSubjectAccessReview",
"apiVersion": "authorization.k8s.io/v1",
"spec":{"resourceAttributes":{"namespace":"default","verb":"get","resource":"pods"}}
}
EOF
Вывод:
.... "status": {"позволено": истина, "причина": "RBAC: разрешено RoleBinding ....