Supervisa patrones de uso para cuentas de servicio y claves

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 realizar 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 por tiempo limitado. 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.

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

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

    Ir al Explorador de métricas

  2. En el campo Tipo de recurso, configura el tipo de recurso como Cuenta de servicio de IAM.

  3. En el campo Métrica, configura el tipo de métrica en uno de los siguientes valores:

    • Para las métricas de uso de la cuenta de servicio, selecciona Authentication events.
    • Para las métricas de uso de las claves de cuenta de servicio, selecciona Key Authentication Events.
  4. Ajusta la configuración del gráfico:

    • Selecciona el intervalo que quieras ver en la lista de intervalos encima del gráfico. Puedes seleccionar uno de los intervalos predefinidos o configurar uno personalizado; para eso, haz clic en Personalizado y selecciona una hora de inicio y de finalización.
    • Elige Gráfico de líneas o Gráfico de barras apiladas como tipo de trazado.

En estas métricas, se muestra el uso de cada clave de cuenta de servicio o de cuenta dentro del intervalo seleccionado.

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, realiza 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. Busca y copia el ID numérico único de la cuenta de servicio:

    1. En Cloud Console, 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. Copia el ID numérico único de la cuenta de servicio del campo ID único.

  2. En Cloud Console, ve a la página Explorador de métricas.

    Ir al Explorador de métricas

  3. En el campo Tipo de recurso, configura el tipo de recurso como Cuenta de servicio de IAM.

  4. En el campo Métrica, configura el tipo de métrica en Authentication events.

  5. Agrega un filtro para el ID de la cuenta de servicio:

    1. Haz clic en Agregar filtro.
    2. En el campo Etiqueta, selecciona unique_id.
    3. Asegúrate de que el campo Comparison esté establecido en = (equals).
    4. En el campo Value, pega el ID numérico único de la cuenta de servicio.
  6. Para facilitar la lectura del gráfico, elige Gráfico de líneas o Gráfico de barras apiladas como tipo de trazado.

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, realiza 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 Cloud Console, 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, busca y copia el ID único de la clave; luego, úsalo para buscar las métricas de uso de la clave.

Si tienes un archivo de claves JSON, puedes encontrar el ID único de la clave de la cuenta de servicio en el campo private_key_id del archivo.

Si no tienes un archivo de claves JSON, puedes buscar el ID único de la clave de cuenta de servicio mediante estos pasos:

Console

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

    Ir a la página 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 Claves.

  5. Busca y copia el ID de tu clave de la lista de ID de claves.

gcloud

  1. Ejecuta el comando gcloud iam service-accounts keys list y reemplaza SERVICE_ACCOUNT_EMAIL por la dirección de correo electrónico de la cuenta de servicio con la que está asociada la clave:

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

    El resultado muestra una lista de todas las claves creadas por el usuario asociadas con la cuenta de servicio, incluidos el ID único de cada clave, la fecha de creación y la fecha de vencimiento.

  2. Usa los datos en el resultado para identificar la clave de la que deseas hacer un seguimiento y copiar el ID único.

REST

  1. Enumera las claves de la 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: Este valor es 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"
        }
      ]
    }
    

  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"
    

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

Console

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

    Ir al Explorador de métricas

  2. En el campo Tipo de recurso, configura el tipo de recurso como Cuenta de servicio de IAM.

  3. En el campo Métrica, configura el tipo de métrica en Authentication events.

  4. Agrega un filtro para el ID de la clave de la cuenta de servicio:

    1. Haz clic en Agregar filtro.
    2. En el campo Etiqueta, selecciona key_id.
    3. Asegúrate de que el campo Comparison esté establecido en = (equals).
    4. En el campo Value, pega el ID numérico único de la clave de cuenta de servicio.
  5. Para facilitar la lectura del gráfico, elige Gráfico de líneas o Gráfico de barras apiladas como tipo de trazado.

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 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, realiza 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