Fanamarihana. transl.: Ny ampahany voalohany ity andiany ity dia natokana hahafantarana ny fahaizan'i Istio sy hanehoana azy ireo amin'ny asa, ny faharoa - zotra voarindra tsara sy fitantanana ny fifamoivoizana amin'ny tambajotra. Ankehitriny dia hiresaka momba ny fiarovana isika: mba hampisehoana ireo fiasa fototra mifandraika amin'izany, ny mpanoratra dia mampiasa ny serivisy famantarana Auth0, fa ny mpamatsy hafa dia azo amboarina amin'ny fomba mitovy.
Nanangana cluster Kubernetes izay nametrahanay an'i Istio sy ohatra fampiharana microservice, Fanadihadiana Sentiment, mba hanehoana ny fahaizan'i Istio.
Miaraka amin'ny Istio, afaka nitazona ny serivisy ho kely izahay satria tsy mila mametraka sosona toy ny Retries, Timeout, Circuit Breakers, Tracing, Monitoring. . Ho fanampin'izay, nampiasa teknika fitiliana sy fametrahana mandroso izahay: fitiliana A/B, fitaratra ary fanodikodinana canary.
Ao amin'ny fitaovana vaovao, hiatrika ny sosona farany amin'ny lalana mankany amin'ny sandan'ny orinasa isika: fanamarinana sy fanomezan-dΓ lana - ary ao Istio dia tena fahafinaretana!
Fanamarinana sy fanomezan-dΓ lana ao Istio
Tsy nino mihitsy aho fa ho aingam-panahy avy amin'ny fanamarinana sy fanomezan-dΓ lana. Inona no azon'i Istio atolotra avy amin'ny fomba fijery ara-teknolojia mba hampifaliana ireo lohahevitra ireo ary indrindra indrindra, manentana anao?
Tsotra ny valiny: Afindran'i Istio ny andraikitra amin'ireo fahaiza-manao ireo avy amin'ny serivisinao mankany amin'ny proxy Envoy. Rehefa tonga any amin'ny serivisy ny fangatahana dia efa voamarina sy nahazo alalana izy ireo, ka ny hany ataonao dia ny manoratra kaody mahasoa amin'ny raharaham-barotra.
Toa tsara izany? Andeha hojerentsika ny ao anatiny!
Fanamarinana amin'ny Auth0
Amin'ny maha-mpizara ho an'ny fitantanana ny maha-izy azy sy ny fidirana, dia hampiasa ny Auth0 izahay, izay manana dikan-tsarimihetsika, intuitive ampiasaina ary tiako fotsiny. Na izany aza, ireo fitsipika ireo dia azo ampiharina amin'ny hafa OpenID Connect fampiharana: KeyCloak, IdentityServer sy ny maro hafa.
Mba hanombohana, mandehana mankany Auth0 Portal miaraka amin'ny kaontinao, mamorona mpanofa (mpanofa - "mpanofa", singa lojika mitokana, raha mila fanazavana fanampiny dia jereo tahirin-kevitra - eo ho eo. transl.) ary mandehana Applications > App Defaultmifidy Domain, araka ny aseho amin'ny pikantsary eto ambany:
Ampidiro ao amin'ny rakitra ity sehatra ity resource-manifests/istio/security/auth-policy.yaml (SOURCE):
Miaraka amin'ny loharano toy izany, Pilot (iray amin'ireo singa telo fototra amin'ny fiaramanidina Fanaraha-maso ao Istio - eo ho eo amin'ny transl.) manitsy ny Envoy hanamarina ny fangatahana alohan'ny handefasana azy ireo amin'ny serivisy: sa-web-app ΠΈ sa-feedback. Amin'izay fotoana izay ihany koa dia tsy mihatra amin'ny Envoys ny serivisy sa-frontend, mamela antsika hamela ny frontend ho tsy voamarina. Raha hampihatra ny Politika dia araho ny baiko:
$ kubectl apply -f resource-manifests/istio/security/auth-policy.yaml
policy.authentication.istio.io βauth-policyβ created
Miverena amin'ny pejy ary manaova fangatahana - ho hitanao fa mifarana amin'ny sata izany 401 Tsy nahazoana alalana. Andeha hojerentsika ny mpampiasa frontend hanamarina amin'ny Auth0.
Manamarina ny fangatahana amin'ny Auth0
Mba hanamarinana ny fangatahan'ny mpampiasa farany dia mila mamorona API ao amin'ny Auth0 ianao izay hisolo tena ny serivisy voamarina (famerenana, antsipiriany ary naoty). Raha te hamorona API dia mandehana any Auth0 Portal > API > Mamorona API ary fenoy ny taratasy:
Ny fampahalalana manan-danja eto dia Solon'anarana, izay hampiasaintsika any aoriana any amin'ny script. Aleo soratana toy izao:
mpihaino: {YOUR_AUDIENCE}
Ny antsipiriany sisa ilaintsika dia hita ao amin'ny Auth0 Portal ao amin'ny fizarana Applications - mifidy Fampiharana fitsapana (voaforona ho azy miaraka amin'ny API).
Eto isika dia hanoratra:
Domain: {DOMAIN_ANAO}
ID mpanjifa: {YOUR_CLIENT_ID}
Scroll to Fampiharana fitsapana amin'ny sehatry ny lahatsoratra URL navela Callback (URL voavaha ho an'ny antso miverina), izay amaritanay ny URL tokony handefasana ny antso rehefa vita ny fanamarinana. Amin'ny tranga misy antsika dia:
http://{EXTERNAL_IP}/callback
And for URL navela hivoaka (URL navela hivoahana) ampio:
http://{EXTERNAL_IP}/logout
Andao hiroso amin'ny frontend.
Fanavaozana Frontend
Hiverina any amin'ny branch auth0 repository [istio-mastery]. Ao amin'ity sampana ity, ny kaody frontend dia ovaina mba hamerenana ireo mpampiasa amin'ny Auth0 ho fanamarinana ary hampiasa ny marika JWT amin'ny fangatahana amin'ny serivisy hafa. Ity farany dia ampiharina toy izao manaraka izao (App.js):
Raha hanova ny frontend hampiasa angon'ny mpanofa ao amin'ny Auth0, sokafy sa-frontend/src/services/Auth.js ary soloy ao ny soatoavina nosoratanay teo ambony (Auth.js):
Andramo ny app! Haverina any amin'ny Auth0 ianao, izay mila miditra (na misoratra anarana), aorian'izay dia halefa any amin'ny pejy izay hanaovanao fangatahana efa voamarina ianao. Raha manandrana ny baiko voalaza ao amin'ny ampahany voalohany amin'ny lahatsoratra miaraka amin'ny curl ianao dia hahazo ny kaody 401 Kaody sata, manambara fa tsy nahazoana alalana ny fangatahana.
Andeha isika hanao ny dingana manaraka - manome alalana ny fangatahana.
Fanomezana alalana amin'ny Auth0
Ny fanamarinana dia mamela antsika hahatakatra hoe iza no mpampiasa, fa ilaina ny fanomezan-dΓ lana hahafantarana izay azon'izy ireo idirana. Istio dia manolotra fitaovana ho an'izany koa.
Mba hamoronana ireo vondrona ireo dia hampiasa ny fanitarana Auth0 Authorization izahay ary hampiasa Istio mba hanomezana azy ireo ambaratonga fidirana samihafa.
Fametrahana sy fanamafisana ny Auth0 Authorization
Ao amin'ny vavahadin-tserasera Auth0, mandehana any amin'ny fanitarana (fanitarana) ary hametraka Auth0 Fanomezana. Aorian'ny fametrahana dia mandehana mankany Fanitarana Fanomezana, ary eo - mankany amin'ny firafitry ny mpanofa amin'ny fipihana eo amin'ny farany ambony havanana ary misafidy ny safidy sakafo mety (Fampifanarahana). Ampidiro ny vondrona (vondrona) ary tsindrio ny bokotra famoahana fitsipika (Fitsipika avoaka).
Famoronana vondrona
Ao amin'ny Fanitarana Fanomezan-dΓ lana mandehana mankany Groups ary mamorona vondrona Moderators. Koa satria horaisinay ho toy ny mpampiasa mahazatra ny mpampiasa voamarina rehetra, dia tsy ilaina ny mamorona vondrona fanampiny ho azy ireo.
Mifidiana vondrona Moderators, Press Manampy Mpikambana, ampio ny kaontinao fototra. Avelao tsy hisy vondrona ny mpampiasa sasany mba hahazoana antoka fa tsy mahazo miditra izy ireo. (Ny mpampiasa vaovao dia azo noforonina tanana amin'ny alΓ lan'ny Auth0 Portal > Mpampiasa > Mamorona mpampiasa.)
Ampio ny fitakiana vondrona amin'ny Access Token
Nampiana vondrona ireo mpampiasa, saingy tsy maintsy hita taratra amin'ny token'ny fidirana ihany koa ity fampahalalana ity. Mba hanarahana ny OpenID Connect ary hamerina ireo vondrona ilaintsika, dia mila manampy ny azy ny marika fitakiana manokana. Nampiharina tamin'ny alΓ lan'ny fitsipika Auth0.
Raha te hamorona fitsipika dia mandehana any amin'ny Auth0 Portal to fitsipika, Press Mamorona fitsipika ary mifidiana fitsipika foana avy amin'ny mΓ΄dely.
Adikao ny kaody etsy ambany ary tehirizo ho fitsipika vaovao Ampio fitakiana vondrona (namespacedGroup.js):
fanamarihana: Ity kaody ity dia maka ny vondrona mpampiasa voalohany voafaritra ao amin'ny Fanitarana Fanomezan-dΓ lana ary manampy azy amin'ny mari-pamantarana fidirana ho toy ny fitakiana manokana (eo ambanin'ny toerana misy azy, araka ny takian'ny Auth0).
Hiverina any amin'ny page fitsipika ary jereo fa manana fitsipika roa nosoratana araka izao filaharana manaraka izao ianao:
auth0-fanomezana-fanitarana
Ampio fitakiana vondrona
Zava-dehibe ny baiko satria ny sahan'ny vondrona dia mandray ny fitsipika asynchronous auth0-fanomezana-fanitarana ary rehefa afaka izany dia ampiana ho fitakiana ny fitsipika faharoa. Ny vokatr'izany dia famantarana fidirana toy izao:
Ankehitriny dia mila manamboatra ny proxy Envoy ianao mba hanamarinana ny fidirana amin'ny mpampiasa, izay hanesorana ny vondrona amin'ny fitakiana (https://sa.io/group) ao amin'ny token'ny fidirana miverina. Ity no lohahevitra ho an'ny fizarana manaraka amin'ny lahatsoratra.
Fametrahana fahazoan-dΓ lana amin'ny Istio
Mba hahazoana alalana hiasa dia tsy maintsy avelanao ny RBAC ho an'ny Istio. Mba hanaovana izany, dia hampiasa ity konfigurasi manaraka ity izahay:
1 - avelao ny RBAC ho an'ny serivisy sy ny toerana misy anarana voatanisa ao an-tsaha Inclusion;
2 β mitanisa lisitr'ireo tolotray izahay.
Andao hampihatra ny configuration miaraka amin'ity baiko manaraka ity:
$ kubectl apply -f resource-manifests/istio/security/enable-rbac.yaml
rbacconfig.rbac.istio.io/default created
Ny serivisy rehetra izao dia mila fanaraha-maso ny fidirana amin'ny anjara andraikitra. Raha lazaina amin'ny teny hafa dia voarara ny fidirana amin'ny serivisy rehetra ary hiteraka valiny RBAC: access denied. Andeha isika hamela ny fidirana amin'ireo mpampiasa nahazo alalana.
Fametrahana fidirana ho an'ny mpampiasa mahazatra
Ny mpampiasa rehetra dia tsy maintsy manana fidirana amin'ny serivisy SA-Frontend sy SA-WebApp. Nampiharina tamin'ny fampiasana ireto loharanon-karena Istio manaraka ireto:
ServiceRole - mamaritra ny zo ananan'ny mpampiasa;
Midika ve ny "mpampiasa rehetra" fa ny mpampiasa tsy voamarina dia hanana fidirana amin'ny SA WebApp ihany koa? Tsia, ny politika dia hanamarina ny maha-ara-dalΓ na ny marika JWT.
Andao hampihatra ny configurations:
$ kubectl apply -f resource-manifests/istio/security/user-role.yaml
servicerole.rbac.istio.io/regular-user created
servicerolebinding.rbac.istio.io/regular-user-binding created
Fametrahana fidirana ho an'ny mpandrindra
Ho an'ny mpanelanelana, tianay ny hamela ny fidirana amin'ny serivisy rehetra (mod-service-role.yaml):
Fa ny zo toy izany ihany no tadiavinay ho an'ireo mpampiasa izay manana fitakiana ny token'ny fidirana https://sa.io/group misy dikany Moderators (mod-service-role-binding.yaml):
$ kubectl apply -f resource-manifests/istio/security/mod-role.yaml
servicerole.rbac.istio.io/mod-user created
servicerolebinding.rbac.istio.io/mod-user-binding created
Noho ny caching ao amin'ny iraka, dia mety haharitra minitra vitsivitsy vao hanan-kery ny fitsipiky ny fanomezan-dΓ lana. Azonao atao ny miantoka fa manana ambaratonga fidirana samihafa ny mpampiasa sy ny mpandrindra.
Famaranana amin'ity ampahany ity
Raha ny tena marina anefa, efa nahita fomba tsotra kokoa, tsy misy ezaka, azo scalable ary azo antoka ve ianao amin'ny fanamarinana sy fanomezan-dΓ lana?
Loharano Istio telo ihany (RbacConfig, ServiceRole, ary ServiceRoleBinding) no takiana mba hahazoana fanaraha-maso tsara momba ny fanamarinana sy ny fanomezan-dΓ lana ny fidirana amin'ny serivisy ho an'ny mpampiasa farany.
Ho fanampin'izay, nikarakara ireto olana ireto izahay tamin'ny serivisy iraka, ka nahavita:
fampihenana ny habetsaky ny kaody jeneraly izay mety misy olana momba ny fiarovana sy ny bibikely;
fampihenana ny isan'ny toe-javatra adala izay nivadika ho azo idirana avy any ivelany ny teboka iray ka nanadino ny mitatitra izany;
fanafoanana ny filΓ na fanavaozana ny serivisy rehetra isaky ny misy andraikitra na zo vaovao ampiana;
fa ny serivisy vaovao dia mijanona ho tsotra, azo antoka ary haingana.
famaranana
Istio dia mamela ny ekipa hifantoka amin'ny loharanon-karenany amin'ny asa manan-danja amin'ny fandraharahana nefa tsy manampy ny serivisy, mamerina azy ireo amin'ny sata micro.
Ny lahatsoratra (amin'ny fizarana telo) dia nanome fahalalana fototra sy torolalana azo ampiharina amin'ny fanombohana amin'ny Istio amin'ny tetikasa tena izy.