web-dev-qa-db-fra.com

Copie gsutil renvoyant "AccessDeniedException: 403 autorisations insuffisantes" à partir de GCE

Je suis connecté à une instance GCE via SSH. De là, j'aimerais accéder au stockage à l'aide d'un compte de service:

GCE> gcloud auth list
Credentialed accounts:
 - [email protected] (active)

Je me suis d'abord assuré que ce compte de service est marqué "Peut modifier" dans les autorisations du projet sur lequel je travaille. Je me suis également assuré de lui donner la liste de contrôle d'accès Write (Écriture) sur le compartiment pour que je copie un fichier:

local> gsutil acl ch -u [email protected]:W gs://mybucket

Mais alors la commande suivante échoue:

GCE> gsutil cp test.txt gs://mybucket/logs

(Je me suis également assuré que "les journaux" sont créés sous "mybucket").

Le message d'erreur que je reçois est le suivant:

Copying file://test.txt [Content-Type=text/plain]...
AccessDeniedException: 403 Insufficient Permission               0 B  

Qu'est-ce que je rate?

71
Christophe

Une autre chose à rechercher est de vous assurer de configurer les étendues appropriées lors de la création de la machine virtuelle GCE. Même si un VM a un compte de service connecté, des étendues de devstorage doivent lui être attribuées pour pouvoir accéder à GCS.

Par exemple, si vous aviez créé votre VM avec devstorage.read_only Portée, en essayant d'écrire dans un seau échouerait, même si votre compte de service est autorisé à écrire dans le seau. Vous auriez besoin de devstorage.full_control ou devstorage.read_write.

Voir la section sur Préparation d’une instance pour l’utilisation de comptes de service pour plus de détails.

Remarque: le compte de service de calcul par défaut a des portées très limitées (notamment le fait de lire en lecture seule vers GCS). Cette opération est effectuée car le compte de service par défaut dispose des autorisations IAM de l'éditeur de projet. Si vous utilisez un compte de service utilisateur, le problème ne se pose généralement pas, car les comptes de service créés par l'utilisateur obtiennent tous les accès à l'étendue par défaut.

94
jterrace

gsutil config -b

Ensuite, surfez sur l'URL fournie, [CLICK Allow]

Copiez ensuite le code de vérification et collez-le dans le terminal.

41
Dr. Tyrell

Vous devez vous connecter avec un compte disposant des autorisations nécessaires pour ce projet:

gcloud auth login
36
Javier Giovannini

J'ai écrit une réponse à cette question car je ne peux pas poster de commentaires:

Cette erreur peut également se produire si vous exécutez la commande gsutil avec un préfixe Sudo dans certains cas.

8
TheLoneDeranger
  1. Une fois que vous avez créé le compartiment, accédez à l'onglet Autorisations, ajoutez votre adresse de messagerie et définissez Storage Admin l'autorisation.

screenshot

  1. Accès VM instance via SSH >> commande d'exécution: gcloud auth login et suivez les étapes.

Réf.: https://groups.google.com/d/msg/gce-discussion/0L6sLRjX8kg/kP47FklzBgAJ

2
Văn Quyết

À partir de la documentation: https://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances#changeserviceaccountandscopes

Vous devez d'abord arrêter l'instance -> aller à la page d'édition -> aller à "Étendues d'accès au Cloud API" et choisir "accès total au stockage ou lecture/écriture ou tout ce dont vous avez besoin"

Modification du compte de service et des étendues d’accès pour une instance Si vous souhaitez exécuter le VM sous une identité différente, ou si vous déterminez que l’instance nécessite un autre ensemble d’étendues pour appeler les API requises, vous devez Vous pouvez modifier le compte de service et les étendues d’accès d’une instance existante, par exemple, pour accorder l’accès à une nouvelle API ou modifier une instance afin qu’elle s’exécute en tant que compte de service que vous avez créé, au lieu de Compute. Compte de service par défaut du moteur.

Pour modifier le compte de service d'une instance et les étendues d'accès, l'instance doit être temporairement arrêtée. Pour arrêter votre instance, lisez la documentation relative à l'arrêt d'une instance. Après avoir modifié le compte de service ou les étendues d'accès, n'oubliez pas de redémarrer l'instance. Utilisez l'une des méthodes suivantes pour modifier le compte de service ou les étendues d'accès de l'instance arrêtée.

1
Adelin