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

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 seis semanas. 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.

Antes de começar

  • Enable the IAM and Cloud Monitoring APIs.

    Enable the APIs

Funções exigidas

Para receber as permissões necessárias para visualizar o uso recente de contas de serviço e chaves, peça ao administrador que conceda a você o papel de IAM de Leitor do Monitoring (roles/monitoring.viewer) no projeto. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.

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

Para visualizar as métricas de um recurso monitorado usando o Metrics Explorer, faça o seguinte:

  1. No console do Google Cloud, acesse a página do  Metrics Explorer:

    Acesse o Metrics explorer

    Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Monitoramento.

  2. No elemento Metric, expanda o menu Selecionar uma métrica, digite IAM Service Account na barra de filtro e use os submenus para selecionar um tipo de recurso e métrica específicos:
    1. No menu Recursos ativos, selecione Conta de serviço do IAM.
    2. No menu Categorias de métrica ativa, selecione Service_account.
    3. No menu Métricas ativas, selecione uma métrica de conta de serviço. As métricas a seguir estão disponíveis no intervalo de tempo selecionado:
      • Para métricas de uso da conta de serviço, selecione Eventos de autenticação da conta de serviço.
      • Para métricas de uso de chaves de contas de serviço, selecione Eventos de autenticação de chaves de contas de serviço.
    4. Clique em Aplicar.
  3. Para remover séries temporais da exibição, use o elemento Filtro.

  4. Para combinar séries temporais, use os menus no elemento Agregação. Por exemplo, para exibir a utilização da CPU para suas VMs, com base na zona, defina o primeiro menu como Média e o segundo como zona.

    Todas as séries temporais são exibidas quando o primeiro menu do elemento Agregação está definido como Não agregado. As configurações padrão do elemento Agregação são determinadas pelo tipo de métrica selecionada.

  5. Para cotas e outras métricas que informam uma amostra por dia, faça as seguintes ações:
    1. No painel Exibição, defina o Tipo de widget como Gráfico de barras empilhadas.
    2. Defina o período como pelo menos uma semana.

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. No Console do Google 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. Clique na guia Métricas. O gráfico Tráfego de autenticação mostra as métricas de uso da conta de serviço.

  5. Opcional: para visualizar o gráfico noMetrics Explorer página, que oferece opções adicionais de filtragem e visualização, clique em > Ver no Metrics Explorer de dados.

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 Google 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, siga estas etapas:

Console

  1. No Console do Google 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 Métricas. O gráfico Tráfego de autenticação por chave mostra as métricas de uso de todas as chaves associadas à conta de serviço.

  5. Na legenda do gráfico, clique no ID da chave da conta de serviço para a qual você quer visualizar as métricas de uso. O gráfico é atualizado para mostrar métricas apenas para essa chave da conta de serviço.

  6. Opcional: para visualizar o gráfico noMetrics Explorer página, que oferece opções adicionais de filtragem e visualização, clique em > Ver no Metrics Explorer de dados.

REST

Primeiro, receba o ID da chave da conta de serviço.

  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. 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",
          "disabled": true
          "disable_reason": "SERVICE_ACCOUNT_KEY_DISABLE_REASON_EXPOSED"
          "extended_status": "SERVICE_ACCOUNT_KEY_EXTENDED_STATUS_KEY_EXPOSED"
          "extended_status_message": "exposed at: https://www.github.com/SomePublicRepo"
        }
      ]
    }
    

  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"

Em seguida, use o ID para visualizar as métricas de uso da chave da conta de serviço.

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