Kubelet Authentication & Authorization
Last updated
Last updated
Learn & practice AWS Hacking: Learn & practice GCP Hacking:
기본적으로, 다른 구성된 인증 방법에 의해 거부되지 않은 kubelet의 HTTPS 엔드포인트에 대한 요청은 익명 요청으로 처리되며, **system:anonymous
**라는 사용자 이름과 **system:unauthenticated
**라는 그룹이 부여됩니다.
3가지 인증 방법은 다음과 같습니다:
익명 (기본값): 매개변수 --anonymous-auth=true
또는 구성 설정을 사용합니다:
Webhook: 이것은 kubectl API bearer tokens를 인증으로 활성화합니다 (유효한 모든 토큰이 유효합니다). 다음과 같이 허용합니다:
API 서버에서 authentication.k8s.io/v1beta1
API 그룹이 활성화되어 있는지 확인합니다.
--authentication-token-webhook
및 --kubeconfig
플래그로 kubelet을 시작하거나 다음 설정을 사용합니다:
kubelet은 TokenReview
API를 구성된 API 서버에서 호출하여 사용자 정보를 베어러 토큰에서 결정합니다.
X509 클라이언트 인증서: X509 클라이언트 인증서를 통해 인증을 허용합니다.
--client-ca-file
플래그로 kubelet을 시작하여 클라이언트 인증서를 검증할 CA 번들을 제공합니다. 또는 구성으로:
성공적으로 인증된 모든 요청(익명 요청 포함)은 그 후에 권한이 부여됩니다. 기본 권한 부여 모드는 **AlwaysAllow
**로, 모든 요청을 허용합니다.
그러나 다른 가능한 값은 **webhook
**입니다(대부분의 경우 여기서 찾을 수 있는 것). 이 모드는 인증된 사용자의 권한을 확인하여 작업을 허용하거나 거부합니다.
익명 인증이 활성화되어 있더라도 익명 접근은 어떤 작업을 수행할 권한이 없을 수 있습니다는 점에 유의하십시오.
웹훅을 통한 권한 부여는 **파라미터 --authorization-mode=Webhook
**를 사용하거나 구성 파일을 통해 설정할 수 있습니다:
The kubelet calls the SubjectAccessReview
API on the configured API server to 결정 whether each request is 허가된.
Action
The resource talking to the Kubelet api is 항상 nodes and subresource is 결정됨 from the incoming request's path:
For example, the following request tried to access the pods info of kubelet without permission:
우리는 금지됨을 받았으므로 요청이 인증 검사를 통과했습니다. 그렇지 않았다면 우리는 단지 권한 없음
메시지를 받았을 것입니다.
사용자 이름(이 경우 토큰에서)을 볼 수 있습니다.
리소스가 노드였고 서브리소스가 프록시였는지 확인합니다(이전 정보와 일치합니다).
자세한 내용은 를 참조하십시오.
The kubelet authorizes API requests using the same approach as the apiserver:
Learn & practice AWS Hacking: Learn & practice GCP Hacking:
Check the !
Join the 💬 or the or follow us on Twitter 🐦 .
Share hacking tricks by submitting PRs to the and github repos.
POST
create
GET, HEAD
get (for individual resources), list (for collections, including full object content), watch (for watching an individual resource or collection of resources)
PUT
update
PATCH
patch
DELETE
delete (for individual resources), deletecollection (for collections)
/stats/*
nodes
stats
/metrics/*
nodes
metrics
/logs/*
nodes
log
/spec/*
nodes
spec
all others
nodes
proxy