Cross-projectbeheer met serviceaccount

Ik heb een serviceaccount nodig dat toegang heeft tot meerdere projecten, maar ik heb geen manier kunnen vinden om dit te doen. Het lijkt erop dat een serviceaccount altijd aan een project is gebonden.

Een andere optie is om een ​​serviceaccount aan te maken voor de afzonderlijke projecten en ze vervolgens te authenticeren met behulp van gcloud auth activate-service-account --key-file SOME_FILE.json, maar het probleem hier is dat het lijkt niet mogelijk om het aanmaken van serviceaccounts te automatiseren.

Dus de vraag is dan: is het mogelijk om een ​​serviceaccount voor meerdere projecten aan te maken of om het aanmaken van een serviceaccount te automatiseren? Nog beter zou zijn als ik beide kon doen


Antwoord 1, autoriteit 100%

U zou een serviceaccount aan een ander project moeten kunnen toevoegen:

  1. Maak het eerste serviceaccount in project A in de Cloud Console. Activeer het met gcloud auth activate-service-account.

  2. Navigeer in de Cloud Console naar project B. Zoek de “IAM & admin” > “IAM” pagina. Klik op de knop “Toevoegen”. Plak in het veld “Nieuwe leden” de naam van het serviceaccount (het zou eruit moeten zien als een vreemd e-mailadres) en geef het de juiste rol.

  3. Voer gcloud-opdrachten uit met --projectingesteld op project B. Ze zouden moeten slagen (ik heb zojuist handmatig geverifieerd dat dit werkt).

Het automatisch aanmaken van serviceaccounts is iets dat we aarzelen om te doen totdat we alle beveiligingsproblemen kunnen oplossen.


Antwoord 2, autoriteit 36%

Ik weet dat het een beetje oud is, maar als iemand hier nog steeds naar op zoek is, om toe te voegen aan het antwoord van @Zachary Newman, om dingen duidelijk te maken, nadat je een serviceaccount hebt gemaakt in project A, moet je naar project B gaan naar “IAM ” (niet “Serviceaccounts”), daar kunt u het e-mailadres toevoegen dat u zojuist hebt gemaakt met de juiste rollen.


Antwoord 3, autoriteit 4%

Ik heb bevestigd dat aangepaste token-ondertekening werkte met de procedure van @Zachary Newman.

Mijn concrete procedure voor het maken van een aangepaste token in een GAE-app in project A die kan worden gebruikt om verbinding te maken met Firestore van project B is als volgt:

  1. Voeg op de “IAM”-pagina van project B het serviceaccount {project-a}@appspot.gserviceaccount.comtoe. Dit is een standaard GAE-serviceaccount van project A.
  2. Wijs op de “IAM”-pagina van project B de rol “Service Account Token Creator” toe aan {project-a}@appspot.gserviceaccount.com.
  3. Bel de Firebase Admin SDK initializeApp-methode in een GAE-app in project A met vermelding van firebase-adminsdk-xxxxx@{project-b}.iam.gserviceaccount.com, wat een serviceaccount is met “Firebase Admin SDK Administrator Service Agent” in project B, als serviceAccountIden https://{project-b}.firebaseio.comals databaseURLen maak vervolgens een aangepaste token.

Other episodes