Autorize o Ops Agent

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 da gcloud 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:

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

  1. Na Google Cloud consola, aceda à página Instâncias de VM:

    Aceda a Instâncias de VM

    Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cuja legenda seja Compute Engine.

  2. Se necessário, clique na lista pendente de Google Cloud projetos e selecione o nome do seu projeto.
  3. Selecione Instâncias de VM no menu de navegação, selecione o separador Instâncias e, em seguida, selecione o nome da sua VM.
  4. Encerre a VM clicando em  Parar.
  5. Depois de a VM parar, clique em  Editar.
  6. Localize os Âmbitos de acesso na secção Acesso à API e identidade da página e, de seguida, selecione Definir acesso para cada API.
  7. Para entradas da API Stackdriver Logging e da API Stackdriver Monitoring, selecione Apenas escrita.
  8. Clique em Guardar e, de seguida, reinicie a VM clicando em  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:

  1. Na Google Cloud consola, aceda à página IAM:

    Aceda ao IAM

    Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cujo subtítulo é IAM e administração.

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

  3. Se não vir uma lista de principais do IAM (utilizadores e contas de serviço), selecione o separador Autorizações.

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

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

    1. Clique em  Editar na entrada da conta de serviço.
    2. Clique em Adicionar outra função para adicionar funções em falta.
    3. 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:

  1. Certifique-se de que validou os âmbitos de acesso da sua VM.

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

  3. Associe a conta de serviço à VM onde o agente está a ser executado.

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

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

    1. 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
      
    2. Conclua os passos apresentados na tabela seguinte:

      Compute Engine

      1. Na Google Cloud consola, aceda à página Instâncias de VM:

        Aceda a 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.

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

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

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

  1. Edite o seguinte ficheiro de configuração ou crie o ficheiro se não existir:

    /etc/systemd/system.conf
    
  2. Adicione o seguinte ao ficheiro 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 executando o seguinte comando na sua 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 executando o seguinte comando na sua instância de VM:

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