Estou conectado a uma instância do GCE via SSH. A partir daí, gostaria de acessar o armazenamento com a ajuda de uma conta de serviço:
GCE> gcloud auth list
Credentialed accounts:
- [email protected] (active)
Primeiro, certifiquei-me de que esta conta de serviço estava sinalizada como "Pode editar" nas permissões do projeto em que estou trabalhando. Também me certifiquei de dar a ele a ACL de gravação no intervalo que gostaria que ele copiasse um arquivo:
local> gsutil acl ch -u [email protected]:W gs://mybucket
Mas então o seguinte comando falha:
GCE> gsutil cp test.txt gs://mybucket/logs
(Eu também me certifiquei de que "logs" foi criado em "mybucket").
A mensagem de erro que recebo é:
Copying file://test.txt [Content-Type=text/plain]...
AccessDeniedException: 403 Insufficient Permission 0 B
o que estou perdendo?
google-cloud-storage
Christophe
fonte
fonte
Respostas:
Outra coisa a se observar é certificar-se de configurar os escopos apropriados ao criar a VM do GCE. Mesmo se uma VM tiver uma conta de serviço anexada, ela deve ser atribuída a escopos de devstorage para acessar o GCS.
Por exemplo, se você tiver criado sua VM com
devstorage.read_only
escopo, tentar gravar em um intervalo falhará, mesmo se sua conta de serviço tiver permissão para gravar no intervalo. Você precisaria dedevstorage.full_control
oudevstorage.read_write
.Consulte a seção sobre como preparar uma instância para usar contas de serviço para obter detalhes.
Observação: a conta de serviço de computação padrão tem escopos muito limitados (incluindo ter somente leitura para GCS). Isso é feito porque a conta de serviço padrão tem permissões de Editor de projeto IAM. Se você usar qualquer conta de serviço do usuário, isso normalmente não é um problema, pois as contas de serviço criadas pelo usuário obtêm todo o acesso ao escopo por padrão.
Depois de adicionar escopos necessários à VM,
gsutil
ainda pode estar usando credenciais em cache que não têm os novos escopos. Exclua~/.gsutil
antes de tentar os comandos gsutil novamente. (Obrigado a @mndrix por apontar isso nos comentários.)fonte
gsutil
ainda pode estar usando credenciais em cache que não têm os novos escopos. Exclua ~ / .gsutil antes de tentar osgsutil
comandos novamente.Você deve fazer login com uma conta que tenha as permissões necessárias para esse projeto:
fonte
gcloud auth revoke <email-account>
depois de terminar.gsutil config -b
Em seguida, navegue até o URL fornecido, [CLIQUE em Permitir]
Em seguida, copie o código de verificação e cole no terminal.
fonte
gsutil
dessh
.-b
. Isso não abrirá um navegador, mas simplesmente exibirá um url que pode ser aberto fora do shell.Eu escrevi uma resposta a esta pergunta, pois não posso postar comentários:
Este erro também pode ocorrer se você estiver executando o
gsutil
comando com umsudo
prefixo em alguns casos.fonte
fonte
gcloud auth login
e siga as etapas.Ref: https://groups.google.com/d/msg/gce-discussion/0L6sLRjX8kg/kP47FklzBgAJ
fonte
Então, tentei várias coisas tentando copiar do intervalo GCS para minha VM. Espero que este post ajude alguém.
Via conexão SSHed:
e seguindo este script:
Recebi este erro:
O que corrigiu isso foi seguir a seção "Ativando a API" mencionada neste link - https://cloud.google.com/storage/docs/json_api/
Depois de ativar a API, me autentiquei na janela SSHed via
Seguindo o procedimento de autenticação, finalmente consegui baixar do Google Storage Bucket para minha VM.
PS
Eu me certifiquei de:
Vá para o meu intervalo, vá para a guia de permissões, adicione as contas de serviço desejadas e defina a permissão / função do Administrador de armazenamento.
3. Certifique-se de que minha VM tenha escopos de acesso à Cloud API adequados:
fonte
Dos documentos: https://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances#changeserviceaccountandscopes
Você precisa primeiro parar a instância -> vá para a página de edição -> vá para "Escopos de acesso à API em nuvem" e escolha "acesso total de armazenamento ou leitura / gravação ou o que for necessário para"
fonte
Altere as permissões do balde.
Adicione um usuário para "Todos os usuários" e conceda acesso de "Administrador de armazenamento".
fonte