Je suis assez nouveau sur GCP. J'ai un compte de service avec les rôles suivants:
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?
3 Réponses :
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
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.
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:
C'est bizarre car les rôles
Compute Instance Admin (v1)
etProject IAM Admin
sont suffisants pour obtenir les autorisationscompute.regions.list
etresourcemanager.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;)