Puncte:0

Clarificarea întrebărilor cu privire la utilizarea id_token-ului în service-to-service

drapel ml

Lucrez intens cu OAuth2/OIDC în jobul meu actual. Acum se trece din ce în ce mai mult la GCP. Am câteva întrebări clarificatoare despre utilizarea jetoanelor OIDC pentru comunicarea Service to Service, una de nivel înalt, una tactică:

Problemă: securizez o lucrare Cloud Scheduler la un punct final Cloud Run. Am rezolvat problema (din câte pot spune), dar sunt foarte confuz de ce Google a configurat lucrurile în acest fel și sper să primesc clarificări. Nu provocând lucruri, doar căutând înțelegere. Se simte atât de diferit de ceea ce știu. Întotdeauna am folosit id_tokens pentru oameni.

  1. De ce au ales jetoanele ID OIDC pentru comunicarea de la serviciu la serviciu? Am folosit OIDC o tonă din partea utilizatorului, dar niciodată de la server la server. Așa că obținerea unui ID Token pentru comunicarea de la server la server pare foarte ciudat. Mi-ar plăcea un link către punctele către documentele care explică această alegere de arhitectură pe partea server-server.. M-aș fi așteptat la un Token de acces OAuth2 cu acreditări de client pentru toate comunicațiile de serviciu-serviciu, nu un Jeton ID. Vad asta documentele lor indică că platforma folosește o combinație a ambelor

  2. De ce este arbitrar câmpul Public? În Cloud Scheduler, se pare că atâta timp cât folosesc un cont de serviciu valid în proiect, pot pune orice valoare în domeniul audienței? Sunt sigur că există un motiv pentru asta, oamenii Google sunt inteligenți, dar asta se simte ca o gaură de securitate. Adică, publicul ar putea fi orice adresă URL validă (mai bine pot spune). Pot să pun o audiență a unui punct final Cloud Run într-un proiect diferit și să efectuez acel apel?

  3. Evident, aici există o divizare între AuthN și AuthZ, deci id_token-ul este mai mult despre authN, dar un câmp de audiență validat la cererea jetonului ar indica Authz solid. DAR fiind arbitrar, simt că nu se poate avea încredere în validarea audienței pentru că oricine poate pune orice acolo. Te rog spune-mi ce-mi lipsește.

Sper că aceste întrebări au sens. Sunt nou în GCP, dar îmi place ceea ce văd, dar o parte din munca mea este să găsesc marginile lucrurilor, iar acestea se par ciudat în comparație cu ceea ce am folosit în trecut.

Puncte:0
drapel cn

De ce au ales jetoane ID OIDC pentru service-to-service comunicare? Am folosit OIDC o tonă pe partea utilizatorului, dar niciodată pe partea server la partea de server. Așadar, obținerea unui ID Token pentru server la server comunicarea pare foarte ciudată. Mi-ar plăcea un link către puncte către documente care explică această alegere de arhitectură de la server la server lateral.. M-aș fi așteptat la un token de acces OAuth2 cu client Acreditări pentru toate comunicările de la serviciu la serviciu, nu un simbol ID.

În Google Cloud, există două tipuri de autorizare. Bazat pe rol (Token de acces OAuth) și bazat pe identitate (Jeton de identitate OIDC). Autorizarea bazată pe roluri oferă acces la toate resursele bazate pe roluri. De exemplu, accesul spectatorului la toate instanțele Compute Engine. Acest tip de permisiune este gestionat la nivel de proiect/dosar/organizație. Autorizarea bazată pe identitate oferă acces la o resursă individuală. Diferența cheie este locul în care se atribuie permisiunea/rolul: la nivel de proiect sau la nivel de resursă. Deoarece un rol este prea larg de permisiuni la nivel de resursă, aveți nevoie de o altă cale.Așa sunt identitățile. acord Ioan acces la cheia KMS secret2. Identitatea + permisiunile sunt stocate la nivelul de gestionare a accesului la chei KMS.

De ce este arbitrar câmpul Public? În Cloud Scheduler, acesta se pare că atâta timp cât folosesc un cont de serviciu valid în proiect, Pot pune vreo valoare în domeniul audienței? Sunt sigur că există un motiv pentru asta, oamenii Google sunt inteligenți, dar asta se simte ca o gaură de securitate. Adică, publicul ar putea fi orice adresă URL validă (mai bine pot spune). Pot sa plasați o audiență a unui punct final Cloud Run într-un proiect diferit și creați apelul acela?

Dacă codul dvs. creează Jetonul de identitate, public este necesară. Există anumite ID-uri de client OAuth gestionate de Google care permit ignorarea publicului. Deoarece identitatea și permisiunile sunt stocate la resursă, apelarea unui alt punct final Cloud Run nu va trece de verificarea identității. IMHO, câmpul audiență este o metodă rapidă pentru ca un sistem de identitate să verifice mai întâi dacă Identity Token ar trebui să fie aprobat pentru stratul IAM.

Evident, aici există o divizare între AuthN și AuthZ, deci id_token este mai mult despre authN, dar un câmp de audiență validat pe cererea jetonului ar indica Authz solid. DAR cu ea fiind arbitrar, simt că nu se poate avea încredere în validarea audienței pentru că oricine poate pune orice acolo. Te rog spune-mi ce sunt dispărut.

Jetoanele de identitate sunt semnate. Numai serviciile și codul autorizat pot crea jetoane de identitate. După cum am menționat în punctul meu anterior, publicul nu oferă permisiunea și nici nu acordă acces. Este un pas într-un strat de pași pentru a autoriza accesul pe baza simbolului de identitate. Validarea finală este identitatea + permisiunea atribuite la resursă. Publicul nu acordă niciunul dintre acestea, dar poate fi folosit ca un filtru pentru a elimina rapid jetoanele.

Cade Thacker avatar
drapel ml
Vă mulțumesc pentru răspunsul atent. Am citit asta de câteva ori și văd ce spui. Tot ceea ce lucrez acum este o abordare complet bazată pe roluri, așa că aceasta este pur și simplu diferită. Trebuie să mă înțeleg cu asta. Multumesc din nou!

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.