Administra estadísticas

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.

La administración de identidades y accesos (IAM) proporciona los siguientes tipos de estadísticas:

  • Estadísticas de políticas: Hallazgos basados en el AA sobre el uso de permisos dentro del proyecto
  • Estadísticas de cuentas de servicio: Hallazgos sobre las cuentas de servicio en el proyecto, como las cuentas de servicio que no se usaron en los últimos 90 días

Antes de comenzar

Permisos necesarios

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

Permisos para ver las estadísticas

Para ver las estadísticas, necesitas una función que incluya los siguientes permisos, en los que insight-type es iamPolicyInsights o iamServiceAccountInsights:

  • recommender.insight-type.get
  • recommender.insight-type.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, necesitas una función que incluya los siguientes permisos, en los que insight-type es iamPolicyInsights o iamServiceAccountInsights:

  • recommender.insight-type.get
  • recommender.insight-type.list
  • recommender.insight-type.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

A fin de enumerar todas las estadísticas de un tipo específico para el proyecto, usa uno de los siguientes métodos:

gcloud

Usa el comando gcloud recommender insights list para ver todas las estadísticas de un tipo específico dentro del proyecto.

Reemplaza insight-type-id por el tipo de estadística que deseas enumerar. Usa google.iam.policy.Insight para las estadísticas de políticas y google.iam.serviceAccount.Insight para las estadísticas de cuentas de servicio.

gcloud recommender insights list --insight-type=insight-type-id \
    --location=global

En el resultado, se enumeran todas las estadísticas de un tipo específico dentro del proyecto. Por ejemplo, enumerar todas las estadísticas de políticas para el proyecto genera un resultado similar al siguiente:

INSIGHT_ID                            LOCATION  INSIGHT_TYPE               CATEGORY  INSIGHT_STATE  LAST_REFRESH_TIME
07841f74-02ce-4de8-bbe6-fc4eabb68568  global    google.iam.policy.Insight  SECURITY  ACCEPTED       2020-07-12T07:00:00Z
0d3ce433-f067-4e78-b6ae-03d7d1f6f040  global    google.iam.policy.Insight  SECURITY  ACTIVE         2020-07-13T07:00:00Z
0e2cc488-38fb-4b9b-942c-cfe06a0ab88f  global    google.iam.policy.Insight  SECURITY  ACTIVE         2020-07-13T07:00:00Z
12b557be-d48f-49cf-a0b0-b3b73a178edf  global    google.iam.policy.Insight  SECURITY  ACTIVE         2020-07-13T07:00:00Z
279ef748-408f-44db-9a4a-1ff8865b9839  global    google.iam.policy.Insight  SECURITY  ACTIVE         2020-07-13T07:00:00Z
29a4553d-9ffb-4508-9f13-77f40fc4e8b6  global    google.iam.policy.Insight  SECURITY  ACTIVE         2020-07-13T07:00:00Z
2a00a91a-3e37-4dca-81f7-fb607d18053f  global    google.iam.policy.Insight  SECURITY  ACTIVE         2020-07-13T07:00:00Z
2baea818-df89-4ab3-8a48-0e752459d816  global    google.iam.policy.Insight  SECURITY  ACTIVE         2020-07-13T07:00:00Z
4a59da9d-cde8-46cc-9c68-6980487175fb  global    google.iam.policy.Insight  SECURITY  ACTIVE         2020-07-13T07:00:00Z
78fee8d9-c25c-4070-9f1b-ae5e4a4a164b  global    google.iam.policy.Insight  SECURITY  ACTIVE         2020-07-13T07:00:00Z

REST

El método insights.list de la API de recomendador genera una lista de todas las estadísticas de un tipo específico dentro del proyecto.

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
  • insight-type-id: El tipo de estadística que deseas enumerar. Para las estadísticas de políticas, usa google.iam.policy.Insight. Para las estadísticas de cuentas de servicio, usa google.iam.serviceAccount.Insight

Método HTTP y URL:

GET https://recommender.googleapis.com/v1/projects/project-id/locations/global/insightTypes/insight-type-id/insights

Para enviar tu solicitud, expande una de estas opciones:

En la respuesta, se enumeran todas las estadísticas de un tipo específico dentro del proyecto. Por ejemplo, podría enumerar todas las estadísticas de políticas en el proyecto:

{
  "insights": [
    {
      "name": "projects/1234567890/locations/global/insightTypes/google.iam.policy.Insight/insights/07841f74-02ce-4de8-bbe6-fc4eabb68568",
      "description": "0 permission checks were authorized by this policy binding tuple.",
      "content": {
        "role": "roles/viewer",
        "member": "serviceAccount:my-service-account@my-project.iam.gserviceaccount.com",
        "condition": {
          "expression": "",
          "title": "",
          "description": "",
          "location": ""
        },
        "exercisedPermissions": [],
        "inferredPermissions": []
      },
      "lastRefreshTime": "2020-07-12T07:00:00Z",
      "observationPeriod": "7776000s",
      "stateInfo": {
        "state": "ACTIVE"
      },
      "category": "SECURITY",
      "associatedRecommendations": [
        {
          "recommendation": "projects/1234567890/locations/global/recommenders/google.iam.policy.Recommender/recommendations/b1932220-867d-43d1-bd74-fb95876ab656"
        }
      ],
      "targetResources": [
        "//cloudresourcemanager.googleapis.com/projects/1234567890"
      ],
      "insightSubtype": "PERMISSIONS_USAGE",
      "etag": "\"b153ab487e4ae100\""
    },
    {
      "name": "projects/1234567890/locations/global/insightTypes/google.iam.policy.Insight/insights/f4292f55-105b-4744-9dc3-fcacf59685bb",
      "description": "4 permission checks were authorized by this policy binding tuple.",
      "content": {
        "role": "roles/owner",
        "member": "serviceAccount:my-service-account2@my-project.iam.gserviceaccount.com",
        "condition": {
          "expression": "",
          "title": "",
          "description": "",
          "location": ""
        },
        "exercisedPermissions": [
          {
            "permission": "iam.roles.create"
          },
          {
            "permission": "iam.roles.delete"
          },
          {
            "permission": "iam.roles.list"
          },
          {
            "permission": "iam.roles.update"
          }
        ],
        "inferredPermissions": []
      },
      "lastRefreshTime": "2020-07-12T07:00:00Z",
      "observationPeriod": "7776000s",
      "stateInfo": {
        "state": "ACTIVE"
      },
      "category": "SECURITY",
      "associatedRecommendations": [
        {
          "recommendation": "projects/1234567890/locations/global/recommenders/google.iam.policy.Recommender/recommendations/6ab16c1d-edce-45e5-8d82-570fdd49892a"
        }
      ],
      "targetResources": [
        "//cloudresourcemanager.googleapis.com/projects/1234567890"
      ],
      "insightSubtype": "PERMISSIONS_USAGE",
      "etag": "\"49bb705553338fc3\""
    }
  ]
}

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

Obtén una sola estadística

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.

Antes de usar esta muestra, realiza los siguientes reemplazos:

  • insight-id: El ID de la estadística que deseas ver. Para encontrar el ID, enumera las estadísticas en el proyecto

  • insight-type-id: El tipo de estadística que deseas ver. Usa google.iam.policy.Insight para las estadísticas de políticas y google.iam.serviceAccount.Insight para las estadísticas de cuentas de servicio

gcloud recommender insights describe insight-id \
    --insight-type=insight-type-id --location=global

En el resultado, se muestra la estadística en detalle. Por ejemplo, la siguiente estadística indica que my-service-account@my-project.iam.gserviceaccount.com usó cero permisos de la función de visualizador (roles/viewer) en los últimos 90 días:

associatedRecommendations:
- recommendation: projects/1234567890/locations/global/recommenders/google.iam.policy.Recommender/recommendations/0573b702-96a5-4622-a916-c762e7b0731f
category: SECURITY
content:
  condition:
    description: ''
    expression: ''
    location: ''
    title: ''
  exercisedPermissions: []
  inferredPermissions: []
  member: serviceAccount:my-service-account@my-project.iam.gserviceaccount.com
  role: roles/viewer
description: 0 permission checks were authorized by this policy binding tuple.
etag: '"d3cdec23cc712bd0"'
insightSubtype: PERMISSIONS_USAGE
lastRefreshTime: '2020-07-11T07:00:00Z'
name: projects/1234567890/locations/global/insightTypes/google.iam.policy.Insight/insights/0d3ce433-f067-4e78-b6ae-03d7d1f6f040
observationPeriod: 7776000s
stateInfo:
  state: ACTIVE
targetResources:
- //cloudresourcemanager.googleapis.com/projects/1234567890

Para obtener más información sobre los componentes de una estadística, consulta: Revisa las estadísticas 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 de Google Cloud
  • insight-type-id: El tipo de estadística que deseas ver. Para las estadísticas de políticas, usa google.iam.policy.Insight. Para las estadísticas de cuentas de servicio, usa google.iam.serviceAccount.Insight
  • insight-id: El ID de la estadística que deseas ver. Para encontrar el ID, enumera las estadísticas en el proyecto. 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/insight-type-id/insights/insight-id

Para enviar tu solicitud, expande una de estas opciones:

La respuesta contiene las estadísticas. Por ejemplo:

{
  "name": "projects/1234567890/locations/global/insightTypes/google.iam.policy.Insight/insights/07841f74-02ce-4de8-bbe6-fc4eabb68568",
  "description": "0 permission checks were authorized by this policy binding tuple.",
  "content": {
    "role": "roles/viewer",
    "member": "serviceAccount:my-service-account@my-project.iam.gserviceaccount.com",
    "condition": {
      "expression": "",
      "title": "",
      "description": "",
      "location": ""
    },
    "exercisedPermissions": [],
    "inferredPermissions": []
  },
  "lastRefreshTime": "2020-07-12T07:00:00Z",
  "observationPeriod": "7776000s",
  "stateInfo": {
    "state": "ACTIVE"
  },
  "category": "SECURITY",
  "associatedRecommendations": [
    {
      "recommendation": "projects/1234567890/locations/global/recommenders/google.iam.policy.Recommender/recommendations/b1932220-867d-43d1-bd74-fb95876ab656"
    }
  ],
  "targetResources": [
    "//cloudresourcemanager.googleapis.com/projects/1234567890"
  ],
  "insightSubtype": "PERMISSIONS_USAGE",
  "etag": "\"b153ab487e4ae100\""
}

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

Revisa las estadísticas

Las estadísticas se dividen en tipos y subtipos. Los tipos de estadísticas te indican para qué tipo de recurso está destinada la estadística. Los subtipos de estadísticas te indican qué tipo de información contiene la estadística.

IAM ofrece los siguientes tipos y subtipos de estadísticas:

Tipo de estadística Subtipo de estadística
Estadísticas de políticas PERMISSION_USAGE: Hallazgos basados en el AA sobre el uso de permisos dentro del proyecto
Estadísticas de cuentas de servicio SERVICE_ACCOUNT_USAGE: Hallazgos sobre qué cuentas de servicio del proyecto no se usaron en los últimos 90 días

El subtipo determina el contenido de una estadística. Los subtipos de estadísticas enumerados en la tabla anterior tienen los siguientes componentes:

  • 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 PERMISSION_USAGE y SERVICE_ACCOUNT_USAGE siempre es SECURITY.
  • content: El subtipo de estadística determina la información del campo content:

    Subtipo de estadística Contenido
    PERMISSION_USAGE

    Informa el uso de los permisos de un miembro para una función específica. En este campo, se encuentran los siguientes componentes:

    • member: El miembro cuyo uso de permisos se analizó
    • role: La función para la cual se analizó el uso de permisos
    • condition: Cualquier condición relacionada con la vinculación que otorga la función al miembro. Si no hay condiciones, este campo contiene una condición vacía
    • exercisedPermissions: Los permisos en la función que el miembro usó durante el período de observación
    • inferredPermissions: Los permisos en la función que el recomendador de IAM determinó a través del AA, que es probable que el miembro necesite según los permisos que ejerció
    SERVICE_ACCOUNT_USAGE

    Informa la última vez que se autenticó la cuenta de servicio. En este campo, se encuentran los siguientes componentes:

    • serviceAccountId: El ID numérico único de la cuenta de servicio
    • email: 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á
  • description: Un resumen legible de la estadística

  • etag: Una huella digital única que identifica 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 ETags 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, que es PERMISSION_USAGE o SERVICE_ACCOUNT_USAGE

  • 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/insight-type-id/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-type-id: El tipo de estadística. Las estadísticas de políticas tienen el tipo google.iam.policy.Insight. Las estadísticas de cuentas de servicio tienen el tipo google.iam.serviceAccount.Insight
    • 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: El nombre completo del recurso del proyecto de Google Cloud para el que se creó la estadística. Por ejemplo: //cloudresourcemanager.googleapis.com/projects/1234567890

Califica una estadística 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.

Antes de usar el comando de muestra, reemplaza los siguientes valores:

  • insight-id: El ID de la estadística que deseas marcar como ACCEPTED. Para encontrar el ID, enumera las estadísticas en el proyecto

  • insight-type-id: El tipo de estadística que deseas marcar como ACCEPTED. Para las estadísticas de políticas, usa google.iam.policy.Insight. Para las estadísticas de cuentas de servicio, usa google.iam.serviceAccount.Insight

  • 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=insight-type-id --location=global \
    --etag=etag

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

associatedRecommendations:
- recommendation: projects/1234567890/locations/global/recommenders/google.iam.policy.Recommender/recommendations/0573b702-96a5-4622-a916-c762e7b0731f
category: SECURITY
content:
  condition:
    description: ''
    expression: ''
    location: ''
    title: ''
  exercisedPermissions: []
  inferredPermissions: []
  member: serviceAccount:my-service-account@my-project.iam.gserviceaccount.com
  role: roles/viewer
description: 0 permission checks were authorized by this policy binding tuple.
etag: '"d3cdec23cc712bd0"'
insightSubtype: PERMISSIONS_USAGE
lastRefreshTime: '2020-07-11T07:00:00Z'
name: projects/1234567890/locations/global/insightTypes/google.iam.policy.Insight/insights/0d3ce433-f067-4e78-b6ae-03d7d1f6f040
observationPeriod: 7776000s
stateInfo:
  state: ACCEPTED
targetResources:
- //cloudresourcemanager.googleapis.com/projects/1234567890

Para saber más sobre la información de estado de una estadística, consulta Revisa las estadísticas 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 de Google Cloud
  • insight-type-id: El tipo de estadística que deseas marcar como ACCEPTED. Para las estadísticas de políticas, usa google.iam.policy.Insight. Para las estadísticas de cuentas de servicio, usa google.iam.serviceAccount.Insight
  • insight-id: El ID de la estadística que deseas marcar como ACCEPTED. Para encontrar el ID, enumera las estadísticas en el proyecto. 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/insight-type-id/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/1234567890/locations/global/insightTypes/google.iam.policy.Insight/insights/07841f74-02ce-4de8-bbe6-fc4eabb68568",
  "description": "0 permission checks were authorized by this policy binding tuple.",
  "content": {
    "role": "roles/viewer",
    "member": "serviceAccount:my-service-account@my-project.iam.gserviceaccount.com",
    "condition": {
      "expression": "",
      "title": "",
      "description": "",
      "location": ""
    },
    "exercisedPermissions": [],
    "inferredPermissions": []
  },
  "lastRefreshTime": "2020-07-12T07:00:00Z",
  "observationPeriod": "7776000s",
  "stateInfo": {
    "state": "ACCEPTED"
    },
  "category": "SECURITY",
  "associatedRecommendations": [
    {
      "recommendation": "projects/1234567890/locations/global/recommenders/google.iam.policy.Recommender/recommendations/b1932220-867d-43d1-bd74-fb95876ab656"
    }
  ],
  "targetResources": [
    "//cloudresourcemanager.googleapis.com/projects/1234567890"
  ],
  "insightSubtype": "PERMISSIONS_USAGE",
  "etag": "\"b153ab487e4ae100\""
}

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

Próximos pasos