Administra las estadísticas de la cuenta de servicio

Además de proporcionar recomendaciones, el recomendador usa el aprendizaje automático (AA) para proporcionar estadísticas detalladas. Las estadísticas son hallazgos que destacan patrones notables en el uso de recursos. Por ejemplo, puedes recopilar información adicional sobre el uso de permisos en el proyecto o identificar cuentas de servicio sin usar. Algunas estadísticas también se vinculan a recomendaciones, ya que las estadísticas proporcionan evidencia para ellas.

IAM ofrece varios tipos diferentes de estadísticas. En esta página, se muestra cómo administrar las estadísticas de la cuenta de servicio (google.iam.serviceAccount.Insight), que son resultados sobre las cuentas de servicio de tu proyecto que no se usaron en los últimos 90 días.

Antes de comenzar

Permisos necesarios

Los permisos necesarios para usar las estadísticas de la cuenta de servicio varían según lo que desees hacer.

Permisos para ver las estadísticas

Para ver las estadísticas de la cuenta de servicio, necesitas una función que incluya los siguientes permisos:

  • recommender.iamServiceAccountinsights.get
  • recommender.iamServiceAccountinsights.list

Para obtener estos permisos y seguir el principio de privilegio mínimo, pídele a tu administrador que te otorgue una de las siguientes funciones:

  • Visualizador del recomendador de IAM (roles/recommender.iamViewer)
  • Revisor de seguridad de IAM (roles/iam.securityReviewer)

Como alternativa, el administrador puede otorgarte una función diferente con los permisos necesarios, como una función personalizada o una función predefinida con más permisos.

Permisos para modificar las estadísticas

Para modificar las estadísticas de la cuenta de servicio, necesitas una función que incluya los siguientes permisos:

  • recommender.iamServiceAccountinsights.get
  • recommender.iamServiceAccountinsights.list
  • recommender.iamServiceAccountinsights.update

Para obtener estos permisos y seguir el principio de privilegio mínimo, pídele a tu administrador que te otorgue la función de administrador del recomendador de IAM (roles/recommender.iamAdmin).

Como alternativa, el administrador puede otorgarte una función diferente con los permisos necesarios, como una función personalizada o una función predefinida con más permisos.

Enumera estadísticas de cuentas de servicio

Para enumerar todas las estadísticas de la cuenta de servicio de tu proyecto, usa uno de los siguientes métodos:

gcloud

Usa el comando gcloud recommender insights list para ver todas las estadísticas de la cuenta de servicio de tu proyecto.

Antes de ejecutar el comando, reemplaza los siguientes valores:

  • PROJECT_ID: el ID del proyecto para el que deseas enumerar las estadísticas.
gcloud recommender insights list --insight-type=google.iam.serviceAccount.Insight \
    --project=PROJECT_ID \
    --location=global

En el resultado, se enumeran todas las estadísticas de la cuenta de servicio del proyecto. Por ejemplo:

INSIGHT_ID                            LOCATION  INSIGHT_TYPE                       CATEGORY  INSIGHT_STATE  LAST_REFRESH_TIME
446303ba-2a14-49cc-b9fa-e2d2499d4f82  global    google.iam.serviceAccount.Insight  SECURITY  ACTIVE         2021-04-18T07:00:00Z
4cfd82c3-7320-4dc6-9b67-ca0756bbd54c  global    google.iam.serviceAccount.Insight  SECURITY  ACTIVE         2021-04-18T07:00:00Z
52ce7097-6787-41cd-91e9-9248147ecfaf  global    google.iam.serviceAccount.Insight  SECURITY  ACTIVE         2021-04-18T07:00:00Z
54abdb81-a7d9-4733-988b-c0e499c6d715  global    google.iam.serviceAccount.Insight  SECURITY  ACTIVE         2021-04-18T07:00:00Z
a922dd59-df0a-422d-a2a4-096195e1dae5  global    google.iam.serviceAccount.Insight  SECURITY  ACTIVE         2021-04-18T07:00:00Z

REST

Con el método insights.list de la API de recomendador, se enumeran todas las estadísticas de la cuenta de servicio del proyecto.

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

  • PROJECT_ID: el ID del proyecto para el que deseas enumerar las estadísticas.

Método HTTP y URL:

GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/global/insightTypes/google.iam.serviceAccount.Insight/insights

Para enviar tu solicitud, expande una de estas opciones:

En la respuesta, se enumeran todas las estadísticas de la cuenta de servicio de tu proyecto. Por ejemplo:

{
  "insights": [
    {
      "name": "projects/123456789012/locations/global/insightTypes/google.iam.serviceAccount.Insight/insights/446303ba-2a14-49cc-b9fa-e2d2499d4f82",
      "description": "Service account my-service-account@my-project.iam.gserviceaccount.com was inactive.",
      "content": {
        "serviceAccountId": "103185812403937829397",
        "email": "my-service-account@my-project.iam.gserviceaccount.com",
        "lastAuthenticatedTime": "2020-09-11T07:00:00Z"
      },
      "lastRefreshTime": "2021-04-18T07:00:00Z",
      "observationPeriod": "19008000s",
      "stateInfo": {
        "state": "ACTIVE"
      },
      "category": "SECURITY",
      "targetResources": [
        "//cloudresourcemanager.googleapis.com/projects/123456789012"
      ],
      "insightSubtype": "SERVICE_ACCOUNT_USAGE",
      "etag": "\"9d797dd04263c855\""
    },
    {
      "name": "projects/123456789012/locations/global/insightTypes/google.iam.serviceAccount.Insight/insights/4cfd82c3-7320-4dc6-9b67-ca0756bbd54c",
      "description": "Service account my-service-account2@my-project.iam.gserviceaccount.com was inactive.",
      "content": {
        "serviceAccountId": "105496400997178042131",
        "email": "my-service-account2@my-project.iam.gserviceaccount.com"
      },
      "lastRefreshTime": "2021-04-18T07:00:00Z",
      "observationPeriod": "16070400s",
      "stateInfo": {
        "state": "ACTIVE"
      },
      "category": "SECURITY",
      "targetResources": [
        "//cloudresourcemanager.googleapis.com/projects/123456789012"
      ],
      "insightSubtype": "SERVICE_ACCOUNT_USAGE",
      "etag": "\"783a32b635d79a4e\""
    }
  ]
}

Para obtener más información sobre los componentes de una estadística, consulta: Revisa las estadísticas de la cuenta de servicio en esta página.

Obtén una sola estadística de cuenta de servicio

Para obtener más información sobre una sola estadística, incluida la descripción, el estado y las recomendaciones asociadas, usa uno de los siguientes métodos:

gcloud

Usa el comando gcloud recommender insights describe con tu ID de estadística para ver información sobre una sola estadística de IAM.

  • INSIGHT_ID: El ID de la estadística que deseas ver. Para encontrar el ID, enumera las estadísticas en el proyecto.
  • PROJECT_ID: El ID del proyecto para el que deseas administrar las estadísticas
gcloud recommender insights describe INSIGHT_ID \
    --insight-type=google.iam.serviceAccount.Insight \
    --project=PROJECT_ID \
    --location=global

En el resultado, se muestra la estadística en detalle. Por ejemplo, la siguiente estadística indica que la cuenta de servicio my-service-account@my-project.iam.gserviceaccount.com no se autenticó desde el 11 de octubre de 2020.

category: SECURITY
content:
  email: my-service-account@my-project.iam.gserviceaccount.com
  lastAuthenticatedTime: '2020-10-11T07:00:00Z'
  serviceAccountId: '103185812403937829397'
description: Service account my-service-account@my-project.iam.gserviceaccount.com
  was inactive.
etag: '"9d797dd04263c855"'
insightSubtype: SERVICE_ACCOUNT_USAGE
lastRefreshTime: '2021-04-18T07:00:00Z'
name: projects/123456789012/locations/global/insightTypes/google.iam.serviceAccount.Insight/insights/446303ba-2a14-49cc-b9fa-e2d2499d4f82
observationPeriod: 19008000s
stateInfo:
  state: ACTIVE
targetResources:
- //cloudresourcemanager.googleapis.com/projects/123456789012

Para obtener más información sobre los componentes de una estadística, consulta: Revisa las estadísticas de la cuenta de servicio en esta página.

REST

Con el método insights.get de la API de recomendador, se obtiene una sola estadística.

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

  • PROJECT_ID: el ID del proyecto para el que deseas administrar las estadísticas.
  • INSIGHT_ID: El ID de la estadística que deseas ver. Si no conoces el ID de estadística, puedes enumerar las estadísticas en tu proyecto para encontrarlo. El ID de una estadística es todo lo que se encuentra después de insights/ en el campo name de la estadística

Método HTTP y URL:

GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/global/insightTypes/google.iam.serviceAccount.Insight/insights/INSIGHT_ID

Para enviar tu solicitud, expande una de estas opciones:

La respuesta contiene las estadísticas. Por ejemplo, la siguiente estadística indica que la cuenta de servicio my-service-account@my-project.iam.gserviceaccount.com no se autenticó desde el 11 de octubre de 2020.

{
  "name": "projects/123456789012/locations/global/insightTypes/google.iam.serviceAccount.Insight/insights/446303ba-2a14-49cc-b9fa-e2d2499d4f82",
  "description": "Service account my-service-account@my-project.iam.gserviceaccount.com was inactive.",
  "content": {
    "serviceAccountId": "103185812403937829397",
    "email": "my-service-account@my-project.iam.gserviceaccount.com",
    "lastAuthenticatedTime": "2020-09-11T07:00:00Z"
  },
  "lastRefreshTime": "2021-04-18T07:00:00Z",
  "observationPeriod": "19008000s",
  "stateInfo": {
    "state": "ACTIVE"
  },
  "category": "SECURITY",
  "targetResources": [
    "//cloudresourcemanager.googleapis.com/projects/123456789012"
  ],
  "insightSubtype": "SERVICE_ACCOUNT_USAGE",
  "etag": "\"9d797dd04263c855\""
}

Para obtener más información sobre los componentes de una estadística, consulta: Revisa las estadísticas de la cuenta de servicio en esta página.

Revisa las estadísticas de la cuenta de servicio

Después de obtener una sola estadística, puedes revisar su contenido para comprender el patrón de uso de recursos que destaca.

Los subtipos determinan el contenido de una estadística. Las estadísticas de la cuenta de servicio (google.iam.serviceAccount.Insight) admiten estadísticas con el subtipo SERVICE_ACCOUNT_USAGE.

Las estadísticas de SERVICE_ACCOUNT_USAGE tienen los siguientes componentes (en cualquier orden):

  • associatedRecommendations: Los identificadores de cualquier recomendación asociada con la estadística. Si no hay recomendaciones asociadas con la estadística, este campo estará vacío.
  • category: La categoría de las estadísticas de SECURITY y siempre es .
  • content: Informa la última vez que se autenticó la cuenta de servicio. En este campo, se encuentran los siguientes componentes:

    • email: Es la dirección de correo electrónico de la cuenta de servicio.
    • lastAuthenticatedTime: La hora más reciente en que la cuenta de servicio se autenticó. Si la cuenta de servicio no tiene ninguna autenticación registrada, este campo no se incluirá
    • serviceAccountId: Es el ID numérico único de la cuenta de servicio.
  • description: Un resumen legible de la estadística
  • etag: un identificador único para el estado actual de una estadística. Cada vez que se modifica la estadística, se asigna un valor etag nuevo

    Para cambiar el estado de una estadística, debes proporcionar la etag de la estadística existente. Usar etag ayuda a garantizar que cualquier operación se realice solo si la estadística no cambió desde la última recuperación.

  • insightSubtype: el subtipo de estadística.
  • lastRefreshTime: La fecha en la que se actualizó la estadística por última vez, lo que indica la actualidad de los datos que se usaron para generar la estadística
  • name: El nombre de la estadística, en el siguiente formato:

    projects/PROJECT_ID/locations/global/insightTypes/google.iam.serviceAccount.Insight/insights/INSIGHT_ID

    Los marcadores de posición tienen los siguientes valores:

    • PROJECT_ID: El ID del proyecto en el que se generó la estadística
    • INSIGHT_ID: Un ID único para la estadística
  • observationPeriod: El período hasta llegar a la estadística. Los datos de origen que se usaron para generar la estadística finalizan en lastRefreshTime y comienzan en lastRefreshTime menos observationPeriod
  • stateInfo: Las estadísticas atraviesan varias transiciones de estado después de la propuesta:

    • ACTIVE: Se generó la estadística, pero no se realizó ninguna acción o se realizó una acción sin actualizar el estado de la estadística. Las estadísticas activas se actualizan cuando cambian los datos subyacentes.
    • ACCEPTED: Se realizaron acciones en función de la estadística. Se aceptan las estadísticas cuando una recomendación asociada se marcó como CLAIMED, SUCCEEDED o FAILED, o la estadística se aceptó directamente. Cuando una estadística se encuentra en el estado ACCEPTED, el contenido de la estadística no puede cambiar. Las estadísticas aceptadas se conservan durante 90 días después de su aceptación.
  • targetResources: Es el nombre completo del recurso del proyecto para el que se creó la estadística. Por ejemplo, //cloudresourcemanager.googleapis.com/projects/1234567890.

Marca una estadística de cuenta de servicio como ACCEPTED

Si realizas acciones basadas en una estadística activa, puedes marcar esa estadística como ACCEPTED. El estado ACCEPTED le indica a la API de recomendador que realizaste acciones basadas en esta estadística, lo que ayuda a definir mejor las recomendaciones.

Las estadísticas aceptadas se conservan durante 90 días después de que se marcan como ACCEPTED.

gcloud

Usa el comando gcloud recommender insights mark-accepted con el ID de estadística para marcar una estadística como ACCEPTED.

  • INSIGHT_ID: El ID de la estadística que deseas ver. Para encontrar el ID, enumera las estadísticas en el proyecto.
  • PROJECT_ID: El ID del proyecto para el que deseas administrar las estadísticas
  • ETAG: Un identificador para una versión de la estadística. Para obtener la etag, haz lo siguiente:

    1. Obtén la estadística mediante el comando gcloud recommender insights describe.
    2. Busca y copia el valor etag del resultado, incluidas las comillas delimitantes. Por ejemplo, "d3cdec23cc712bd0"
gcloud recommender insights mark-accepted INSIGHT_ID \
    --insight-type=google.iam.serviceAccount.Insight \
    --project=PROJECT_ID \
    --location=global \
    --etag=ETAG

En el resultado, se muestra la estadística, ahora con el estado ACCEPTED:

category: SECURITY
content:
  email: my-service-account@my-project.iam.gserviceaccount.com
  lastAuthenticatedTime: '2020-10-11T07:00:00Z'
  serviceAccountId: '103185812403937829397'
description: Service account my-service-account@my-project.iam.gserviceaccount.com
  was inactive.
etag: '"39c4199dcec92848"'
insightSubtype: SERVICE_ACCOUNT_USAGE
lastRefreshTime: '2021-04-18T07:00:00Z'
name: projects/123456789012/locations/global/insightTypes/google.iam.serviceAccount.Insight/insights/446303ba-2a14-49cc-b9fa-e2d2499d4f82
observationPeriod: 19008000s
stateInfo:
  state: ACCEPTED
targetResources:
- //cloudresourcemanager.googleapis.com/projects/123456789012

Para obtener más información sobre la información de estado de una estadística, consulta Revisa las estadísticas de la cuenta de servicio en esta página.

REST

Mediante el método insights.markAccepted de la API de recomendador, se marca una estadística como ACCEPTED.

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

  • PROJECT_ID: el ID del proyecto para el que deseas administrar las estadísticas.
  • INSIGHT_ID: El ID de la estadística que deseas ver. Si no conoces el ID de estadística, puedes enumerar las estadísticas en tu proyecto para encontrarlo. El ID de una estadística es todo lo que se encuentra después de insights/ en el campo name de la estadística
  • ETAG: Un identificador para una versión de la estadística. Para obtener la etag, haz lo siguiente:
    1. Obtén la estadística mediante el método insights.get.
    2. Busca y copia el valor etag de la respuesta.

Método HTTP y URL:

POST https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/global/insightTypes/google.iam.serviceAccount.Insight/insights/INSIGHT_ID:markAccepted

Cuerpo JSON de la solicitud:

{
  "etag": "ETAG"
}

Para enviar tu solicitud, expande una de estas opciones:

La respuesta contiene la estadística, ahora con el estado ACCEPTED:

{
  "name": "projects/123456789012/locations/global/insightTypes/google.iam.serviceAccount.Insight/insights/446303ba-2a14-49cc-b9fa-e2d2499d4f82",
  "description": "Service account my-service-account@my-project.iam.gserviceaccount.com was inactive.",
  "content": {
    "serviceAccountId": "103185812403937829397",
    "email": "my-service-account@my-project.iam.gserviceaccount.com",
    "lastAuthenticatedTime": "2020-10-11T07:00:00Z"
  },
  "lastRefreshTime": "2021-04-18T07:00:00Z",
  "observationPeriod": "19008000s",
  "stateInfo": {
    "state": "ACCEPTED"
    },
  "category": "SECURITY",
  "targetResources": [
    "//cloudresourcemanager.googleapis.com/projects/123456789012"
  ],
  "insightSubtype": "SERVICE_ACCOUNT_USAGE",
  "etag": "\"39c4199dcec92848\""
}

Para obtener más información sobre la información de estado de una estadística, consulta Revisa las estadísticas de la cuenta de servicio en esta página.

¿Qué sigue?