Supervisa patrones de uso para claves y cuentas de servicio

En esta página, se explica cómo usar Cloud Monitoring para ver las métricas de uso de tus cuentas de servicio y claves de cuenta de servicio. Estas métricas te permiten ver y hacer un seguimiento de los patrones de uso, lo que puede ayudarte a identificar anomalías de forma automática o manual.

Las cuentas de servicio y las claves de cuenta de servicio aparecen en estas métricas si se usan para llamar a cualquier API de Google, incluidas las API que no forman parte de Google Cloud. Las métricas incluyen llamadas a la API correctas y fallidas. Por ejemplo, si una llamada a la API falla porque el emisor no está autorizado a llamar a esa API, o porque la solicitud hace referencia a un recurso que no existe, la cuenta de servicio o la clave que se usó para hacer esa llamada a la API aparece en las métricas.

Las claves de la cuenta de servicio también aparecen en estas métricas si un sistema enumera las claves mientras intenta autenticar una solicitud, incluso si el sistema no usa la clave para autenticar la solicitud. Este comportamiento es más común cuando se usan URL firmadas para Cloud Storage o cuando se autentica en aplicaciones de terceros. Como resultado, es posible ver las métricas de uso para las claves que no se usaron para la autenticación.

Monitoring conserva las métricas de cuenta de servicio durante 6 semanas. Si necesitas acceder a los datos durante un período más largo, puedes exportar los resultados a BigQuery de forma periódica. Para obtener más información, consulta Exportación de métricas de Monitoring en la documentación de soluciones.

Cuando usas una cuenta de servicio o una clave de cuenta de servicio, las métricas de uso suelen estar disponibles en unos minutos.

Antes de comenzar

  • Enable the IAM and Cloud Monitoring APIs.

    Enable the APIs

Roles obligatorios

Para obtener los permisos que necesitas para ver el uso reciente de las cuentas de servicio y claves, pídele a tu administrador que te otorgue el rol de IAM de visualizador de Monitoring (roles/monitoring.viewer) en el proyecto. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.

Consulta las métricas de uso de todas las cuentas de servicio o claves

Para ver las métricas de uso de las cuentas de servicio y las claves de cuenta de servicio, sigue estos pasos:

Console

Para consultar las métricas de un recurso supervisado usando el Explorador de métricas, haz lo siguiente:

  1. En la consola de Google Cloud, ve a la página Explorador de métricas:

    Ir al Explorador de métricas

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Monitoring.

  2. En el elemento Métrica, expande el menú Seleccionar una métrica, ingresa IAM Service Account en la barra de filtros y, luego, usa los submenús para seleccionar un métrica y tipo de recurso específicos:
    1. En el menú Recursos activos, selecciona Cuenta de servicio de IAM.
    2. En el menú Categorías de métricas activas, elige Service_account.
    3. En el menú Métricas activas, elige una métrica de cuenta de servicio. Las siguientes métricas están disponibles dentro del intervalo de tiempo seleccionado:
      • Para las métricas de uso de cuentas de servicio, elige Eventos de autenticación de cuentas de servicio.
      • Para las métricas de uso de las claves de cuenta de servicio, elige Eventos de autenticación de claves de cuenta de servicio.
    4. Haz clic en Aplicar.
  3. Para quitar series temporales de la pantalla, usa el elemento Filtro.

  4. Para combinar series temporales, usa los menús del elemento Agregación. Por ejemplo, para mostrar el uso de CPU de tus VM, en función de su zona, configura el primer menú como Mean y el segundo menú como zona.

    Todas las series temporales se muestran cuando el primer menú del elemento Agregación se establece en Sin agregar. La configuración predeterminada para el elemento Agregación está determinada por el tipo de métrica que elegiste.

  5. Para obtener cuotas y otras métricas que informen una muestra por día, haz lo siguiente:
    1. En el panel Mostrar, establece el Tipo de widget en Gráfico de barras apiladas.
    2. Establece el período en al menos una semana.

REST

El método timeSeries.list de la API de Cloud Monitoring te permite acceder a las métricas de uso de manera programática.

Antes de usar cualquiera de los datos de solicitud a continuación, haz los siguientes reemplazos:

  • PROJECT_ID: El ID del proyecto de Google Cloud Los ID de proyecto son strings alfanuméricas, como my-project.
  • METRIC_TYPE: El tipo de métrica que deseas verificar. Usa uno de los siguientes valores:
    • Para las métricas de uso de la cuenta de servicio, usa iam.googleapis.com%2Fservice_account%2Fauthn_events_count.
    • Para las métricas de uso de la clave de la cuenta de servicio, usa iam.googleapis.com%2Fservice_account%2Fkey%2Fauthn_events_count.
  • END_TIME: El final del intervalo que deseas verificar, con formato RFC 3339 codificado por porcentaje. Por ejemplo, 2020-06-12T00%3A00%3A00.00Z.
  • START_TIME: El inicio del intervalo que deseas verificar, con formato RFC 3339 codificado por porcentaje. Por ejemplo, 2020-04-12T00%3A00%3A00.00Z.

Método HTTP y 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 tu solicitud, expande una de estas opciones:

Para obtener más información sobre cómo leer las métricas de uso de manera programática, consulta Lee datos de métricas en la documentación de Monitoring.

Consulta las métricas de uso de una sola cuenta de servicio

Para ver las métricas de uso de una sola cuenta de servicio, sigue estos pasos:

Console

  1. En la consola de Google Cloud, ve a la página Cuentas de servicio.

    Ir a Cuentas de servicio

  2. Selecciona el proyecto que contiene la cuenta de servicio.

  3. Haz clic en la dirección de correo electrónico de la cuenta de servicio.

  4. Haz clic en la pestaña Métricas. En el gráfico Tráfico de autenticación, se muestran las métricas de uso de la cuenta de servicio.

  5. Opcional: Para ver la tabla en la página Explorador de métricas, en la que se ofrecen opciones de filtro y visualización adicionales, haz clic en  > Ver en el Explorador de métricas.

REST

El método timeSeries.list de la API de Cloud Monitoring, cuando se usa con filtros específicos, te permite obtener métricas de uso para una sola cuenta de servicio. Luego, puedes usar esas métricas para determinar cuándo se usó la cuenta por última vez.

Antes de usar cualquiera de los datos de solicitud a continuación, haz los siguientes reemplazos:

  • PROJECT_ID: El ID del proyecto de Google Cloud Los ID de proyecto son strings alfanuméricas, como my-project.
  • SERVICE_ACCOUNT_ID: El ID numérico único de la cuenta de servicio. Para encontrar el ID numérico único de la cuenta de servicio, sigue estos pasos:
    1. En la consola de Google Cloud, ve a la página Cuentas de servicio.

      Ir a la página Cuentas de servicio
    2. Haz clic en la dirección de correo electrónico de la cuenta de servicio. El ID numérico único de la cuenta de servicio es el valor en el campo ID único.
  • END_TIME: El final del intervalo que deseas verificar, con formato RFC 3339 codificado por porcentaje. Por ejemplo, 2020-06-12T00%3A00%3A00.00Z.
  • START_TIME: El inicio del intervalo que deseas verificar, con formato RFC 3339 codificado por porcentaje. Por ejemplo, 2020-04-12T00%3A00%3A00.00Z.

Método HTTP y 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 tu solicitud, expande una de estas opciones:

La respuesta contiene un objeto timeSeries con todos los eventos de autenticación recientes para la cuenta de servicio especificada.

Consulta las métricas de uso de una sola clave de cuenta de servicio

Para ver las métricas de uso de una sola clave de cuenta de servicio, sigue estos pasos:

Console

  1. En la consola de Google Cloud, ve a la página Cuentas de servicio.

    Ir a Cuentas de servicio

  2. Selecciona el proyecto que contiene la cuenta de servicio asociada con la clave.

  3. Haz clic en la dirección de correo electrónico de la cuenta de servicio asociada con la clave.

  4. Haz clic en la pestaña Métricas. En el gráfico Tráfico de autenticación por clave, se muestran las métricas de uso de todas las claves asociadas con la cuenta de servicio.

  5. En la leyenda del gráfico, haz clic en el ID de la clave de la cuenta de servicio de la que deseas ver las métricas de uso. El gráfico se actualiza para mostrar las métricas de esa clave de cuenta de servicio.

  6. Opcional: Para ver la tabla en la página Explorador de métricas, en la que se ofrecen opciones de filtro y visualización adicionales, haz clic en  > Ver en el Explorador de métricas.

REST

Primero, obtén el ID de la clave de la cuenta de servicio.

  1. Enumera las claves de cuenta de servicio:

    Con el método projects.serviceAccounts.keys.list, se enumeran todas las claves de cuenta de servicio de una cuenta de servicio.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_ID: El ID del proyecto de Google Cloud Los ID de proyecto son strings alfanuméricas, como my-project.
    • SA_NAME: Es el nombre de la cuenta de servicio cuyas claves deseas enumerar.
    • KEY_TYPES: Opcional Es una lista separada por comas de los tipos de claves que deseas incluir en la respuesta. El tipo de clave indica si una clave es administrada por el usuario (USER_MANAGED) o por el sistema (SYSTEM_MANAGED). Si se deja en blanco, se mostrarán todas las claves.

    Método HTTP y URL:

    GET https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_NAME@PROJECT_ID.iam.gserviceaccount.com/keys?keyTypes=KEY_TYPES

    Para enviar tu solicitud, expande una de estas opciones:

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    {
      "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. Usa los metadatos de la respuesta para identificar la clave de la que deseas hacer un seguimiento. Luego, copia el ID único de la clave desde el final del campo name.

    El campo name tiene el siguiente formato:

    "name": "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_EMAIL/keys/KEY_ID"

    El ID único de la clave es todo lo que se encuentra después de keys/.

    Por ejemplo, el ID único en el siguiente nombre de clave es 0f561cc41650ff521899de2fd653bd3de08e2da4:

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

Luego, usa el ID para ver las métricas de uso de la clave de la cuenta de servicio.

El método timeSeries.list de la API de Cloud Monitoring, cuando se usa con filtros específicos, te permite obtener métricas de uso para una sola clave de cuenta de servicio. Luego, puedes usar esas métricas para determinar cuándo se usó la clave por última vez.

Antes de usar cualquiera de los datos de solicitud a continuación, haz los siguientes reemplazos:

  • PROJECT_ID: El ID del proyecto de Google Cloud Los ID de proyecto son strings alfanuméricas, como my-project.
  • KEY_ID: El ID único de la clave de cuenta de servicio.
  • END_TIME: El final del intervalo que deseas verificar, con formato RFC 3339 codificado por porcentaje. Por ejemplo, 2020-06-12T00%3A00%3A00.00Z.
  • START_TIME: El inicio del intervalo que deseas verificar, con formato RFC 3339 codificado por porcentaje. Por ejemplo, 2020-04-12T00%3A00%3A00.00Z.

Método HTTP y 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 tu solicitud, expande una de estas opciones:

La respuesta contiene un objeto timeSeries con todos los eventos de autenticación recientes para la clave de cuenta de servicio especificada.

Exporta métricas

Puedes usar Monitoring para exportar tus métricas a BigQuery. Exportar métricas es útil para realizar análisis a largo plazo, ya que Monitoring solo retiene métricas por un tiempo limitado.

Para obtener instrucciones, consulta Exportación de métricas de Monitoring en la documentación de soluciones.

Próximos pasos