Este guia explica como garantir que o agente de operações, que instala na instância da máquina virtual (VM), está autorizado a enviar dados de telemetria para o Monitoring.
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 o agente de operações numa instância de VM do Compute Engine através das credenciais predefinidas da aplicação (ADC).
O agente de operações 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
- O agente de operações não suporta a autorização através do
gcloud auth
. Para evitar comportamentos indesejados, tem de revogar todas as credenciais criadas através dagcloud auth
.
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.
Valide os seus âmbitos de acesso
As instâncias de VM do Compute Engine são atribuídas a âmbitos de acesso quando as cria. As novas VMs do Compute Engine têm âmbitos de acesso adequados para o Ops Agent, mas as VMs antigas ou aquelas em que os âmbitos foram modificados podem não ter. Para mais informações sobre âmbitos de acesso e contas de serviço, consulte a secção Autorização na documentação do Compute Engine.
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.
No menu pendente Função, selecione as seguintes funções:
Monitorização > Monitoring Metric Writer.
Registo > Gravador de registos.
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 operações, 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 operações 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 operações 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
.Também tem de definir a variável de ambiente
GOOGLE_APPLICATION_CREDENTIALS
para indicar a localização do ficheiro de chave da conta de serviço, e a variável 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/systemd/system.conf
Adicione o seguinte ao ficheiro de configuração:
DefaultEnvironment="GOOGLE_APPLICATION_CREDENTIALS=PATH_TO_CREDENTIAL_FILE"
Atualize as variáveis de ambiente:
sudo systemctl daemon-reload
Reinicie o agente executando o seguinte comando na sua 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 executando o seguinte comando na sua instância de VM:
Restart-Service -Name google-cloud-ops-agent -Force