Consultar estadísticas de políticas de conjuntos de datos de BigQuery

En esta página se explica cómo gestionar las estadísticas de políticas a nivel de conjunto de datos, que son conclusiones basadas en aprendizaje automático sobre el uso de permisos de tus conjuntos de datos de BigQuery. Las estadísticas de políticas pueden ayudarte a identificar qué principales tienen permisos que no necesitan.

En esta página se explica cómo obtener información valiosa sobre las políticas de los conjuntos de datos. Recomendador también ofrece estadísticas de políticas para los siguientes tipos de recursos:

En ocasiones, las estadísticas de políticas a nivel de conjunto de datos están vinculadas a recomendaciones de roles. Las recomendaciones de roles sugieren acciones que puedes llevar a cabo para solucionar los problemas identificados por las estadísticas de políticas a nivel de conjunto de datos.

Antes de empezar

Roles obligatorios

Para obtener los permisos que necesitas para gestionar las estadísticas de políticas a nivel de conjunto de datos, pide a tu administrador que te conceda los siguientes roles de IAM en tu proyecto:

  • Propietario de datos de BigQuery (`roles/bigquery.dataOwner`)
  • Administrador del recomendador de gestión de identidades y accesos (`roles/recommender.iamAdmin`)
  • Gestiona las estadísticas de las políticas a nivel de conjunto de datos con la CLI de gcloud o la API REST: Consumidor de uso de servicios (`roles/serviceusage.serviceUsageConsumer`)

Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

Estos roles predefinidos contienen los permisos necesarios para gestionar las estadísticas de políticas a nivel de conjunto de datos. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:

Permisos obligatorios

Para gestionar las estadísticas de las políticas a nivel de conjunto de datos, se necesitan los siguientes permisos:

  • Para ver estadísticas de políticas a nivel de conjunto de datos, sigue estos pasos:
    • recommender.iamPolicyInsights.get
    • recommender.iamPolicyInsights.list
  • Modificar las estadísticas de las políticas a nivel de conjunto de datos: recommender.iamPolicyInsights.update
  • Gestiona las estadísticas de las políticas a nivel de conjunto de datos con la CLI de gcloud o la API REST: serviceusage.services.use

También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.

Mostrar estadísticas de políticas a nivel de conjunto de datos

Para enumerar todas las estadísticas de políticas a nivel de conjunto de datos de tu proyecto, utiliza uno de los siguientes métodos:

gcloud

Usa el comando gcloud recommender insights list para ver todos los consejos sobre políticas a nivel de conjunto de datos de tu proyecto.

Antes de ejecutar el comando, sustituye los siguientes valores:

  • PROJECT_ID: ID del proyecto del que quieres obtener una lista de estadísticas.
  • LOCATION: la ubicación de los conjuntos de datos de los que quieres obtener estadísticas.
gcloud recommender insights list --insight-type=google.iam.policy.Insight \
    --project=PROJECT_ID \
    --location=LOCATION\
    --filter="insightSubtype:PERMISSIONS_USAGE_BIGQUERY_DATASET"

En la salida se muestran todos los valiosos datos de las políticas a nivel de conjunto de datos de tu proyecto en la ubicación especificada. Por ejemplo:

INSIGHT_ID                            CATEGORY  INSIGHT_STATE  LAST_REFRESH_TIME     SEVERITY  INSIGHT_SUBTYPE                     DESCRIPTION
101d03ad-6148-4628-943e-fcf1a3af6b57  SECURITY  ACTIVE         2024-02-02T08:00:00Z  LOW       PERMISSIONS_USAGE_BIGQUERY_DATASET  0 of the permissions in this role binding were used in the past 90 days.
15133dd9-4cbc-41e9-8990-b189241676d8  SECURITY  ACTIVE         2024-02-02T08:00:00Z  LOW       PERMISSIONS_USAGE_BIGQUERY_DATASET  0 of the permissions in this role binding were used in the past 90 days.
1590aeae-d5bf-4e3d-b7d5-e230212f5faf  SECURITY  ACTIVE         2024-02-02T08:00:00Z  LOW       PERMISSIONS_USAGE_BIGQUERY_DATASET  4 of the permissions in this role binding were used in the past 90 days.
280e5a14-4d09-4ac6-8e14-be7407611ad7  SECURITY  ACTIVE         2024-02-02T08:00:00Z  LOW       PERMISSIONS_USAGE_BIGQUERY_DATASET  0 of the permissions in this role binding were used in the past 90 days.
34102078-085f-45d3-ae72-81da16c75781  SECURITY  ACTIVE         2024-02-02T08:00:00Z  LOW       PERMISSIONS_USAGE_BIGQUERY_DATASET  10 of the permissions in this role binding were used in the past 90 days.

REST

El método insights.list de la API Recommender muestra todos los detalles de la política a nivel de conjunto de datos de tu proyecto.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: ID del proyecto del que quieres obtener una lista de estadísticas.
  • LOCATION: la ubicación de los conjuntos de datos de los que quieres obtener estadísticas.

Método HTTP y URL:

GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/insightTypes/google.iam.policy.Insight/insights?filter=insightSubtype%20%3D%20PERMISSIONS_USAGE_BIGQUERY_DATASET

Para enviar tu solicitud, despliega una de estas opciones:

La respuesta muestra todos los insights de políticas a nivel de conjunto de datos de tu proyecto en la ubicación especificada. Por ejemplo:

{
  "insights": [
    {
      "name": "projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/101d03ad-6148-4628-943e-fcf1a3af6b57",
      "description": "0 of the permissions in this role binding were used in the past 90 days.",
      "content": {
        "role": "roles/bigquery.dataEditor",
        "member": "projectEditor:my-project",
        "condition": {
          "expression": "",
          "title": "",
          "description": "",
          "location": ""
        },
        "exercisedPermissions": [],
        "inferredPermissions": [],
        "currentTotalPermissionsCount": "37"
      },
      "lastRefreshTime": "2024-02-02T08:00:00Z",
      "observationPeriod": "7779600s",
      "stateInfo": {
        "state": "ACTIVE"
      },
      "category": "SECURITY",
      "associatedRecommendations": [
        {
          "recommendation": "projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/9327f952-1ceb-488e-9e49-f17eb21f6e5e"
        }
      ],
      "targetResources": [
        "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1"
      ],
      "insightSubtype": "PERMISSIONS_USAGE_BIGQUERY_DATASET",
      "etag": "\"35d4af47524d3f0c\"",
      "severity": "LOW"
    },
    {
      "name": "projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/15133dd9-4cbc-41e9-8990-b189241676d8",
      "description": "0 of the permissions in this role binding were used in the past 90 days.",
      "content": {
        "role": "roles/bigquery.dataViewer",
        "member": "projectViewer:my-project",
        "condition": {
          "expression": "",
          "title": "",
          "description": "",
          "location": ""
        },
        "exercisedPermissions": [],
        "inferredPermissions": [],
        "currentTotalPermissionsCount": "17"
      },
      "lastRefreshTime": "2024-02-02T08:00:00Z",
      "observationPeriod": "7779600s",
      "stateInfo": {
        "state": "ACTIVE"
      },
      "category": "SECURITY",
      "associatedRecommendations": [
        {
          "recommendation": "projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/bc9b4c28-cc93-4a91-97ea-ff67e3cef1b4"
        }
      ],
      "targetResources": [
        "//bigquery.googleapis.com/projects/my-project/datasets/dataset-2"
      ],
      "insightSubtype": "PERMISSIONS_USAGE_BIGQUERY_DATASET",
      "etag": "\"eafa79df1b329063\"",
      "severity": "LOW"
    }
  ]
}

Para obtener más información sobre los componentes de una estadística, consulta la sección Revisar estadísticas de políticas a nivel de conjunto de datos de esta página.

Obtener una sola estadística de la política a nivel de conjunto de datos

Para obtener más información sobre una estadística concreta, como su descripción, su estado y las recomendaciones asociadas, utilice uno de los siguientes métodos:

gcloud

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

  • INSIGHT_ID: ID de la estadística que quieres ver. Para encontrar el ID, lista las estadísticas de tu proyecto.
  • PROJECT_ID: el ID del proyecto del que quieres gestionar las estadísticas.
  • LOCATION: la ubicación del conjunto de datos del que quieres obtener información valiosa.
gcloud recommender insights describe INSIGHT_ID \
    --insight-type=google.iam.policy.Insight \
    --project=PROJECT_ID \
    --location=LOCATION

El resultado muestra la estadística detallada. Por ejemplo, la siguiente estadística indica que todos los usuarios con el rol Editor en el proyecto my-project (projectEditor:my-project) tienen el rol Editor de datos de BigQuery (roles/bigquery.dataEditor) en el conjunto de datos dataset-1, pero que no se ha usado ninguno de los permisos de ese rol en los últimos 90 días:

associatedRecommendations:
- recommendation: projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/9327f951-1ceb-488e-9e49-f17eb21f6e5e
category: SECURITY
content:
  condition:
    description: ''
    expression: ''
    location: ''
    title: ''
  currentTotalPermissionsCount: '37'
  exercisedPermissions: []
  inferredPermissions: []
  member: projectEditor:my-project
  role: roles/bigquery.dataEditor
description: 0 of the permissions in this role binding were used in the past 90 days.
etag: '"5f2f352a738f7a24"'
insightSubtype: PERMISSIONS_USAGE_BIGQUERY_DATASET
lastRefreshTime: '2024-02-04T08:00:00Z'
name: projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/101d03ad-6148-4628-943e-fcf1a3af6b57
observationPeriod: 7776000s
severity: LOW
stateInfo:
  state: ACTIVE
targetResources:
- //bigquery.googleapis.com/projects/my-project/datasets/dataset-1

Para obtener más información sobre los componentes de una estadística, consulta la sección Revisar estadísticas de políticas a nivel de conjunto de datos de esta página.

REST

El método insights.get de la API Recommender obtiene una sola estadística.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: el ID del proyecto del que quieres gestionar las estadísticas.
  • LOCATION: la ubicación del conjunto de datos del que quieres obtener información valiosa.
  • INSIGHT_ID: el ID de la estadística que quieres ver. Si no sabes cuál es el ID de la estadística, puedes encontrarlo consultando la lista de estadísticas de tu proyecto. El ID de una estadística es todo lo que hay 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/LOCATION/insightTypes/google.iam.policy.Insight/insights/INSIGHT_ID

Para enviar tu solicitud, despliega una de estas opciones:

La respuesta contiene la estadística. Por ejemplo, la siguiente estadística indica que todos los usuarios con el rol Editor en el proyecto my-project (projectEditor:my-project) tienen el rol Editor de datos de BigQuery (roles/bigquery.dataEditor) en el conjunto de datos dataset-1, pero que no se ha usado ninguno de los permisos de ese rol en los últimos 90 días:

{
  "name": "projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/101d03ad-6148-4628-943e-fcf1a3af6b57",
  "description": "0 of the permissions in this role binding were used in the past 90 days.",
  "content": {
    "role": "roles/bigquery.dataEditor",
    "member": "projectEditor:my-project",
    "condition": {
      "expression": "",
      "title": "",
      "description": "",
      "location": ""
    },
    "exercisedPermissions": [],
    "inferredPermissions": [],
    "currentTotalPermissionsCount": "37"
  },
  "lastRefreshTime": "2024-02-02T08:00:00Z",
  "observationPeriod": "7779600s",
  "stateInfo": {
    "state": "ACTIVE"
  },
  "category": "SECURITY",
  "associatedRecommendations": [
    {
      "recommendation": "projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/9327f952-1ceb-488e-9e49-f17eb21f6e5e"
    }
  ],
  "targetResources": [
    "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1"
  ],
  "insightSubtype": "PERMISSIONS_USAGE_BIGQUERY_DATASET",
  "etag": "\"35d4af47524d3f0c\"",
  "severity": "LOW"
}

Para obtener más información sobre los componentes de una estadística, consulta la sección Revisar estadísticas de políticas a nivel de conjunto de datos de esta página.

Consultar estadísticas de políticas a nivel de conjunto de datos

Una vez que obtengas una estadística, puedes revisar su contenido para comprender el patrón de uso de recursos que destaca.

El contenido de una estadística se determina en función de sus subtipos. La información valiosa sobre políticas a nivel de conjunto de datos (google.iam.policy.Insight) tiene el subtipo PERMISSIONS_USAGE_BIGQUERY_DATASET.

Las estadísticas de PERMISSIONS_USAGE_BIGQUERY_DATASET tienen los siguientes componentes, no necesariamente en este orden:

  • associatedRecommendations: los identificadores de las recomendaciones asociadas a la estadística. Si no hay recomendaciones asociadas a la estadística, este campo estará vacío.
  • category: La categoría de las estadísticas de gestión de identidades y accesos siempre es SECURITY.
  • content: informa sobre el uso de permisos de una entidad de seguridad para un rol específico. Este campo contiene los siguientes componentes:

    • condition: cualquier condición asociada a la vinculación que concede el rol a la cuenta principal. Si no hay ninguna condición, este campo contiene una condición vacía.
    • exercisedPermissions: los permisos del rol que ha usado la entidad principal durante el periodo de observación.
    • inferredPermissions: Los permisos del rol que Recommender ha determinado, mediante ML, que es probable que la entidad principal necesite en función de los permisos que ha utilizado.
    • member: la entidad principal cuyo uso de permisos se ha analizado.
    • role: el rol para el que se ha analizado el uso del permiso.
  • description: resumen de la estadística legible por humanos.
  • etag: identificador único del estado actual de una estadística. Cada vez que cambia la estadística, se asigna un nuevo valor etag.

    Para cambiar el estado de una estadística, debe proporcionar el etag de la estadística en cuestión. El uso de etag ayuda a asegurarse de que las operaciones solo se realicen si la estadística no ha cambiado desde la última vez que la recuperaste.

  • insightSubtype: el subtipo de estadística.
  • lastRefreshTime: fecha de la última actualización de la estadística, que indica la actualización de los datos utilizados para generarla.
  • name: el nombre de la estadística, con el siguiente formato:

    projects/PROJECT_ID/locations/LOCATION/insightTypes/google.iam.policy.Insight/insights/INSIGHT_ID

    Los marcadores de posición tienen los siguientes valores:

    • PROJECT_ID: ID del proyecto en el que se ha generado la estadística.
    • LOCATION: ubicación del conjunto de datos al que se refiere la estadística.
    • INSIGHT_ID: ID único de la estadística.
  • observationPeriod: el periodo previo a la estadística. Los datos de origen que se han usado para generar la estadística terminan el lastRefreshTime y empiezan el lastRefreshTime menos observationPeriod.
  • stateInfo: las estadísticas pasan por varias transiciones de estado después de que se proponen:

    • ACTIVE: Se ha generado la estadística, pero no se ha tomado ninguna medida o se ha tomado una medida sin actualizar el estado de la estadística. Los estadísticas activos se actualizan cuando cambian los datos subyacentes.
    • ACCEPTED: se ha tomado alguna medida en función de la estadística. Las estadísticas se aceptan cuando una recomendación asociada se marca como CLAIMED, SUCCEEDED o FAILED, o bien cuando se aceptan directamente. Cuando una estadística está en el estado ACCEPTED, su contenido no puede cambiar. Las estadísticas aceptadas se conservan durante 90 días después de aceptarse.
  • targetResources: el nombre completo del recurso del conjunto de datos al que pertenece la estadística. Por ejemplo, //bigquery.googleapis.com/projects/my-project/datasets/my-dataset.

Marcar una estadística de política a nivel de conjunto de datos como ACCEPTED

Si tomas medidas basándote en una estadística activa, puedes marcarla como ACCEPTED. El estado ACCEPTED indica a la API Recommender que has tomado medidas en función de esta información valiosa, lo que ayuda a mejorar tus recomendaciones.

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

gcloud

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

  • INSIGHT_ID: ID de la estadística que quieres ver. Para encontrar el ID, lista las estadísticas de tu proyecto.
  • PROJECT_ID: el ID del proyecto del que quieres gestionar las estadísticas.
  • LOCATION: ubicación del conjunto de datos cuya estadística quieres marcar como ACCEPTED.
  • ETAG: identificador de una versión de la estadística. Para obtener el etag, haz lo siguiente:

    1. Obtén la información valiosa con el comando gcloud recommender insights describe.
    2. Busca y copia el valor de etag en el resultado, incluidas las comillas. Por ejemplo, "d3cdec23cc712bd0".
gcloud recommender insights mark-accepted INSIGHT_ID \
    --insight-type=google.iam.policy.Insight \
    --project=PROJECT_ID \
    --location=LOCATION \
    --etag=ETAG

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

associatedRecommendations:
- recommendation: projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/9327f951-1ceb-488e-9e49-f17eb21f6e5e
category: SECURITY
content:
  condition:
    description: ''
    expression: ''
    location: ''
    title: ''
  currentTotalPermissionsCount: '37'
  exercisedPermissions: []
  inferredPermissions: []
  member: projectEditor:my-project
  role: roles/bigquery.dataEditor
description: 0 of the permissions in this role binding were used in the past 90 days.
etag: '"5f2f352a738f7a24"'
insightSubtype: PERMISSIONS_USAGE_BIGQUERY_DATASET
lastRefreshTime: '2024-02-04T08:00:00Z'
name: projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/101d03ad-6148-4628-943e-fcf1a3af6b57
observationPeriod: 7776000s
severity: LOW
stateInfo:
  state: ACCEPTED
targetResources:
- //bigquery.googleapis.com/projects/my-project/datasets/dataset-1

Para obtener más información sobre el estado de una estadística, consulta la sección Revisar estadísticas de políticas a nivel de conjunto de datos de esta página.

REST

El método insights.markAccepted de la API Recommender marca una estadística como ACCEPTED.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: el ID del proyecto del que quieres gestionar las estadísticas.
  • LOCATION: ubicación del conjunto de datos cuya estadística quieres marcar como ACCEPTED.
  • INSIGHT_ID: el ID de la estadística que quieres ver. Si no sabes cuál es el ID de la estadística, puedes encontrarlo consultando la lista de estadísticas de tu proyecto. El ID de una estadística es todo lo que hay después de insights/ en el campo name de la estadística.
  • ETAG: identificador de una versión de la estadística. Para obtener el etag, haz lo siguiente:
    1. Obtén la información valiosa con 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/LOCATION/insightTypes/google.iam.policy.Insight/insights/INSIGHT_ID:markAccepted

Cuerpo JSON de la solicitud:

{
  "etag": "ETAG"
}

Para enviar tu solicitud, despliega una de estas opciones:

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

{
  "name": "projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/101d03ad-6148-4628-943e-fcf1a3af6b57",
  "description": "0 of the permissions in this role binding were used in the past 90 days.",
  "content": {
    "role": "roles/bigquery.dataEditor",
    "member": "projectEditor:my-project",
    "condition": {
      "expression": "",
      "title": "",
      "description": "",
      "location": ""
    },
    "exercisedPermissions": [],
    "inferredPermissions": [],
    "currentTotalPermissionsCount": "37"
  },
  "lastRefreshTime": "2024-02-02T08:00:00Z",
  "observationPeriod": "7779600s",
  "stateInfo": {
    "state": "ACCEPTED"
  },
  "category": "SECURITY",
  "associatedRecommendations": [
    {
      "recommendation": "projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/9327f952-1ceb-488e-9e49-f17eb21f6e5e"
    }
  ],
  "targetResources": [
    "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1"
  ],
  "insightSubtype": "PERMISSIONS_USAGE_BIGQUERY_DATASET",
  "etag": "\"35d4af47524d3f0c\"",
  "severity": "LOW"
}

Para obtener más información sobre el estado de una estadística, consulta la sección Revisar estadísticas de políticas a nivel de conjunto de datos de esta página.

Siguientes pasos