Supervisa el uso de claves y cuentas de servicio

En esta página, se explica cómo usar Cloud Monitoring para verificar cuándo se usaron las cuentas de servicio y sus claves. El seguimiento de esta información puede ayudarte a identificar las cuentas de servicio y las claves que ya no usas.

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.

Monitoring conserva las métricas de cuentas 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.

Antes de comenzar

Si deseas usar Monitoring en el proyecto, debes agregar el proyecto a un lugar de trabajo de Monitoring. Para agregar el proyecto a un lugar de trabajo, puedes crear un lugar de trabajo nuevo o agregar el proyecto a un lugar de trabajo existente.

Visualiza métricas de uso

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

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 a la página Explorador de métricas

  2. En el campo Find resource type and metric, establece el tipo de recurso en IAM Service accounts y configura la 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.
  3. 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 Line o Stacked bar 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.
  • 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 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 por 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étrica en la documentación de Monitoring.

Identifica claves y cuentas de servicio sin usar

Las métricas de uso de la clave de cuenta de servicio y de la cuenta de servicio pueden ayudarte a identificar las cuentas de servicio y las claves de cuenta de servicio que ya no usas. Te recomendamos inhabilitar o borrar estas cuentas de servicio y claves sin usar, ya que generan un riesgo de seguridad innecesario.

Busca el uso reciente de una sola cuenta de servicio

Para buscar la última vez en que se usó una 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 la página 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 a la página Explorador de métricas

  3. En el campo Find resource type and metric, establece el tipo de recurso en IAM Service accounts y establece la métrica en Authentication events.

  4. En el campo Filtro, selecciona unique_id y pega el ID numérico único de la cuenta de servicio.

  5. Para facilitar la lectura del gráfico, elige Line o Stacked bar como tipo de trazado.

El evento de autenticación más reciente del gráfico muestra cuándo se usó por última vez la cuenta de servicio.

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.
  • 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 por 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. Puedes usar este objeto timeSeries para determinar cuándo se usó por última vez la cuenta de servicio.

Busca el uso reciente de una sola clave de cuenta de servicio

Si deseas buscar la última vez en que se usó una 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

    1. Selecciona el proyecto que contiene la cuenta de servicio asociada con la clave.
    2. Haz clic en la dirección de correo electrónico de la cuenta de servicio asociada con la clave.
    3. En la sección Claves en la página, busca y copia el ID de 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 genera una lista de 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: Es el ID de tu proyecto de Google Cloud.
    • 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 encontrar 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 a la página Explorador de métricas

  2. En el campo Find resource type and metric, establece el tipo de recurso en IAM Service accounts y establece la métrica en Key authentication events.

  3. En el campo Filtro, selecciona keyid y, luego, ingresa el ID único de la clave de cuenta de servicio.

  4. Para facilitar la lectura del gráfico, elige Line o Stacked bar como tipo de trazado.

El evento de autenticación más reciente del gráfico muestra cuándo se usó por última vez la clave de cuenta de servicio.

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.
  • 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 por 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. Puedes usar este objeto timeSeries para determinar cuándo se usó por última vez la clave de cuenta de servicio.

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