Neste guia, explicamos como garantir que o Agente de operações, que você instala na instância de máquina virtual (VM), tenha autorização para enviar dados de telemetria para o Logging.
Visão geral da autorização
e a autorização é o processo de determinação das permissões que um cliente autenticado tem sobre um conjunto de recursos. O Google Cloud autoriza o agente de operações em uma instância de VM do Compute Engine usando o Application Default Credentials (ADC).
O Agente de operações é compatível com o ADC que autentica uma conta de serviço anexada a uma VM ou uma chave de conta de serviço.
- Uma conta de serviço anexadase refere a uma conta de serviço específica para um determinado recurso, como uma VM. A conta de serviço tem as próprias credenciais exclusivas. O ADC usa o servidor de metadados da VM para receber credenciais de um serviço.
- A chave de conta de serviço é uma chave privada usada para autorizar o par de chaves em uma conta de serviço em um projeto, permitindo que você crie um token de acesso. Use o token para fornecer uma identidade e interagir com as APIs do Google Cloud em nome da conta de serviço.
- O Agente de operações não oferece suporte à autorização usando
gcloud auth
. Para evitar comportamentos indesejados, é preciso revogar todas as credenciais criadas usandogcloud auth
.
Recomendamos que você configure o ADC para autenticar uma conta de serviço anexada sempre que possível, já que a chave privada requer armazenamento local, e esse armazenamento pode ser comprometido. Para mais informações sobre as chaves da conta de serviço, consulte Práticas recomendadas para gerenciar chaves de conta de serviço.
Verificar os escopos de acesso
As instâncias de VM do Compute Engine recebem escopos de acesso quando são criadas. As novas VMs do Compute Engine têm escopos de acesso adequados para o agente de operações, mas VMs antigas ou em que escopos foram modificados podem não ter. Para mais informações sobre escopos de acesso e contas de serviço, consulte Autorização na documentação do Compute Engine.
Para verificar os escopos de acesso, faça o seguinte:
- Consulte os escopos de acesso executando o seguinte comando na
instância do Compute Engine:
curl --silent --connect-timeout 1 -f -H "Metadata-Flavor: Google" http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/scopes
Na resposta ao comando, se o escopo de acesso
https://www.googleapis.com/auth/cloud-platform
estiver listado, isso significa que você tem autorização suficiente.Se
https://www.googleapis.com/auth/cloud-platform
não estiver listado, serão necessários dois escopos de acesso, um de cada par de "geração de registros" e "monitoramento" a seguir:https://www.googleapis.com/auth/logging.write
ou
https://www.googleapis.com/auth/logging.admin
https://www.googleapis.com/auth/monitoring.write
ou
https://www.googleapis.com/auth/monitoring.admin
Para modificar os escopos de acesso, faça o seguinte:
-
No Console do Google Cloud, acesse a página Instâncias de VM.
Se você usar a barra de pesquisa para encontrar a página, selecione o resultado com o subtítulo Compute Engine.
- Se necessário, clique na lista suspensa de projetos do Google Cloud e selecione o nome do seu projeto.
- Selecione Instâncias de VM no menu de navegação, a guia Instâncias e o nome da VM.
- Encerre a VM clicando em stop Parar.
- Depois que a VM for interrompida, clique em editEditar.
- Localize Escopos de acesso na seção Identidade e acesso à API da página e selecione Definir acesso para cada API.
- Para as entradas da API Stackdriver Logging e da API Stackdriver Monitoring, selecione Somente gravação.
- Clique em Salvar e reinicie a VM clicando em play_arrow Iniciar/Retomar.
Usar uma conta de serviço
A autenticação é o processo de determinação da identidade de um cliente. Para autenticação, recomendamos usar uma conta de serviço, um tipo especial de conta normalmente usada por um aplicativo ou uma carga de trabalho, em vez de uma pessoa. Para mais informações, consulte visão geral de contas de serviço.
É possível usar contas de serviço para autenticação, não importa onde o código é executado: no Compute Engine, no App Engine ou no local. Para mais informações, consulte Autenticação no Google.
Veja nesta seção como criar uma nova conta de serviço e conceder a ela os papéis necessários, além de como atualizar uma conta de serviço atual se ela não tiver os papéis necessários.
Crie uma conta de serviço
Para criar uma conta de serviço, conclua os procedimentos de Como criar uma conta de serviço com as seguintes informações:
Selecione o projeto do Google Cloud em que a conta de serviço precisa ser criada:
Para instâncias do Compute Engine, escolha o projeto em que você criou a instância.
No menu suspenso Papéis, selecione os seguintes papéis:
Monitoring > Gravador de métricas do Monitoring
Logging > Gravador de registros
Se você planeja autenticar usando uma chave de conta de serviço, selecione JSON como o Tipo de chave e clique em Criar.
Quando você clica em Criar, é feito o download de um arquivo que contém uma chave de conta de serviço para seu sistema local. Para mais informações, consulte Criar e excluir chaves de contas de serviço.
Em seguida, defina a conta de serviço e as configurações com base na autorização de contas de serviço anexadas ou de chaves privadas de conta de serviço.
Verificar e modificar papéis de uma conta de serviço atual
Use o console do Google Cloud para determinar quais papéis uma conta de serviço atual tem e adicionar os papéis necessários que estão faltando:
-
No console do Google Cloud, abra a página IAM.
Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo IAM e administrador.
Se necessário, clique na lista suspensa de projetos do Google Cloud e selecione o nome do seu projeto.
Se você não vir uma lista de principais do IAM (usuários e contas de serviço), selecione a guia Permissões.
Na lista Ver pelos participantes, localize a entrada da conta de serviço. A coluna Papel lista os papéis concedidos à conta de serviço.
Se a conta de serviço não tiver os papéis necessários para o agente de operações, use as etapas a seguir para adicionar os papéis descritos em Criar uma conta de serviço:
- Clique em edit Editar na entrada da conta de serviço.
- Clique em Adicionar outro papel para adicionar os papéis ausentes.
- Clique em Salvar.
Autorizar com uma conta de serviço anexada
Para autorizar o Agente de operações instalado em uma instância de VM do Compute Engine que tem uma conta de serviço anexada, faça isto:
Verifique se você verificou os escopos de acesso da VM.
Conceda a essa conta de serviço os papéis de privilégio mínimo do IAM. Para saber quais são os papéis necessários, consulte a seção Criar uma conta de serviço nesta página.
Anexe a conta de serviço à VM em que o agente está sendo executado.
Se ainda não tiver instalado o agente, instale-o. Para mais informações sobre como instalar o agente, consulte Como instalar o agente.
Autorizar com uma chave de conta de serviço
Para autorizar o Agente de operações instalado em uma instância de VM usando chaves privadas de conta de serviço, faça o seguinte:
Transfira o arquivo de chave da conta de serviço do sistema local para a instância de VM:
Crie uma variável de ambiente para apontar para o arquivo de chave da conta de serviço no seu sistema local. O exemplo a seguir cria uma variável chamada
CREDS
:CREDS=~/Downloads/PROJECT-NAME-KEY-ID.json
Conclua as etapas exibidas na tabela a seguir:
Compute Engine
-
No Console do Google Cloud, acesse a página Instâncias de VM.
Se você usar a barra de pesquisa para encontrar a página, selecione o resultado com o subtítulo Compute Engine.
Identifique o INSTANCE_NAME e o INSTANCE_ZONE da VM.
No sistema local, execute um comando do Google Cloud CLI para copiar o arquivo de chave do sistema local para a instância de VM:
REMOTE_USER="$USER" INSTANCE="INSTANCE_NAME" ZONE="INSTANCE_ZONE" gcloud compute scp "$CREDS" "$REMOTE_USER@$INSTANCE:~/temp.json" --zone "$ZONE"
Na instância do Compute Engine, mova o arquivo de chave da conta de serviço do local temporário para um permanente. Para Linux, verifique se o arquivo de chave da conta de serviço pode ser lido apenas por
root
.Também é preciso definir a variável de ambiente
GOOGLE_APPLICATION_CREDENTIALS
para apontar para o local do arquivo da chave da conta de serviço. Além disso, a variável precisa estar visível para o processo do agente. Para informações de configuração, consulte DefinirGOOGLE_APPLICATION_CREDENTIALS
.Por exemplo, no Linux, é possível executar o script a seguir, que move o arquivo de chave da conta de serviço para o local padrão e, em seguida, define as permissões adequadas:
CREDENTIALS_FILE_LOCATION="/etc/google/auth/application_default_credentials.json" sudo mkdir -p /etc/google/auth sudo mv "$HOME/temp.json" "$CREDENTIALS_FILE_LOCATION" sudo chown root:root "$CREDENTIALS_FILE_LOCATION" sudo chmod 0400 "$CREDENTIALS_FILE_LOCATION"
-
Agora sua instância de VM tem o arquivo de chave da conta de serviço de que o agente precisa. Depois, instale ou reinicie o agente:
Para mais informações sobre como instalar o agente, consulte Como instalar o agente.
Para informações sobre como reiniciar o agente, consulte este link.
Se você quiser verificar novamente o arquivo de chave da conta de serviço, consulte Como verificar credenciais de chave privada.
Definir GOOGLE_APPLICATION_CREDENTIALS
Nesta seção, mostramos como definir a variável de ambiente GOOGLE_APPLICATION_CREDENTIALS
para que ela fique visível para o processo do agente.
Linux
Edite o seguinte arquivo de configuração ou crie o arquivo, se ele ainda não existir:
/etc/systemd/system.conf
Adicione o código abaixo ao arquivo de configuração:
DefaultEnvironment="GOOGLE_APPLICATION_CREDENTIALS=PATH_TO_CREDENTIAL_FILE"
Atualize as variáveis de ambiente:
sudo systemctl daemon-reload
Reinicie o agente ao executar o comando a seguir na instância de VM.
sudo systemctl restart google-cloud-ops-agent
Windows
No PowerShell, execute os seguintes comandos como administrador para definir a variável de ambiente do sistema
GOOGLE_APPLICATION_CREDENTIALS
para o Agente de operações usar.[Environment]::SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "PATH_TO_CREDENTIAL_FILE", "Machine")
Reinicie o agente do Logging ao executar o comando a seguir na instância de VM.
Restart-Service -Name google-cloud-ops-agent -Force