Kubernetes Pivoting to Clouds
GCP
Ikiwa unaendesha kikundi cha k8s ndani ya GCP labda utataka kwamba programu fulani inayofanya kazi ndani ya kikundi iwe na ufikiaji fulani wa GCP. Kuna njia 2 za kawaida za kufanya hivyo:
Kuweka funguo za GCP-SA kama siri
Njia ya kawaida ya kumpa ufikiaji programu ya kubernetes kwa GCP ni:
Unda Akaunti ya Huduma ya GCP
Unganisha ruhusa zinazohitajika
Pakua funguo ya json ya SA iliyo umbwa
Weka kama siri ndani ya kisanduku
Weka GOOGLE_APPLICATION_CREDENTIALS kama mazingira ya kufikia njia ambapo json iko.
Hivyo, kama mshambuliaji, ikiwa unahatarisha chombo ndani ya kisanduku, unapaswa kuangalia mazingira ya env na faili za json zenye siri za GCP.
Kuunganisha json ya GSA na siri ya KSA
Njia ya kumpa ufikiaji wa GSA kwa kikundi cha GKE ni kwa kuunganisha kama ifuatavyo:
Unda akaunti ya huduma ya Kubernetes katika eneo sawa na kikundi chako cha GKE kwa kutumia amri ifuatayo:
Unda Siri ya Kubernetes ambayo ina maelezo ya akaunti ya huduma ya GCP unayotaka kutoa ufikiaji kwa kikundi cha GKE. Unaweza kufanya hivi ukitumia zana ya mstari wa amri ya
gcloud
, kama inavyoonyeshwa katika mfano ufuatao:
Unganisha Siri ya Kubernetes kwa akaunti ya huduma ya Kubernetes kwa kutumia amri ifuatayo:
Katika hatua ya pili ilisetiwa siri ya GSA kama siri ya KSA. Kisha, ikiwa unaweza kusoma siri hiyo kutoka ndani ya kikundi cha GKE, unaweza kupanda cheo kwa akaunti hiyo ya huduma ya GCP.
Utambulisho wa Kazi wa GKE
Kwa Utambulisho wa Kazi, tunaweza kusanidi akaunti ya huduma ya Kubernetes kufanya kazi kama akaunti ya huduma ya Google. Makasha yanayoendesha na akaunti ya huduma ya Kubernetes yatajithibitisha moja kwa moja kama akaunti ya huduma ya Google wakati wa kupata APIs za Google Cloud.
Mfululizo wa kwanza wa hatua za kuwezesha tabia hii ni kuwezesha Utambulisho wa Kazi katika GCP (hatua) na kuunda GCP SA unayotaka k8s kuiga.
Wezesha Utambulisho wa Kazi kwenye kikundi kipya
Unda/Boresha nodepool mpya (Vikundi vya kiotomatiki havihitaji hii)
Unda Akaunti ya Huduma ya GCP ya kujifanya kutoka K8s na ruhusa za GCP:
unganisha kwenye kikundi na unda akaunti ya huduma ya kutumia
unganisha GSA na KSA
Tekeleza pod na KSA na angalia upatikanaji wa GSA:
Angalia amri ifuatayo ya kujithibitisha endapo inahitajika:
Kama mshambuliaji ndani ya K8s unapaswa kutafuta SAs na iam.gke.io/gcp-service-account
annotation kwani inaonyesha kwamba SA inaweza kupata kitu katika GCP. Chaguo lingine litakuwa kujaribu kutumia kila KSA kwenye kikundi na kuangalia kama ina ufikiaji.
Kutoka GCP ni muhimu sana kuchunguza vifungo na kujua ufikiaji gani unampa SAs ndani ya Kubernetes.
Hii ni script ya kutembea kwa urahisi juu ya ufafanuzi wa pod zote ukitafuta hiyo annotation:
AWS
Kiam & Kube2IAM (IAM role for Pods)
Njia (iliyopitwa na wakati) ya kutoa Majukumu ya IAM kwa Pods ni kutumia Kiam au Kube2IAM server. Kimsingi utahitaji kuendesha daemonset katika kikundi chako na aina ya jukumu la IAM lenye mamlaka. Hii daemonset ndiyo itakayotoa ufikiaji wa majukumu ya IAM kwa pods zinazohitaji.
Kwanza kabisa unahitaji kusanidi majukumu gani yanaweza kupatikana ndani ya nafasi, na unafanya hivyo na maelezo ndani ya kitu cha nafasi:
Mara tu eneo la jina limeboreshwa na majukumu ya IAM yaliyowekwa, **Unaweza kutaja jukumu unalotaka kwenye ufafanuzi wa kila pod kwa kitu kama hiki:
Kama muhalifu, ukiona maelezo haya kwenye pods au namespaces au server ya kiam/kube2iam ikifanya kazi (labda katika kube-system) unaweza kujifanya kuwa kila jukumu ambalo tayari linatumika na pods na zaidi (ikiwa una ufikivu wa akaunti ya AWS tafuta majukumu).
Unda Pod na Jukumu la IAM
Jukumu la IAM linalohitajika lazima liwe katika akaunti ile ile ya AWS kama jukumu la kiam/kube2iam na jukumu hilo lazima liweze kufikia hiyo.
Jukumu la IAM kwa Akaunti za Huduma za K8s kupitia OIDC
Hii ni njia iliyopendekezwa na AWS.
Kwanza kabisa unahitaji kuunda mtoa huduma wa OIDC kwa kikundi.
Kisha unajenga jukumu la IAM na ruhusa ambazo SA itahitaji.
Unda mahusiano ya uaminifu kati ya jukumu la IAM na SA jina (au maeneo yanayotoa ufikiaji wa jukumu kwa SAs zote za eneo hilo). Mahusiano ya uaminifu kimsingi yataangalia jina la mtoa huduma wa OIDC, jina la eneo na jina la SA.
Hatimaye, unda SA na alama inayoonyesha ARN ya jukumu, na makasha yanayoendesha na SA hiyo yatakuwa na ufikiaji wa tokeni ya jukumu. Tokeni ina andikwa ndani ya faili na njia inabainishwa katika
AWS_WEB_IDENTITY_TOKEN_FILE
(chaguo-msingi:/var/run/secrets/eks.amazonaws.com/serviceaccount/token
)
Kukamata aws kwa kutumia ishara kutoka /var/run/secrets/eks.amazonaws.com/serviceaccount/token
endesha:
Kama mshambuliaji, ikiwa unaweza kuhesabu kikundi cha K8s, angalia akaunti za huduma zenye alama hiyo ili kupanda hadi AWS. Ili kufanya hivyo, tu tekeleza/umba kikasha cha kutumia moja ya akaunti za huduma za IAM na ibebe kitufe.
Zaidi ya hayo, ikiwa uko ndani ya kikasha, angalia mazingira kama AWS_ROLE_ARN na AWS_WEB_IDENTITY_TOKEN.
Wakati mwingine Sera ya Kuamini jukumu inaweza kuwa mbaya kimeundwa na badala ya kutoa ufikiaji wa AssumeRole kwa akaunti ya huduma inayotarajiwa, inampa kwa akaunti zote za huduma. Kwa hivyo, ikiwa unaweza kuandika alama kwenye akaunti ya huduma iliyodhibitiwa, unaweza kupata ufikiaji wa jukumu.
Angalia ukurasa ufuatao kwa maelezo zaidi:
Pata Kikasha na SAs zenye Majukumu ya IAM kwenye Kikundi
Hii ni script ya kutembea kwa urahisi juu ya kikasha chote na ufafanuzi wa sas ukitafuta alama hiyo:
Jukumu la IAM la Node
Sehemu iliyopita ilikuwa juu ya jinsi ya kuiba Majukumu ya IAM na makodsi, lakini kumbuka kwamba Node ya kikundi cha K8s itakuwa kifaa ndani ya wingu. Hii inamaanisha kwamba Node ina uwezekano mkubwa wa kuwa na jukumu jipya la IAM unaloweza kuiba (kumbuka kwamba kawaida nodes zote za kikundi cha K8s zitakuwa na jukumu sawa la IAM, hivyo inaweza isiwe na maana kujaribu kuangalia kila node).
Walakini, kuna mahitaji muhimu ya kupata mwisho wa metadata kutoka kwa node, unahitaji kuwa kwenye node (kikao cha ssh?) au angalau kuwa na mtandao sawa:
Pora Kitufe cha IAM
Tulijadili jinsi ya kuambatisha Majukumu ya IAM kwa Pods au hata jinsi ya kutoroka kwa Node ili kuiba Kitufe cha IAM kilichounganishwa na kifaa hicho.
Unaweza kutumia hati ifuatayo kuiba sifa za kitufe chako kipya cha IAM ulichofanya kazi kwa bidii nacho:
Marejeo
Last updated