Revisa las estadísticas de políticas de los conjuntos de datos de BigQuery

En esta página, se muestra cómo administrar las estadísticas de políticas a nivel del conjunto de datos, que son conclusiones basadas en el aprendizaje automático sobre el uso de permisos para 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 enfocan las estadísticas de políticas para los conjuntos de datos. El recomendador también ofrece estadísticas de políticas para los siguientes tipos de recursos:

A veces, las estadísticas de políticas a nivel del conjunto de datos se vinculan a recomendaciones de roles. Las recomendaciones de roles sugieren acciones que puedes realizar para solucionar los problemas que identifican las estadísticas de políticas a nivel del conjunto de datos.

Antes de comenzar

Roles obligatorios

Para obtener los permisos que necesitas para administrar las estadísticas de políticas a nivel del conjunto de datos, pídele a tu administrador que te otorgue los siguientes roles de IAM en tu proyecto:

  • Propietario de datos de BigQuery ("roles/bigquery.dataOwner")
  • Administrador del recomendador de IAM ("roles/recommender.iamAdmin")
  • Administra las estadísticas de políticas a nivel del conjunto de datos con gcloud CLI o la API de REST: Consumidor de uso de servicio ("roles/serviceusage.serviceUsageConsumer")

Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

Estos roles predefinidos contienen los permisos necesarios para administrar las estadísticas de políticas a nivel del conjunto de datos. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:

Permisos necesarios

Se requieren los siguientes permisos para administrar las estadísticas de políticas a nivel del conjunto de datos:

  • Consulta las estadísticas de políticas a nivel del conjunto de datos:
    • recommender.iamPolicyInsights.get
    • recommender.iamPolicyInsights.list
  • Modifica las estadísticas de políticas a nivel del conjunto de datos: recommender.iamPolicyInsights.update
  • Administra las estadísticas de políticas a nivel del conjunto de datos con gcloud CLI o la API de REST: serviceusage.services.use

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

Enumera las estadísticas de políticas a nivel del conjunto de datos

Para enumerar todas las estadísticas de políticas a nivel del conjunto de datos 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 políticas a nivel del conjunto de datos 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.
  • LOCATION: La ubicación de los conjuntos de datos cuyas estadísticas deseas enumerar.
gcloud recommender insights list --insight-type=google.iam.policy.Insight \
    --project=PROJECT_ID \
    --location=LOCATION\
    --filter="insightSubtype:PERMISSIONS_USAGE_BIGQUERY_DATASET"

En el resultado, se enumeran todas las estadísticas de políticas a nivel del 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 de Recommender enumera todas las estadísticas de políticas a nivel del conjunto de datos para tu 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.
  • LOCATION: La ubicación de los conjuntos de datos cuyas estadísticas deseas enumerar.

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, expande una de estas opciones:

En la respuesta, se enumeran todas las estadísticas de políticas a nivel del 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 Revisa las estadísticas de políticas a nivel del conjunto de datos en esta página.

Obtén una sola estadística de políticas a nivel del conjunto de datos

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
  • LOCATION: Es la ubicación del conjunto de datos cuya estadística deseas obtener.
gcloud recommender insights describe INSIGHT_ID \
    --insight-type=google.iam.policy.Insight \
    --project=PROJECT_ID \
    --location=LOCATION

En el resultado, se muestra la estadística en detalle. Por ejemplo, la siguiente estadística indica que todos los usuarios con el rol de editor en el proyecto my-project (projectEditor:my-project) tienen el rol de editor de datos de BigQuery (roles/bigquery.dataEditor) en el conjunto de datos dataset-1, pero que no se usó 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 Revisa las estadísticas de políticas a nivel del conjunto de datos 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.
  • LOCATION: Es la ubicación del conjunto de datos cuya estadística deseas obtener.
  • 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/LOCATION/insightTypes/google.iam.policy.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 todos los usuarios con el rol de editor en el proyecto my-project (projectEditor:my-project) tienen el rol de editor de datos de BigQuery (roles/bigquery.dataEditor) en el conjunto de datos dataset-1, pero que no se usó 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 Revisa las estadísticas de políticas a nivel del conjunto de datos en esta página.

Revisa las estadísticas de las políticas a nivel del conjunto de datos

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 políticas a nivel del conjunto de datos (google.iam.policy.Insight) tienen el subtipo PERMISSIONS_USAGE_BIGQUERY_DATASET.

Las estadísticas de PERMISSIONS_USAGE_BIGQUERY_DATASET 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 el uso de los permisos de una principal para una función específica. En este campo, se encuentran los siguientes componentes:

    • condition: Cualquier condición relacionada con la vinculación que otorga la función a la principal. Si no hay condiciones, este campo contiene una condición vacía.
    • exercisedPermissions: Los permisos en el rol que la principal usó durante el período de observación
    • inferredPermissions: Los permisos en el rol que el recomendador de IAM determinó a través del AA, que es probable que la principal necesite según los permisos que ejerció.
    • member: la principal cuyo uso de permisos se analizó
    • role: La función para la cual se analizó el uso de permisos
  • 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/LOCATION/insightTypes/google.iam.policy.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
    • LOCATION: Es la ubicación del conjunto de datos al que se refiere 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 conjunto de datos para el que se creó la estadística. Por ejemplo, //bigquery.googleapis.com/projects/my-project/datasets/my-dataset.

Marca una estadística de política a nivel del conjunto de datos 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
  • LOCATION: La ubicación del conjunto de datos cuya estadística deseas marcar como ACCEPTED.
  • 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.policy.Insight \
    --project=PROJECT_ID \
    --location=LOCATION \
    --etag=ETAG

En el resultado, se 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 la información de estado de una estadística, consulta Revisa las estadísticas de políticas a nivel del conjunto de datos 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.
  • LOCATION: La ubicación del conjunto de datos cuya estadística deseas marcar como ACCEPTED.
  • 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/LOCATION/insightTypes/google.iam.policy.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/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 la información de estado de una estadística, consulta Revisa las estadísticas de políticas a nivel del conjunto de datos en esta página.

¿Qué sigue?