Autorizar o agente de operações

Neste guia, explicamos como garantir que o Agente de operações, que você instala na instância de máquina virtual (VM), esteja autorizado a enviar dados de telemetria para o Monitoring.

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 revoke todas as credenciais criadas usando gcloud 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:

  1. 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
  2. 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:

  1. No painel de navegação do console do Google Cloud, selecione Compute Engine e, depois, Instâncias de VM:

    Acessar Instâncias de VM

  2. Se necessário, clique na lista suspensa de projetos do Google Cloud e selecione o nome do seu projeto.
  3. Selecione Instâncias de VM no menu de navegação, a guia Instâncias e o nome da VM.
  4. Encerre a VM clicando em  Parar.
  5. Depois que a VM for interrompida, clique em Editar.
  6. Localize Escopos de acesso na seção Identidade e acesso à API da página e selecione Definir acesso para cada API.
  7. Para as entradas da API Stackdriver Logging e da API Stackdriver Monitoring, selecione Somente gravação.
  8. Clique em Salvar e reinicie a VM clicando em  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 saber mais, 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:

  1. No painel de navegação do console do Google Cloud, selecione IAM:

    Acessar o IAM

  2. Se necessário, clique na lista suspensa de projetos do Google Cloud e selecione o nome do seu projeto.

  3. Se você não vir uma lista de principais do IAM (usuários e contas de serviço), selecione a guia Permissões.

  4. 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.

  5. 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:

    1. Clique em  Editar na entrada da conta de serviço.
    2. Clique em Adicionar outro papel para adicionar os papéis ausentes.
    3. Clique em Save.

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 o seguinte:

  1. Verifique se você verificou os escopos de acesso da VM.

  2. 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.

  3. Anexe a conta de serviço à VM em que o agente está sendo executado.

  4. 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:

  1. Transfira o arquivo de chave da conta de serviço do sistema local para a instância de VM:

    1. 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
      
    2. Conclua as etapas exibidas na tabela a seguir:

      Compute Engine

      1. No painel de navegação do console do Google Cloud, selecione Compute Engine e, depois, Instâncias de VM:

        Acessar Instâncias de VM

        Identifique o INSTANCE_NAME e o INSTANCE_ZONE da VM.

      2. 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"
        
      3. 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 Definir GOOGLE_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"
        

  2. 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:

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

  1. Edite o seguinte arquivo de configuração ou crie o arquivo, se ele ainda não existir:

    /etc/systemd/system.conf
    
  2. Adicione o código abaixo ao arquivo de configuração:

    DefaultEnvironment="GOOGLE_APPLICATION_CREDENTIALS=PATH_TO_CREDENTIAL_FILE"
    
  3. Atualize as variáveis de ambiente:

    sudo systemctl daemon-reload
    
  4. Reinicie o agente ao executar o comando a seguir na instância de VM.

    sudo systemctl restart google-cloud-ops-agent
    

Windows

  1. 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")
    
  2. Reinicie o agente do Logging ao executar o comando a seguir na instância de VM.

    Restart-Service -Name google-cloud-ops-agent -Force