Je suis connecté à une instance GCE via SSH. De là, je voudrais 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 était marqué "Peut modifier" dans les autorisations du projet dans lequel je travaille. Je me suis également assuré de lui donner la LCA d'écriture sur le bucket Je voudrais qu'il 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 "logs" est créé sous "mybucket").
Le message d'erreur que je reçois est:
Copying file://test.txt [Content-Type=text/plain]...
AccessDeniedException: 403 Insufficient Permission 0 B
Qu'est-ce que je rate?
google-cloud-storage
Christophe
la source
la source
Réponses:
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 une machine virtuelle est associée à un compte de service, des étendues devstorage doivent lui être attribuées afin d'accéder à GCS.
Par exemple, si vous avez créé votre VM avec une
devstorage.read_only
étendue, la tentative d'écriture dans un compartiment échouerait, même si votre compte de service est autorisé à écrire dans le compartiment. Vous auriez besoin dedevstorage.full_control
oudevstorage.read_write
.Consultez la section Préparation d'une instance pour utiliser des 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 (y compris la lecture seule de GCS). Cela est fait 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, cela ne pose généralement pas de problème car les comptes de service créés par l'utilisateur obtiennent par défaut tous les accès à l'étendue.
Après avoir ajouté les étendues nécessaires à la machine virtuelle,
gsutil
vous pouvez toujours utiliser des informations d'identification mises en cache qui n'ont pas les nouvelles étendues. Supprimez~/.gsutil
avant de réessayer les commandes gsutil. (Merci à @mndrix pour l'avoir signalé dans les commentaires.)la source
gsutil
vous pouvez toujours utiliser des informations d'identification mises en cache qui n'ont pas les nouvelles étendues. Supprimez ~ / .gsutil avant de réessayer lesgsutil
commandes.Vous devez vous connecter avec un compte disposant des autorisations dont vous avez besoin pour ce projet:
la source
gcloud auth revoke <email-account>
fois que vous avez terminé.gsutil config -b
Puis naviguez jusqu'à l'URL qu'il fournit, [CLIQUEZ Autoriser]
Copiez ensuite le code de vérification et collez-le dans le terminal.
la source
gsutil
partir dessh
.-b
. Cela n'ouvrira pas de navigateur, mais crachera simplement une URL qui peut être ouverte en dehors du shell.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
gsutil
commande avec unsudo
préfixe dans certains cas.la source
la source
gcloud auth login
et suivez les étapes.Réf: https://groups.google.com/d/msg/gce-discussion/0L6sLRjX8kg/kP47FklzBgAJ
la source
J'ai donc essayé un tas de choses en essayant de copier du bucket GCS vers ma VM. J'espère que ce message aide quelqu'un.
Par connexion SSHed:
et en suivant ce script:
Vous avez cette erreur:
Ce qui a résolu ce problème était la suite de la section «Activation de l'API» mentionnée dans ce lien - https://cloud.google.com/storage/docs/json_api/
Une fois que j'ai activé l'API, je me suis authentifié dans la fenêtre SSHed via
Suite à la procédure d'authentification, j'ai finalement pu télécharger depuis Google Storage Bucket vers ma VM.
PS
Je me suis assuré de:
Accédez à mon compartiment, accédez à l'onglet autorisations, ajoutez les comptes de service souhaités et définissez l'autorisation / le rôle d'administrateur de stockage.
3.Assurez-vous que ma VM disposait d'étendues d'accès à l'API Cloud appropriées:
la source
À 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 de modification -> aller à "Portées d'accès à l'API Cloud" et choisir "Accès complet au stockage ou lecture / écriture ou tout ce dont vous avez besoin"
la source
Modifiez les autorisations du bucket.
Ajoutez un utilisateur pour "Tous les utilisateurs" et accordez un accès "Administrateur de stockage".
la source