Copie dados da instância do GCP como uma conta local para o intervalo do Google Cloud Storage

1

Eu adicionei com sucesso a capacidade de conectar e transferir arquivos de uma instância do GCP usando minha própria conta local na instância do GCP usando um, adicionando o acesso à API para uma conta de serviço do Google Cloud.

Eu tenho um serviço, NGINX, em execução na instância do GCP e está sendo executado com privilégios de conta local (nginx) na instância. No entanto, como o usuário 'nginx' não consigo usar o comando gsutil. O que eu estou tentando fazer é transferir arquivos de log da instância do GCP para um repositório seguro, para que eu possa liberar o espaço na instância.

Agora, à minha pergunta: como configurar as permissões ou o ambiente para que o usuário possa usar as contas locais nas instâncias do GCP usando os comandos gsutil e / ou gcloud (ou semelhantes) para copiar dados da instância para um intervalo usando uma conta de serviço do GCP?

    
por Fredrik Westermarck 12.06.2018 / 19:14

3 respostas

2

Uma instância do GCE autenticará chamadas de API usando uma conta de serviço , que é abstraída de qualquer usuário local no servidor - as credenciais são essencialmente incorporadas aos metadados da instância. Você não deve usar contas de serviço secundárias ou credenciais de usuário em uma instância do GCE; é mais provável que o usuário pessoal possa transferir arquivos e o nginx usuário não.

Para permitir que sua instância grave dados em um intervalo do GCS, você provavelmente precisará iniciar a instância com o escopo de leitura / gravação do GCS ( docs ) - O acesso ao GCS está desativado por padrão.

Se você criou sua instância usando um modelo de instância , eles não poderão ser editados. o modelo precisará ser destruído e recriado e todas as instâncias baseadas no modelo antigo também precisarão ser reprovisionadas.

    
por 13.06.2018 / 16:53
0

Algumas ideias para o que pode estar errado:

  • A configuração que informa a gsutil para usar as credenciais padrão do aplicativo está em /etc/boto.cfg . Certifique-se de que seu usuário nginx possa ler esse arquivo.
  • as configurações da gsutil podem ser substituídas. Veja se há uma variável de ambiente BOTO_CONFIG ou um arquivo ~ nginx / .boto.cfg substituindo as configurações padrão.

Acredito que qualquer usuário em uma instância do GCE deve poder usar gsutil . As credenciais são concedidas por meio de uma chamada HTTP. Você pode testar se você os recebe usando o sufixo nginx e executando isso:

curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token" \
-H "Metadata-Flavor: Google"
    
por 12.06.2018 / 19:43
0

Resolvi o problema adicionando um grupo e fornecendo os diretórios .config e .gsutil com as permissões apropriadas para o grupo e, em seguida, adicionei o usuário nginx ao grupo. Mas essa não era a maneira que eu preferia resolver - mas é o truque.

    
por 13.06.2018 / 21:43