Kubelet Authentication & Authorization

Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Uthibitisho wa Kubelet

Kutoka kwa nyaraka:

Kwa chaguo-msingi, maombi kwa mwisho wa HTTPS wa kubelet ambayo hayakataliwi na njia zingine za uthibitisho zilizowekwa hutambuliwa kama maombi ya kujitegemea, na kupewa jina la mtumiaji system:anonymous na kikundi cha system:unauthenticated.

Njia 3 za uthibitisho ni:

  • Kujitegemea (chaguo-msingi): Tumia kuweka parameta --anonymous-auth=true au mazingira:

"authentication": {
"anonymous": {
"enabled": true
},
  • Webhook: Hii itawezesha kubectl API bearer tokens kama idhini (kitambulisho chochote halali kitakuwa halali). Ruhusu kwa:

  • hakikisha kikundi cha API cha authentication.k8s.io/v1beta1 kimezimishwa kwenye seva ya API

  • anzisha kubelet na bendera za --authentication-token-webhook na --kubeconfig au tumia mipangilio ifuatayo:

"authentication": {
"webhook": {
"cacheTTL": "2m0s",
"enabled": true
},

Kubelet huita API ya TokenReview kwenye seva ya API iliyowekwa ili kutambua habari ya mtumiaji kutoka kwa tokeni za bearer

  • Vyeti vya mteja vya X509: Kuruhusu kujithibitisha kupitia vyeti vya mteja vya X509

  • angalia nyaraka za uthibitishaji wa apiserver kwa maelezo zaidi

  • anza kubelet na bendera --client-ca-file, ukiweka faili ya CA kuthibitisha vyeti vya mteja. Au na config:

"authentication": {
"x509": {
"clientCAFile": "/etc/kubernetes/pki/ca.crt"
}
}

Uthibitishaji wa Kubelet

Ombi lolote ambalo limehakikiwa kwa mafanikio (ikiwa ni pamoja na ombi la kujitegemea) linaidhinishwa. Hali ya idhini ya msingi ni AlwaysAllow, ambayo inaruhusu maombi yote.

Hata hivyo, thamani nyingine inayowezekana ni webhook (ambayo ndio utakayopata zaidi). Hali hii ita angalia ruhusa za mtumiaji aliyeidhinishwa ili kuruhusu au kukataa kitendo.

Tafadhali kumbuka kwamba hata kama uthibitishaji wa kujitegemea umewezeshwa upatikanaji wa kujitegemea unaweza kutokuwa na ruhusa yoyote ya kufanya kitendo chochote.

Uthibitishaji kupitia webhook unaweza kusanidiwa kwa kutumia param --authorization-mode=Webhook au kupitia faili ya usanidi kama ifuatavyo:

"authorization": {
"mode": "Webhook",
"webhook": {
"cacheAuthorizedTTL": "5m0s",
"cacheUnauthorizedTTL": "30s"
}
},

Kubelet huita API ya SubjectAccessReview kwenye seva ya API iliyowekwa ili kutambua ikiwa kila ombi lime idhinishwa.

Kubelet inaidhinisha maombi ya API kwa kutumia njia ile ile ya vipengele vya ombi kama apiserver:

  • Kitendo

  • Rasilimali inayozungumza na api ya Kubelet ni daima nodes na subrasilimali inatambuliwa kutoka kwa njia ya ombi linaloingia:

Kwa mfano, ombi lifuatalo lilijaribu kupata habari za pods za kubelet bila idhini:

curl -k --header "Authorization: Bearer ${TOKEN}" 'https://172.31.28.172:10250/pods'
Forbidden (user=system:node:ip-172-31-28-172.ec2.internal, verb=get, resource=nodes, subresource=proxy)
  • Tumepata Katazwa, hivyo ombi lime pitisha ukaguzi wa Uthibitisho. Vinginevyo, tungepata tu ujumbe wa Hauruhusiwi.

  • Tunaweza kuona jina la mtumiaji (katika kesi hii kutoka kwa ishara)

  • Angalia jinsi rasilimali ilivyokuwa wakala na rasilimali ya ziada proxy (ambayo ina maana na habari iliyotangulia)

Marejeo

Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Last updated