Monitorar padrões de uso de contas de serviço e chaves

Esta página explica como usar o Cloud Monitoring para visualizar métricas de uso das suas contas de serviço e chaves da conta de serviço. Essas métricas permitem visualizar e rastrear padrões de uso, o que pode ajudar você a identificar anomalias de forma automática ou manual.

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.

As chaves da conta de serviço também aparecerão nessas métricas se um sistema listar as chaves ao tentar autenticar uma solicitação, mesmo que ele não a use para autenticar a solicitação. Esse comportamento é mais comum ao usar URLs assinados para o Cloud Storage ou ao autenticar aplicativos de terceiros. Como resultado, é possível ver métricas de uso para chaves que não foram usadas para autenticação.

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.

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.

Ver métricas de uso de todas as contas de serviço ou chaves

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

Console

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

    Acessar o Metrics Explorer

  2. No campo Tipo de recurso, defina o tipo de recurso como Conta de serviço do IAM.

  3. No campo Métrica, defina o tipo de 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.
  4. 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 de término.
    • Escolha Gráfico de linhas ou Gráfico de barras empilhadas como 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.

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. Os IDs do projeto são strings alfanuméricas, como my-project.
  • 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.

Visualizar métricas de uso de uma única conta de serviço

Para visualizar as métricas de uso de uma única conta de serviço, 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 o Metrics Explorer

  3. No campo Tipo de recurso, defina o tipo de recurso como Conta de serviço do IAM.

  4. No campo Métrica, defina o tipo de métrica como Eventos de autenticação.

  5. Adicione um filtro para o ID da conta de serviço:

    1. Clique em Adicionar filtro.
    2. No campo Rótulo, selecione unique_id.
    3. Verifique se o campo Comparação está definido como = (igual a).
    4. No campo Valor, cole o ID numérico exclusivo da conta de serviço.
  6. Para facilitar a leitura do gráfico, escolha Gráfico de linhas ou Gráfico de barras empilhadas como tipo de gráfico.

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. Os IDs do projeto são strings alfanuméricas, como my-project.
  • 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.

Visualizar métricas de uso de uma única chave de conta de serviço

Para visualizar as métricas de uso de uma única chave de conta de serviço, localize e copie o ID exclusivo da chave 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"

  2. Selecione o projeto que contém a conta de serviço associada à sua chave.

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

  4. Clique na guia Chaves.

  5. Encontre e copie o ID da chave na lista.

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.

REST

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

    O métodoprojects.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. Os IDs do projeto são strings alfanuméricas, como my-project.
    • 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 visualizar 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 o Metrics Explorer

  2. No campo Tipo de recurso, defina o tipo de recurso como Conta de serviço do IAM.

  3. No campo Métrica, defina o tipo de métrica como Eventos de autenticação de chave.

  4. Adicione um filtro para o ID da chave da conta de serviço:

    1. Clique em Adicionar filtro.
    2. No campo Rótulo, selecione key_id.
    3. Verifique se o campo Comparação está definido como = (igual a).
    4. No campo Valor, cole o ID numérico exclusivo da chave da conta de serviço.
  5. Para facilitar a leitura do gráfico, escolha Gráfico de linhas ou Gráfico de barras empilhadas como tipo de gráfico.

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. Os IDs do projeto são strings alfanuméricas, como my-project.
  • 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.

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