Kubelet Authentication & Authorization

Support 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 ita wezesha 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
},

Kubeleti 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 kuthibitisha kupitia vyeti vya mteja vya X509

  • angalia hati ya uthibitishaji wa apiserver kwa maelezo zaidi

  • anzisha kubeleti 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 kienyeji) linaidhinishwa kisha. Hali ya idhini ya msingi ni AlwaysAllow, ambayo inaruhusu maombi yote.

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

Tafadhali kumbuka kwamba hata kama uthibitishaji wa kienyeji umewezeshwa upatikanaji wa kienyeji 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 kwa:

"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

Muhimu ya HTTPmuhimu ya ombi

POST

kuunda

GET, HEAD

pata (kwa rasilimali binafsi), orodhesha (kwa makusanyo, ikiwa ni pamoja na maudhui kamili ya kitu), angalia (kwa kufuatilia rasilimali binafsi au mkusanyiko wa rasilimali)

WEKA

sasisha

KITAMBUA

kitambo

ONDOA

ondoa (kwa rasilimali binafsi), ondoakusanyo (kwa makusanyo)

  • Rasilimali inayozungumza na api ya Kubelet ni daima nodes na subrasilimali inatokana na njia ya ombi linaloingia:

API ya Kubeletrasilimalisubrasilimali

/takwimu/*

nodes

takwimu

/vipimo/*

nodes

vipimo

/mambo/*

nodes

log

/maelezo/*

nodes

maelezo

zote nyingine

nodes

proksi

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 Uthibitishaji. Vinginevyo, tungepata 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

Support HackTricks

Last updated