0
votes

Autorisations des comptes de service

Je suis assez nouveau sur GCP. J'ai un compte de service avec les rôles suivants: entrez la description de l'image ici J'ai créé une clé json pour cela et je l'ai utilisée pour authentifier un client gcloud. Ce client s'exécute sur une instance de ce projet sur ce compte de service. Il semble que je n'ai aucune autorisation pour quoi que ce soit:

# gcloud auth activate-service-account cloudbreak@**********-lab.iam.gserviceaccount.com --key-file **********-lab-804c90ab0a14.json
# gcloud auth list
                       Credentialed Accounts
ACTIVE  ACCOUNT
*       cloudbreak@**********-lab.iam.gserviceaccount.com
To set the active account, run:
    $ gcloud config set account `ACCOUNT`
# gcloud compute regions list
ERROR: (gcloud.compute.regions.list) Some requests did not succeed:
 - Required 'compute.regions.list' permission for 'projects/**********-lab'

# gcloud projects get-iam-policy **********-lab
ERROR: (gcloud.projects.get-iam-policy) User [cloudbreak@**********-lab.iam.gserviceaccount.com] does not
 have permission to access project [**********-lab:getIamPolicy] (or it may not exist): The caller does n
ot have permission

Qu'est-ce que je manque?


4 commentaires

C'est bizarre car les rôles Compute Instance Admin (v1) et Project IAM Admin sont suffisants pour obtenir les autorisations compute.regions.list et resourcemanager.projects.getIamPolicy . Comment vous authentifiez-vous avec le compte de service? Démarrez-vous directement votre VM de calcul ( gcloud compute instances create [...] --service-account = , ou utilisez-vous la clé JSON que vous avez générée?


@norbjd, mis à jour avec la commande d'authentification. La machine que j'ai créée avec un déploiement. J'ai essayé de m'authentifier sur le compte de service localement et j'obtiens les mêmes erreurs


Pourriez-vous essayer (séparément): 1) de créer une instance de calcul directement avec le compte de service associé ( gcloud compute instances create [...] --service-account = ) 2) à générer une nouvelle clé JSON et essayer de s'authentifier (localement ou à partir d'une machine virtuelle de calcul) avec elle?


Avez-vous essayé un projet gcloud config set PROJECTNAME ? Si vous n'êtes pas dans le projet où le compte de service a des droits, vous n'aurez aucun accès;)


3 Réponses :


0
votes

J'ai résolu ce problème en créant un nouveau compte de service (avec les mêmes rôles) et en l'utilisant à la place. Je ne sais pas ce qu'il advient de l'autre


0 commentaires

2
votes

Il existe un bogue de longue date dans GCP dans lequel la suppression d'un compte de service et sa recréation avec le même nom peuvent entraîner des problèmes avec ses autorisations non reconnues. Le comportement que vous décrivez (créer un nouveau compte de service avec les mêmes autorisations et le voir fonctionner) correspond aux symptômes de ce bogue.


0 commentaires

0
votes

Pour réparer vos comptes de service, vous pouvez suivre les conseils de https: // cloud.google.com/iam/docs/understanding-service-accounts .

La raison du comportement étrange est décrite comme suit: Il est possible de supprimer un compte de service puis de créer un nouveau compte de service avec le même nom. Si vous réutilisez le nom d'un compte de service supprimé, cela peut entraîner un comportement inattendu. [...] Si vous créez un nouveau compte de service avec le même nom qu'un compte de service récemment supprimé, les anciennes liaisons peuvent toujours exister

Pour remédier au problème:

  1. Créez le compte de service avec le même nom
  2. Révoquer tous les rôles / autorisations accordés à ce compte de service (supprimera les autorisations de l ' ancien compte)
  3. Accordez les autorisations nécessaires (les accordera sur le nouveau compte)

0 commentaires