permissão negada ao usar a conta de serviço com o comando scp do Google

permissão negada ao usar a conta de serviço com o comando scp do Google

Quero usar o CircleCI para implantar meu código na instância do Compute Engine. Criei um usuário de conta de serviço e uso o comando gcloud scp abaixo:

gcloud --quiet compute scp --recurse dev/test/ [DEST_INSTANCE]:/var/www/dev/dev/test --zone=northamerica-northeast1-a --project [PROJECT_NAME]

para fazer upload de arquivos para a subpasta var e a implantação falha com o erro abaixo:

scp: /var/www/dev/dev/test: Permission denied
ERROR: (gcloud.compute.scp) [/usr/bin/scp] exited with return code [1].
Exited with code 1

Agora, quero conceder acesso à conta de serviço, mas não a vejo na lista de usuários aos quais conceder acesso quando uso o cat /etc/passwd. Como posso conceder permissão a uma conta de serviço? As funções que atribuí a esta conta são: insira a descrição da imagem aqui

Responder1

Parece que seu nome de usuário não tem permissões na VM do GCE para gravação /var/www/dev/dev/test.

Para resolver seu problemavocê pode escolher uma das duas soluções alternativas:

  1. Alterar permissões:

    • conceda acesso de gravação /var/www/dev/dev/testdiretamente ao seu nome de usuário, por exemplo:

      sudo chown -R $USER /var/www/dev/dev/test

    • copiar arquivos comgcloud compute scpDiretamente a /var/www/dev/dev/test.

  2. Copie arquivos em duas etapas:

    • usargcloud compute scppara transferir arquivos/diretórios onde seu usuário pode escrever, por exemplo, /tmpou /home/$USER;

    • SSH na instância da VM por meio degcloud compute sshou via Console e copie os arquivos do local temporário usando sudopara obter as permissões adequadas.

Observaçãoque, como esta pergunta é sobre VMs GCE, você não pode fazer SSH diretamente para uma instância de VM como root, nem copiar arquivos diretamente como root, pelo mesmo motivo: gcloud compute scpusos scpque dependem sshde autenticação.

Além disso, consulte a documentaçãoTransferindo arquivos para instânciasseçãoTransferir arquivos usando a ferramenta de linha de comando gcloud.

Responder2

Verifique a conta de serviço em uso. Há uma conta de serviço padrão para o GCE e criada pelo GCP. O outro é aquele que você criou.

Se estiver usando aquele que você criou, você autorizou o login da conta de serviço usando o arquivo de chave JSON?

Responder3

Ative a conta de serviço correta para a qual você concedeu os papéis na captura de tela usando o comando:

gcloud auth activate-service-account $account --key-file=the_key_file.json

informação relacionada