Kubernetes Pivoting to Clouds
GCP
Ikiwa unatekeleza kikundi cha k8s ndani ya GCP labda utataka kwamba programu fulani inayotekelezwa ndani ya kikundi iwe na ufikiaji fulani kwa GCP. Kuna njia 2 za kawaida za kufanya hivyo:
Kuweka funguo za GCP-SA kama siri
Njia ya kawaida ya kumpa ufikiaji wa programu ya kubernetes kwa GCP ni:
Unda Akaunti ya Huduma ya GCP
Unganisha ruhusa zinazohitajika
Pakua funguo la json la SA iliyoundwa
Weka kama siri ndani ya kikundi
Weka mazingira ya GOOGLE_APPLICATION_CREDENTIALS ikionyesha njia ambapo json iko.
Kwa hivyo, kama mshambuliaji, ikiwa unaharibu chombo ndani ya kikundi, 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 ukitumia 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 hadi 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 itajithibitisha 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 SA ya GCP 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 kwa ajili ya kujithibitisha endapo inahitajika:
Kama muhusika ndani ya K8s unapaswa kutafuta SAs na iam.gke.io/gcp-service-account
maelezo kwani hilo linaonyesha kwamba SA inaweza kupata kitu katika GCP. Chaguo lingine litakuwa kujaribu kutumia kila KSA katika kikundi na kuangalia kama ina ufikivu.
Kutoka GCP ni muhimu sana kuchunguza vifungo na kujua ufikivu gani unampa SAs ndani ya Kubernetes.
Hii ni script ya kutembea kwa urahisi juu ya ufafanuzi wa podi zote kutafuta hiyo maelezo:
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:
Baada ya nafasi ya jina kuwekwa na majukumu ya IAM ambayo Pots zinaweza kuwa nayo, unaweza kutaja jukumu unalotaka kwa kila ufafanuzi wa pod kwa kitu kama:
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 ufikiaji 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.
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 podi zinazoendeshwa na SA hiyo zitakuwa na ufikiaji wa tokeni ya jukumu. Tokeni imeandikwa ndani ya faili na njia imeelezwa katika
AWS_WEB_IDENTITY_TOKEN_FILE
(chaguo-msingi:/var/run/secrets/eks.amazonaws.com/serviceaccount/token
)
Kukamata aws kwa kutumia token kutoka /var/run/secrets/eks.amazonaws.com/serviceaccount/token
endesha:
Kama muhalifu, ikiwa unaweza kuchunguza kikundi cha K8s, angalia akaunti za huduma zenye alama hiyo ili kupanda hadi AWS. Ili kufanya hivyo, tu tekeleza/tengeneza kikasha kutumia moja ya akaunti za huduma za IAM na ibebe kitufe.
Zaidi ya hayo, ikiwa uko ndani ya kikasha, chunguza mazingira kama vile AWS_ROLE_ARN na AWS_WEB_IDENTITY_TOKEN.
Maranyingi Sera ya Uaminifu ya jukumu inaweza kuwa imeundwa vibaya 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 kuhusu 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, kwa hivyo inaweza isiwe na maana kujaribu kuangalia kila node).
Walakini, kuna mahitaji muhimu ya kupata kiishio cha metadata kutoka kwa node, unahitaji kuwa kwenye node (kikao cha ssh?) au angalau kuwa na mtandao sawa:
Pora Kitambulisho cha Jukumu la IAM
Tulijadili jinsi ya kuambatisha Majukumu ya IAM kwa Pods au hata jinsi ya kutoroka kwa Node ili kuiba Jukumu la IAM ambalo kifaa kinaambatisha.
Unaweza kutumia script ifuatayo kwa kuiba vibali vya jukumu lako la IAM ulilofanya kazi kwa bidii:
Marejeo
Last updated