Este guia explica como garantir que o agente de monitorização, que instala na instância de máquina virtual (VM), está autorizado a enviar dados de telemetria para o Google Cloud Observability.
Vista geral da autorização
A autorização refere-se ao processo de determinar que autorizações um cliente autenticado tem para um conjunto de recursos.O Google Cloud autoriza Google Cloud o agente de monitorização numa instância de VM do Compute Engine através das credenciais predefinidas da aplicação (ADC).
O agente de monitorização suporta a ADC que autentica uma conta de serviço associada a uma VM ou uma chave de conta de serviço.
- Uma conta de serviço anexada refere-se a uma conta de serviço específica de um determinado recurso, como uma VM. A conta de serviço tem as suas próprias credenciais exclusivas. O ADC usa o servidor de metadados da VM para obter credenciais para um serviço.
- Uma chave de conta de serviço refere-se a uma chave privada usada para autorizar o par de chaves numa conta de serviço num projeto, o que lhe permite criar um token de acesso. Usa o token para fornecer uma identidade para que possa interagir com as APIs em nome da conta de serviço. Google Cloud
Recomendamos que configure o ADC para autenticar através de uma conta de serviço anexada sempre que possível, uma vez que a chave privada requer armazenamento local e esse armazenamento pode ser comprometido. Para mais informações sobre as chaves de contas de serviço, consulte o artigo Práticas recomendadas para gerir chaves de contas de serviço.
Para instâncias de VM do AWS EC2, o agente de monitorização suporta a autenticação apenas através do método de chave de conta de serviço.
Antes de começar
Leia este guia se alguma das seguintes situações se aplicar a si:
Se estiver a executar instâncias do Compute Engine muito antigas ou se tiver modificado os âmbitos de acesso ou as definições da conta de serviço das instâncias do Compute Engine, tem de concluir os passos neste guia antes de instalar o agente. Estas VMs podem não ter o ficheiro de chave da conta de serviço necessário. Para informações sobre como validar os âmbitos de acesso e as definições da conta de serviço das suas instâncias, consulte o artigo Valide as credenciais do Compute Engine.
Nas instâncias de VM do Compute Engine criadas recentemente, os âmbitos de acesso e as definições da conta de serviço são suficientes para executar os agentes.
Se estiver a executar instâncias de VM do Amazon EC2 (AWS VC2), faça o seguinte antes de instalar o agente:
Identifique o projeto de alojamento da AWS para a conta da AWS com as suas instâncias do EC2. O projeto de alojamento é um Google Cloud projeto cujo único objetivo é armazenar as métricas e os registos das instâncias do EC2 numa conta da AWS.
Se não conseguir encontrar um projeto de alojamento da AWS para a conta, recomendamos que crie um Google Cloud projeto para servir de projeto de alojamento. Se tiver instâncias do EC2 em várias contas da AWS, crie um Google Cloud projeto para cada conta. Também recomendamos que use uma convenção de nomenclatura para estes projetos ou que use etiquetas de projetos para poder identificar os seus projetos de alojamento. Não recomendamos que volte a usar umGoogle Cloud projeto existente, especialmente se contiver recursos Google Cloud .
Conclua os passos para autorizar o agente através de um ficheiro de chave de conta de serviço.
Para validar os seus âmbitos de acesso, faça o seguinte:
- Consulte os âmbitos de acesso executando o seguinte comando na sua 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 saída do comando, se o âmbito de acesso
https://www.googleapis.com/auth/cloud-platform
estiver listado, significa que tem autorização suficiente.Se
https://www.googleapis.com/auth/cloud-platform
não estiver listado, precisa de dois âmbitos de acesso, um de cada um dos seguintes pares de "registo" e "monitorização":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 âmbitos de acesso, faça o seguinte:
-
Na Google Cloud consola, aceda à página Instâncias de VM:
Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cuja legenda seja Compute Engine.
- Se necessário, clique na lista pendente de Google Cloud projetos e selecione o nome do seu projeto.
- Selecione Instâncias de VM no menu de navegação, selecione o separador Instâncias e, em seguida, selecione o nome da sua VM.
- Encerre a VM clicando em stop Parar.
- Depois de a VM parar, clique em edit Editar.
- Localize os Âmbitos de acesso na secção Acesso à API e identidade da página e, de seguida, selecione Definir acesso para cada API.
- Para entradas da API Stackdriver Logging e da API Stackdriver Monitoring, selecione Apenas escrita.
- Clique em Guardar e, de seguida, reinicie a VM clicando em play_arrow Iniciar/Retomar.
Use uma conta de serviço
A autenticação refere-se ao processo de determinação da identidade de um cliente. Para a autenticação, recomendamos que use uma conta de serviço, um tipo especial de conta que é normalmente usada por uma aplicação ou uma carga de trabalho, em vez de uma pessoa. Para mais informações, consulte o artigo Vista geral das contas de serviço.
Pode usar contas de serviço para autenticação, independentemente de onde o código é executado: no Compute Engine, no App Engine ou no local. Para mais informações, consulte o artigo Autenticação na Google.
Esta secção descreve como criar uma nova conta de serviço e conceder-lhe as funções necessárias, bem como atualizar uma conta de serviço existente se não tiver as funções necessárias.
Criar uma conta de serviço
Para criar uma conta de serviço, conclua os procedimentos de criação de uma conta de serviço com as seguintes informações:
Selecione o Google Cloud projeto no qual criar a conta de serviço.
Para instâncias do Compute Engine, escolha o projeto no qual criou a instância.
Para instâncias do Amazon EC2, selecione o projeto de alojamento da AWS.
No menu pendente Função, selecione as seguintes funções:
- Monitorização > Monitoring Metric Writer. Esta ação autoriza o agente de monitorização.
Se também instalar o agente de registos, adicione a seguinte função para esse agente:
- Registo > Gravador de registos. Esta ação autoriza o agente de registo.
Se planeia fazer a autenticação através de uma chave de conta de serviço, selecione JSON como Tipo de chave e clique em Criar.
Quando clica em Criar, é transferido um ficheiro que contém uma chave da conta de serviço para o seu sistema local. Para mais informações, consulte o artigo Crie e elimine chaves de contas de serviço.
Em seguida, configure a conta de serviço e as definições com base no facto de autorizar através de contas de serviço anexadas ou de chaves privadas de contas de serviço.
Valide e modifique as funções de uma conta de serviço existente
Pode usar a Google Cloud consola para determinar as funções que uma conta de serviço existente tem e adicionar as funções necessárias em falta:
-
Na Google Cloud consola, aceda à página IAM:
Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cujo subtítulo é IAM e administração.
Se necessário, clique na lista pendente de Google Cloud projetos e selecione o nome do seu projeto.
Se não vir uma lista de principais do IAM (utilizadores e contas de serviço), selecione o separador Autorizações.
Na lista Vista por membros, localize a entrada da conta de serviço. A coluna Função apresenta as funções concedidas à conta de serviço.
Se a sua conta de serviço não tiver as funções necessárias para o agente de monitorização, siga estes passos para adicionar as funções descritas no artigo Crie uma conta de serviço:
- Clique em edit Editar na entrada da conta de serviço.
- Clique em Adicionar outra função para adicionar funções em falta.
- Clique em Guardar.
Autorize com uma conta de serviço anexada
Para autorizar o agente de monitorização instalado numa instância de VM do Compute Engine que tenha uma conta de serviço anexada, faça o seguinte:
Certifique-se de que validou os âmbitos de acesso da sua VM.
Conceda à sua conta de serviço as funções de IAM com o menor número de privilégios possível. Para ver as funções necessárias, consulte a secção Crie uma conta de serviço desta página.
Associe a conta de serviço à VM onde o agente está a ser executado.
Se ainda não tiver instalado o agente, instale-o. Para obter informações sobre como instalar o agente, consulte o artigo Instalar o agente.
Autorize com uma chave de conta de serviço
Para autorizar o agente de monitorização instalado numa instância de VM através de chaves privadas de contas de serviço, faça o seguinte:
Transfira o ficheiro de chave da conta de serviço do seu sistema local para a instância de VM:
Crie uma variável de ambiente para apontar para o ficheiro de chave da conta de serviço no seu sistema local. O exemplo seguinte cria uma variável denominada
CREDS
:CREDS=~/Downloads/PROJECT-NAME-KEY-ID.json
Conclua os passos apresentados na tabela seguinte:
Compute Engine
-
Na Google Cloud consola, aceda à página Instâncias de VM:
Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cuja legenda seja Compute Engine.
Identifique o INSTANCE_NAME e o INSTANCE_ZONE da sua VM.
No seu sistema local, execute um comando da CLI Google Cloud para copiar o ficheiro 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 ficheiro de chave da conta de serviço da localização temporária para uma localização permanente e, no Linux, certifique-se de que o ficheiro de chave da conta de serviço só é legível por
root
.Estas são as localizações onde o agente espera encontrar o seu ficheiro de chave:
- VMs Linux:
/etc/google/auth/application_default_credentials.json
- VMs Linux:
Qualquer localização que armazene na variável de ambiente
GOOGLE_APPLICATION_CREDENTIALS
, que tem de estar visível para o processo do agente. Para obter informações de configuração, consulte o artigo DefinaGOOGLE_APPLICATION_CREDENTIALS
.
Por exemplo, no Linux, pode executar o seguinte script que move o ficheiro de chave da conta de serviço para a localização predefinida e, em seguida, define as autorizaçõ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"
- VMs Linux:
Amazon EC2
Para a sua VM, identifique YOUR-INSTANCE'S-ID e YOUR-INSTANCE'S-AWS-REGION.
No seu sistema local, use o comando scp para copiar o ficheiro de chave da conta de serviço do seu sistema local para a instância de VM:
KEY="YOUR-SSH-KEY-PAIR-FILE" INSTANCE="ec2-YOUR-INSTANCE'S-ID.YOUR-INSTANCE'S-AWS-REGION.compute.amazonaws.com" # The remote user depends on the installed OS: ec2-user, ubuntu, root, etc. REMOTE_USER="EC2-USER" scp -i "$KEY" "$CREDS" "$REMOTE_USER@$INSTANCE:~/temp.json"
O valor da variável de ambiente
INSTANCE
pressupõe que a sua instância do EC2 não está na regiãous-east-1
. Para saber como definir a variávelINSTANCE
quando a sua instância se encontra na regiãous-east-1
, consulte a convenção de nomenclatura definida pela Amazon.Na sua instância do EC2, mova o ficheiro de chave da conta de serviço da localização temporária para uma das seguintes localizações e, para o Linux, certifique-se de que o ficheiro de chave da conta de serviço só é legível por
root
.Estas são as localizações onde o agente espera encontrar o seu ficheiro de chave:
VMs Linux:
/etc/google/auth/application_default_credentials.json
VMs do Windows:
C:\ProgramData\Google\Auth\application_default_credentials.json
VMs Linux e Windows: qualquer localização que armazene na variável de ambiente
GOOGLE_APPLICATION_CREDENTIALS
, que tem de estar visível para o processo do agente. Para obter informações de configuração, consulte o artigo DefinaGOOGLE_APPLICATION_CREDENTIALS
.
Por exemplo, no Linux, pode executar o seguinte script que move o ficheiro de chave da conta de serviço para a localização predefinida e, em seguida, define as autorizaçõ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"
-
A sua instância de VM tem agora o ficheiro de chave da conta de serviço de que o agente precisa. Em seguida, instale ou reinicie o agente:
Para obter informações sobre como instalar o agente, consulte o artigo Instalar o agente.
Para obter informações sobre como reiniciar o agente, consulte a secção Reiniciar o agente.
Se quiser verificar novamente o ficheiro de chave da conta de serviço, consulte o artigo Validar credenciais de chave privada.
Definir GOOGLE_APPLICATION_CREDENTIALS
Esta secção mostra como definir a variável de ambiente
GOOGLE_APPLICATION_CREDENTIALS
para que seja visível para o processo do agente.
Linux
Edite o seguinte ficheiro de configuração ou crie o ficheiro se não existir:
/etc/default/stackdriver-agent
Adicione o seguinte ao ficheiro de configuração:
GOOGLE_APPLICATION_CREDENTIALS=PATH_TO_CREDENTIAL_FILE
Reinicie o agente executando o seguinte comando na sua instância de VM:
sudo service stackdriver-agent restart
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 executando o seguinte comando na sua instância de VM:
Restart-Service -Name StackdriverMonitoring