Como monitorar o uso de contas de serviço e chaves

Esta página explica como usar o Cloud Monitoring para monitorar o uso de contas de serviço e chaves de contas de serviço. O rastreamento dessas informações pode ajudar a identificar contas de serviço e chaves de contas de serviço que você não usa mais.

As contas de serviço e as chaves de conta de serviço aparecerão nessas métricas se forem usadas para chamar qualquer API do Google, incluindo APIs que não fazem parte do Google Cloud. As métricas incluem chamadas de API bem-sucedidas e com falha. Por exemplo, se uma chamada de API falhar porque o autor da chamada não está autorizado a chamar essa API ou porque a solicitação faz referência a um recurso inexistente, a conta de serviço ou chave usada para essa chamada de API aparecerá nas métricas.

O Monitoring retém as métricas da conta de serviço por um tempo limitado. Se você precisar acessar os dados por um período maior, poderá exportar periodicamente os resultados para o BigQuery. Para saber mais, consulte Como monitorar a exportação de métricas na documentação do Solutions.

Antes de começar

Para usar o Monitoring no projeto, é preciso adicioná-lo a um espaço de trabalho do Monitoring. Para adicionar seu projeto a um espaço de trabalho, crie um novo espaço ou adicione um projeto a um espaço atual.

Como visualizar métricas de uso

As métricas de uso geralmente ficam disponíveis em alguns minutos depois que você usa uma conta de serviço ou uma chave de conta de serviço.

Para visualizar as métricas de uso das suas contas de serviço e chaves da contas de serviço, siga as seguintes etapas:

Console

  1. No Console do Cloud, acesse a página "Metrics Explorer".

    Acessar a página do Metrics Explorer

  2. No campo Encontrar tipo de recurso e métrica, defina o tipo do recurso como Contas de serviço do IAM e defina a métrica como um dos seguintes valores:
      .
    • Para métricas de uso da conta de serviço, selecione Eventos de autenticação.
    • Para as métricas de uso de chaves de contas de serviço, selecione Eventos de autenticação de chaves.
  3. Ajuste as configurações do gráfico:
    • Selecione o intervalo de tempo que você quer visualizar na lista de intervalos acima do gráfico. É possível selecionar um dos intervalos predefinidos ou definir um intervalo personalizado clicando em Personalizado e selecionando um horário de início e detérmino.
    • Escolha Linha ou Barra empilhada como o tipo de gráfico.

Essas métricas mostram cada uso da conta de serviço ou da chave da conta de serviço no intervalo selecionado.

API REST

O método timeSeries.list da API Cloud Monitoring permite que você acesse as métricas de uso de maneira programática.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • project-id: o ID do projeto do Google Cloud.
  • metric-type: o tipo de métrica que você quer verificar. Use um dos seguintes valores:
    • Para as métricas de uso da conta de serviço, use iam.googleapis.com%2Fservice_account%2Fauthn_events_count.
    • Para as métricas de uso de chave da conta de serviço, use iam.googleapis.com%2Fservice_account%2Fkey%2Fauthn_events_count.
  • end-time: o fim do intervalo de tempo que você quer verificar, no formato RFC 3339 codificado por porcentagem. Por exemplo, 2020-06-12T00%3A00%3A00.00Z.
  • start-time: o início do intervalo de tempo que você quer verificar, no formato RFC 3339 codificado por porcentagem. Por exemplo, 2020-04-12T00%3A00%3A00.00Z.

Método HTTP e URL:

GET https://monitoring.googleapis.com/v3/projects/project-id/timeSeries?filter=metric.type%3D%22metric-type%22&interval.endTime=end-time&interval.startTime=start-time

Para enviar a solicitação, expanda uma destas opções:

Para mais informações sobre como ler programaticamente as métricas de uso, consulte Como ler dados de métrica na documentação do Monitoring.

Como identificar contas de serviço e chaves de contas de serviço não utilizadas

As métricas de uso da conta de serviço e da chave da conta de serviço ajudam a identificar as contas de serviço e as chaves de contas de serviço que você não usa mais. Recomendamos desativar ou excluir essas contas de serviço e chaves não usadas porque elas geram um risco de segurança desnecessário.

Como encontrar o uso recente de uma única conta de serviço

Para encontrar a última vez que uma conta de serviço foi usada, siga estas etapas:

Console

  1. Encontre e copie o ID numérico exclusivo da conta de serviço:

    1. No Console do Cloud, acesse a página Contas de serviço:

      Acessar a página "Contas de serviço"

    2. Selecione o projeto que contém a conta de serviço.

    3. Clique no endereço de e-mail da sua conta de serviço.

    4. Copie o ID numérico exclusivo da conta de serviço no campo ID exclusivo.

  2. No Console do Cloud, acesse a página "Metrics Explorer".

    Acessar a página "Metrics Explorer"

  3. No campo Encontrar tipo de recurso e métrica, defina o tipo como Contas de serviço do IAM e defina a métrica como Eventos de autenticação.

  4. No campo Filtro, selecione unique_id e cole o ID numérico exclusivo da conta de serviço.

  5. Para facilitar a leitura do gráfico, escolha Linha ou Barra empilhada como o tipo de gráfico.

O evento de autenticação mais recente no gráfico mostra quando a conta de serviço foi usada pela última vez.

API REST

O método timeSeries.list da API Cloud Monitoring , quando usado com filtros específicos, permite que você receba métricas de uso para uma única conta de serviço. Você pode usar essas métricas para determinar quando a conta foi usada pela última vez.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • project-id: o ID do projeto do Google Cloud.
  • service-account-id: o ID numérico exclusivo da sua conta de serviço. Para encontrar o ID numérico exclusivo da sua conta de serviço, siga estas etapas:
    1. No Console do Cloud, acesse a página Contas de serviço:

      Acessar a página "Contas de serviço"
    2. Clique no endereço de e-mail da sua conta de serviço. O ID numérico exclusivo da sua conta de serviço é o valor no campo ID exclusivo.
  • end-time: o fim do intervalo de tempo que você quer verificar, no formato RFC 3339 codificado por porcentagem. Por exemplo, 2020-06-12T00%3A00%3A00.00Z.
  • start-time: o início do intervalo de tempo que você quer verificar, no formato RFC 3339 codificado por porcentagem. Por exemplo, 2020-04-12T00%3A00%3A00.00Z.

Método HTTP e URL:

GET https://monitoring.googleapis.com/v3/projects/project-id/timeSeries?filter=metric.type%3D%22iam.googleapis.com%2Fservice_account%2Fauthn_events_count%22%20AND%20resource.labels.unique_id%3D%22service-account-id%22&interval.endTime=end-time&interval.startTime=start-time

Para enviar a solicitação, expanda uma destas opções:

A resposta contém um objeto timeSeries com todos os eventos de autenticação recentes da conta de serviço especificada. Use esse objeto timeSeries para determinar quando a conta de serviço foi usada pela última vez.

Como encontrar o uso recente de uma única chave de conta de serviço

Para encontrar a última vez que uma chave da conta de serviço foi usada, encontre e copie o ID exclusivo dela e use esse ID para encontrar as métricas de uso da chave.

Se você tiver um arquivo de chave JSON, poderá encontrar o ID exclusivo da chave da conta de serviço no campo private_key_id do arquivo.

Se você não tiver um arquivo de chave JSON, siga estas etapas para encontrar o ID exclusivo da chave da conta de serviço:

Console

  1. No Console do Cloud, acesse a página Contas de serviço:

    Acessar a página "Contas de serviço"

    1. Selecione o projeto que contém a conta de serviço associada à sua chave.
    2. Clique no endereço de e-mail da conta de serviço associada à sua chave.
    3. Localize a seção Chaves da página e, em seguida, localize e copie o ID da chave na lista de IDs de chave.

gcloud

  1. Execute o comando gcloud iam service-accounts keys list, substituindo [SERVICE_ACCOUNT_EMAIL] pelo endereço de e-mail da conta de serviço a que a chave está associada:

    gcloud iam service-accounts keys list --iam-account=service-account-email
    

    A saída mostra uma lista de todas as chaves criadas pelo usuário associadas à conta de serviço, incluindo o ID exclusivo de cada chave, o horário de criação e o prazo de validade.

  2. Use os dados na saída para identificar a chave que você quer rastrear e copiar o ID exclusivo dela.

API REST

  1. Liste as chaves da conta de serviço:

    O método projects.serviceAccounts.keys.list lista todas as chaves de uma conta de serviço.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • project-id: o ID do projeto do Google Cloud.
    • sa-name: o nome da conta de serviço cujas chaves você quer listar.
    • key-types: opcional. Uma lista separada por vírgulas dos tipos de chave que você quer incluir na resposta. O tipo de chave indica se uma chave é gerenciada pelo usuário (USER_MANAGED) ou pelo sistema (SYSTEM_MANAGED). Se deixado em branco, todas as chaves são retornadas.

    Método HTTP e URL:

    GET https://iam.googleapis.com/v1/projects/project-id/serviceAccounts/sa-name@project-id.iam.gserviceaccount.com/keys?keyTypes=key-types

    Para enviar a solicitação, expanda uma destas opções:

    Você receberá uma resposta JSON semelhante a esta:

    {
      "keys": [
        {
          "name": "projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com/keys/90c48f61c65cd56224a12ab18e6ee9ca9c3aee7c",
          "validAfterTime": "2020-03-04T17:39:47Z",
          "validBeforeTime": "9999-12-31T23:59:59Z",
          "keyAlgorithm": "KEY_ALG_RSA_2048",
          "keyOrigin": "GOOGLE_PROVIDED",
          "keyType": "USER_MANAGED"
        },
        {
          "name": "projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com/keys/e5e3800831ac1adc8a5849da7d827b4724b1fce8",
          "validAfterTime": "2020-03-31T23:50:09Z",
          "validBeforeTime": "9999-12-31T23:59:59Z",
          "keyAlgorithm": "KEY_ALG_RSA_2048",
          "keyOrigin": "GOOGLE_PROVIDED",
          "keyType": "USER_MANAGED"
        },
        {
          "name": "projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com/keys/b97699f042b8eee6a846f4f96259fbcd13e2682e",
          "validAfterTime": "2020-05-17T18:58:13Z",
          "validBeforeTime": "9999-12-31T23:59:59Z",
          "keyAlgorithm": "KEY_ALG_RSA_2048",
          "keyOrigin": "GOOGLE_PROVIDED",
          "keyType": "USER_MANAGED"
        }
      ]
    }
    

  2. Use os metadados na resposta para identificar a chave que você quer rastrear. Em seguida, copie o ID exclusivo da chave no final do campo name.

    O campo name tem o seguinte formato:

    "name": "projects/project-id/serviceAccounts/service-account-email/keys/key-id"
    

    O ID exclusivo da chave é tudo o que vem depois de keys/.

    Por exemplo, o ID exclusivo no seguinte nome de chave é 0f561cc41650ff521899de2fd653bd3de08e2da4:

    "name": "projects/my-project/serviceAccounts/my-account@my-project.iam.gserviceaccount.com/keys/0f561cc41650ff521899de2fd653bd3de08e2da4"
    

Para encontrar as métricas de uso da chave da conta de serviço, siga estas etapas:

Console

  1. No Console do Cloud, acesse a página "Metrics Explorer".

    Acessar a página "Metrics Explorer"

  2. No campo Encontrar tipo de recurso e métrica, defina o tipo como Contas de serviço do IAM e defina a métrica como Eventos de autenticação de chave.

  3. No campo Filtro, selecione keyid e insira o ID exclusivo da chave da conta de serviço.

  4. Para facilitar a leitura do gráfico, escolha Linha ou Barra empilhada como o tipo de gráfico.

O evento de autenticação mais recente no gráfico mostra quando a chave de conta de serviço foi usada pela última vez.

API REST

O método timeSeries.list da API Cloud Monitoring , quando usado com filtros específicos, permite que você receba métricas de uso para uma única chave de conta de serviço. Você pode usar essas métricas para determinar quando a chave foi usada pela última vez.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • project-id: o ID do projeto do Google Cloud.
  • key-id: o ID exclusivo da chave da sua conta de serviço.
  • end-time: o fim do intervalo de tempo que você quer verificar, no formato RFC 3339 codificado por porcentagem. Por exemplo, 2020-06-12T00%3A00%3A00.00Z.
  • start-time: o início do intervalo de tempo que você quer verificar, no formato RFC 3339 codificado por porcentagem. Por exemplo, 2020-04-12T00%3A00%3A00.00Z.

Método HTTP e URL:

GET https://monitoring.googleapis.com/v3/projects/project-id/timeSeries?filter=metric.type%3D%22iam.googleapis.com%2Fservice_account%2Fkey%2Fauthn_events_count%22%20AND%20metric.labels.key_id%3D%22key-id%22&interval.endTime=end-time&interval.startTime=start-time

Para enviar a solicitação, expanda uma destas opções:

A resposta contém um objeto timeSeries com todos os eventos de autenticação recentes da conta de serviço especificada. Use esse objeto timeSeries para determinar quando a conta de serviço foi usada pela última vez.

Como exportar métricas

Use o Monitoring para exportar suas métricas para o BigQuery. A exportação de métricas é útil para realizar análises de longo prazo porque o Monitoring retém apenas métricas por um tempo limitado.

Para instruções, consulte Exportação de métricas do Monitoring na documentação do Solutions.

A seguir