En esta página, se explica cómo ver, comprender y aplicar las recomendaciones de roles de IAM para los conjuntos de datos de BigQuery. Las recomendaciones de roles te ayudan a aplicar el principio de privilegio mínimo, ya que garantizan que las principales solo tengan los permisos que en verdad necesitan.
Antes de comenzar
Habilita las APIs de IAM y del Recomendador.
Roles necesarios para habilitar las APIs
Para habilitar las APIs, necesitas el rol de IAM de administrador de Service Usage (
roles/serviceusage.serviceUsageAdmin), que contiene el permisoserviceusage.services.enable. Obtén más información para otorgar roles.Asegúrate de tener una activación a nivel de la organización o a nivel de proyecto del nivel Premium o Enterprise de Security Command Center. Para obtener más información, consulta Preguntas sobre facturación.
Aprende sobre las recomendaciones de funciones.
Configura la autenticación.
Selecciona la pestaña que corresponda a la forma en que planeas usar las muestras de esta página:
gcloud
En la consola de Google Cloud , activa Cloud Shell.
En la parte inferior de la consola de Google Cloud , se inicia una sesión de Cloud Shell que muestra una ventana emergente con una línea de comandos. Cloud Shell es un entorno de shell con Google Cloud CLI ya instalada y con valores ya establecidos para el proyecto actual. La sesión puede tardar unos segundos en inicializarse.
REST
Para usar las muestras de la API de REST incluidas en esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la gcloud CLI.
Instala Google Cloud CLI.
Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
Para obtener más información, consulta Autentícate para usar REST en la documentación de autenticación de Google Cloud .
Roles de IAM obligatorios
Para obtener los permisos que necesitas para administrar las recomendaciones de roles a nivel del conjunto de datos, pídele a tu administrador que te otorgue los siguientes roles de IAM:
- Visualizador de roles (
roles/iam.roleViewer) en tu proyecto - Administrador del Recomendador de IAM (
roles/recommender.iamAdmin) en tu proyecto - Propietario de datos de BigQuery (
roles/bigquery.dataOwner) en tu conjunto de datos
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 recomendaciones de roles 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 recomendaciones de roles a nivel del conjunto de datos:
-
Para ver las recomendaciones, haz lo siguiente:
-
iam.roles.geten tu proyecto -
iam.roles.listen tu proyecto -
recommender.iamPolicyRecommendations.geten tu proyecto -
recommender.iamPolicyRecommendations.listen tu proyecto -
recommender.iamPolicyInsights.geten tu proyecto -
recommender.iamPolicyInsights.listen tu proyecto -
bigquery.datasets.getIamPolicyen tu conjunto de datos
-
-
Para aplicar y descartar recomendaciones, haz lo siguiente:
-
recommender.iamPolicyRecommendations.updateen tu proyecto -
bigquery.datasets.setIamPolicyen tu conjunto de datos
-
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Revisa y aplica recomendaciones
Puedes revisar y aplicar recomendaciones de roles a nivel del conjunto de datos con Google Cloud CLI y la API del recomendador.
gcloud
Revisa las recomendaciones:
Para enumerar las recomendaciones a nivel del conjunto de datos, ejecuta el comando gcloud recommender recommendations list y filtra solo las recomendaciones del conjunto de datos de BigQuery:
gcloud recommender recommendations list \
--location=LOCATION \
--recommender=google.iam.policy.Recommender \
--project=PROJECT_ID \
--format=json \
--filter="recommenderSubtype:REMOVE_ROLE_BIGQUERY_DATASET OR recommenderSubtype:REPLACE_ROLE_BIGQUERY_DATASET"
Reemplaza los siguientes valores:
LOCATION: Es la región en la que se encuentran tus conjuntos de datos de Cloud Storage, por ejemplo,usous-central1.PROJECT_ID: Es el ID del Google Cloud proyecto que contiene tus conjuntos de datos de BigQuery. Los IDs de proyecto son cadenas alfanuméricas, comomy-project.
La respuesta es similar al ejemplo a continuación. En este ejemplo, 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.
Sin embargo, este rol no se usó en los últimos 90 días. Como resultado, la recomendación de rol sugiere que revoques el rol:
[ { "associatedInsights": [ { "insight": "projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/984eccca-0241-472f-baab-2557dd0d7282" } ], "content": { "operationGroups": [ { "operations": [ { "action": "remove", "path": "/iamPolicy/bindings/*/members/*", "pathFilters": { "/iamPolicy/bindings/*/condition/expression": "", "/iamPolicy/bindings/*/members/*": "projectEditor:my-project", "/iamPolicy/bindings/*/role": "roles/bigquery.dataEditor" }, "resource": "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1", "resourceType": "bigquery.googleapis.com/Dataset" } ] } ], "overview": { "addedRoles": [], "member": "projectEditor:my-project", "minimumObservationPeriodInDays": "0", "removedRole": "roles/bigquery.dataEditor", "resource": "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1" } }, "description": "This role has not been used during the observation window.", "etag": "\"3b123bc08d028128\"", "lastRefreshTime": "2024-02-04T08:00:00Z", "name": "projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/0e9831fe-6810-476b-b14d-2b64bda17288", "primaryImpact": { "category": "SECURITY", "securityProjection": { "details": { "revokedIamPermissionsCount": 37 } } }, "priority": "P4", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", "stateInfo": { "state": "ACTIVE" }, "targetResources": [ "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1" ] }, { "associatedInsights": [ { "insight": "projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/9d11057e-9c71-410f-ad55-fc82d87761d0" } ], "content": { "operationGroups": [ { "operations": [ { "action": "remove", "path": "/iamPolicy/bindings/*/members/*", "pathFilters": { "/iamPolicy/bindings/*/condition/expression": "", "/iamPolicy/bindings/*/members/*": "user:alicexz@google.com", "/iamPolicy/bindings/*/role": "roles/bigquery.dataOwner" }, "resource": "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1", "resourceType": "bigquery.googleapis.com/Dataset" } ] } ], "overview": { "addedRoles": [], "member": "user:alicexz@google.com", "minimumObservationPeriodInDays": "0", "removedRole": "roles/bigquery.dataOwner", "resource": "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1" } }, "description": "This role has not been used during the observation window.", "etag": "\"1da285f7aa6438f1\"", "lastRefreshTime": "2024-02-04T08:00:00Z", "name": "projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/56013294-cf81-402a-8cde-25489545777c", "primaryImpact": { "category": "SECURITY", "securityProjection": { "details": { "revokedIamPermissionsCount": 64 } } }, "priority": "P4", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", "stateInfo": { "state": "ACTIVE" }, "targetResources": [ "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1" ] } ]
Revisa cada recomendación con atención y considera cuándo se actualizó por última vez y cómo cambiará el acceso de la principal a los recursos de Google Cloud . Para aprender a revisar las recomendaciones de gcloud CLI, consulta Revisa las recomendaciones en esta página.
Para aplicar una recomendación, sigue estos pasos:
Usa el comando
gcloud recommender recommendations mark-claimedpara cambiar el estado de la recomendación aCLAIMED,, lo que evita que la recomendación cambie mientras la aplicas:gcloud recommender recommendations mark-claimed \ RECOMMENDATION_ID \ --location=LOCATION \ --recommender=google.iam.policy.Recommender \ --project=PROJECT_ID \ --format=FORMAT \ --etag=ETAG \ --state-metadata=STATE_METADATAReemplaza los siguientes valores:
-
RECOMMENDATION_ID: El identificador único de la recomendación. Este valor aparece al final del camponameen la recomendación. Por ejemplo, si el camponameesprojects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f, el ID de recomendación esfb927dc1-9695-4436-0000-f0f285007c0f. -
LOCATION: Es la región en la que se encuentra tu conjunto de datos de BigQuery, por ejemplo,usous-central1. -
PROJECT_ID: Es el ID del proyecto Google Cloud que contiene tus conjuntos de datos de BigQuery. Los IDs de proyecto son cadenas alfanuméricas, comomy-project. -
FORMAT: El formato de la respuesta. Usajsonoyaml -
ETAG: El valor del campoetagen la recomendación, como"dd0686e7136a4cbb". Ten en cuenta que este valor puede incluir comillas -
STATE_METADATA: Opcional. Pares clave-valor separados por comas que contienen la selección de metadatos sobre la recomendación. Por ejemplo:--state-metadata=reviewedBy=alice,priority=high. Los metadatos reemplazan el campostateInfo.stateMetadataen la recomendación.
Si el comando se ejecuta de forma correcta, la respuesta muestra la recomendación en un estado
CLAIMED, como se muestra en el siguiente ejemplo. Para mayor claridad, en el ejemplo, se omiten la mayoría de los campos:... "priority": "P1", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", "stateInfo": { "state": "CLAIMED" } ...
-
Obtén la política de permisos para el conjunto de datos y, luego, modifica y establece la política de permisos para que refleje la recomendación.
Actualiza el estado de la recomendación a
SUCCEEDED, si pudiste aplicar la recomendación, oFAILED, si no pudiste aplicarla:gcloud recommender recommendations COMMAND \ RECOMMENDATION_ID \ --location=LOCATION \ --recommender=google.iam.policy.Recommender \ --project=PROJECT_ID \ --format=FORMAT \ --etag=ETAG \ --state-metadata=STATE_METADATAReemplaza los siguientes valores:
COMMAND: Usamark-succeededsi pudiste aplicar la recomendación omark-failedsi no pudiste aplicarla.-
RECOMMENDATION_ID: El identificador único de la recomendación. Este valor aparece al final del camponameen la recomendación. Por ejemplo, si el camponameesprojects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f, el ID de recomendación esfb927dc1-9695-4436-0000-f0f285007c0f. -
LOCATION: Es la región en la que se encuentra tu conjunto de datos de BigQuery, por ejemplo,usous-central1. -
PROJECT_ID: Es el ID del proyecto Google Cloud que contiene tus conjuntos de datos de BigQuery. Los IDs de proyecto son cadenas alfanuméricas, comomy-project. -
FORMAT: El formato de la respuesta. Usajsonoyaml -
ETAG: El valor del campoetagen la recomendación, como"dd0686e7136a4cbb". Ten en cuenta que este valor puede incluir comillas -
STATE_METADATA: Opcional. Pares clave-valor separados por comas que contienen la selección de metadatos sobre la recomendación. Por ejemplo:--state-metadata=reviewedBy=alice,priority=high. Los metadatos reemplazan el campostateInfo.stateMetadataen la recomendación.
Por ejemplo, si marcaste la recomendación como correcta, la respuesta muestra la recomendación en un estado
SUCCEEDED. Para mayor claridad, en este ejemplo, se omiten la mayoría de los campos:... "priority": "P1", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", "stateInfo": { "state": "SUCCEEDED" } ...
REST
Revisa las recomendaciones:
Para enumerar todas las recomendaciones disponibles para tus conjuntos de datos de BigQuery, usa el método recommendations.list de la API de Recommender.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID: Es el ID del proyecto deGoogle Cloud que contiene tus conjuntos de datos de BigQuery. Los IDs de proyecto son cadenas alfanuméricas, comomy-project.LOCATION: Es la región en la que se encuentran tus conjuntos de datos de BigQuery, por ejemplo,usous-central1.-
PAGE_SIZE: Opcional La cantidad máxima de resultados que se mostrarán con esta solicitud. Si no se especifica, el servidor determinará la cantidad de resultados que se mostrarán. Si la cantidad de recomendaciones es mayor que el tamaño de la página, la respuesta contiene un token de paginación que puedes usar para recuperar la siguiente página de resultados. -
PAGE_TOKEN: Opcional Es el token de paginación que se mostró en una respuesta anterior de este método. Si se especifica, la lista de recomendaciones comenzará donde finalizó la solicitud anterior. PROJECT_ID: Es el ID de tu proyecto de Google Cloud . Los IDs de proyecto son cadenas alfanuméricas, comomy-project.
Método HTTP y URL:
GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/google.iam.policy.Recommender/recommendations?filter=recommenderSubtype%20%3D%20REMOVE_ROLE_BIGQUERY_DATASET%20OR%20recommenderSubtype%20%3D%20REPLACE_ROLE_BIGQUERY_DATASET&pageSize=PAGE_SIZE&pageToken=PAGE_TOKEN
Para enviar tu solicitud, expande una de estas opciones:
La respuesta es similar al ejemplo a continuación. En este ejemplo, 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.
Sin embargo, este rol no se usó en los últimos 90 días. Como resultado, la recomendación de función sugiere que revoques la función:
{
"recommendations": [
{
"name": "projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/0e9831fe-6810-476b-b14d-2b64bda17288",
"description": "This role has not been used during the observation window.",
"lastRefreshTime": "2024-02-02T08:00:00Z",
"primaryImpact": {
"category": "SECURITY",
"securityProjection": {
"details": {
"revokedIamPermissionsCount": 37
}
}
},
"content": {
"operationGroups": [
{
"operations": [
{
"action": "remove",
"resourceType": "bigquery.googleapis.com/Dataset",
"resource": "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1",
"path": "/iamPolicy/bindings/*/members/*",
"pathFilters": {
"/iamPolicy/bindings/*/condition/expression": "",
"/iamPolicy/bindings/*/members/*": "projectEditor:my-project",
"/iamPolicy/bindings/*/role": "roles/bigquery.dataEditor"
}
}
]
}
],
"overview": {
"resource": "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1",
"member": "projectEditor:my-project",
"removedRole": "roles/bigquery.dataEditor",
"addedRoles": [],
"minimumObservationPeriodInDays": "0"
}
},
"stateInfo": {
"state": "ACTIVE"
},
"etag": "\"d008ad3780bad5e0\"",
"recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET",
"associatedInsights": [
{
"insight": "projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/984eccca-0241-472f-baab-2557dd0d7282"
}
],
"priority": "P4",
"targetResources": [
"//bigquery.googleapis.com/projects/my-project/datasets/dataset-1"
]
}
]
}
Revisa cada recomendación con atención y considera cuándo se actualizó por última vez y cómo cambiará el acceso de la principal a los recursos de Google Cloud . Para obtener información sobre cómo revisar las recomendaciones de la API de REST, consulta Revisa las recomendaciones en esta página.
Para aplicar una recomendación, sigue estos pasos:
Marca la recomendación como
CLAIMED:Para marcar una recomendación como
CLAIMED, lo que evita que la recomendación cambie mientras la aplicas, usa el métodorecommendations.markClaimedde la API de Recommender.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID: Es el ID del proyecto deGoogle Cloud que contiene tus conjuntos de datos de BigQuery. Los IDs de proyecto son cadenas alfanuméricas, comomy-project.LOCATION: Es la región en la que se encuentra tu conjunto de datos de BigQuery, por ejemplo,usous-central1.RECOMMENDATION_ID: El identificador único de la recomendación. Este valor aparece al final del camponameen la recomendación. Por ejemplo, si el camponameesprojects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f, el ID de recomendación esfb927dc1-9695-4436-0000-f0f285007c0f.ETAG: El valor del campoetagen la recomendación, como"dd0686e7136a4cbb". Usa barras inversas para escapar las comillas, por ejemplo,"\"df7308cca9719dcc\"".STATE_METADATA: Opcional. Un objeto que contiene pares clave-valor con tu elección de metadatos sobre la recomendación. Por ejemplo,{"reviewedBy": "alice", "priority": "high"}. Los metadatos reemplazan el campostateInfo.stateMetadataen la recomendación.
Método HTTP y URL:
POST https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/google.iam.policy.Recommender/recommendations/RECOMMENDATION_ID:markClaimed
Cuerpo JSON de la solicitud:
{ "etag": "ETAG", "stateMetadata": { "STATE_METADATA" } }Para enviar tu solicitud, expande una de estas opciones:
La respuesta muestra la recomendación en un estado
CLAIMED, como se muestra en el siguiente ejemplo. Para mayor claridad, en este ejemplo, se omiten la mayoría de los campos:... "stateInfo": { "state": "CLAIMED" }, "etag": "\"7caf4103d7669e12\"", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", ...Obtén la política de permisos para el proyecto y, luego, modifica la política de permisos a fin de que refleje la recomendación.
Actualiza el estado de la recomendación a
SUCCEEDED, si pudiste aplicar la recomendación, oFAILED, si no pudiste aplicarla:SUCCEEDEDPara marcar una recomendación como
SUCCEEDED, lo que indica que pudiste aplicarla, usa el métodorecommendations.markSucceededde la API de Recommender.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID: Es el ID del proyecto deGoogle Cloud que contiene tus conjuntos de datos de BigQuery. Los IDs de proyecto son cadenas alfanuméricas, comomy-project.LOCATION: Es la región en la que se encuentra tu conjunto de datos de BigQuery, por ejemplo,usous-central1.RECOMMENDATION_ID: El identificador único de la recomendación. Este valor aparece al final del camponameen la recomendación. Por ejemplo, si el camponameesprojects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f, el ID de recomendación esfb927dc1-9695-4436-0000-f0f285007c0f.ETAG: El valor del campoetagen la recomendación, como"dd0686e7136a4cbb". Usa barras inversas para escapar las comillas, por ejemplo,"\"df7308cca9719dcc\"".STATE_METADATA: Opcional. Un objeto que contiene pares clave-valor con tu elección de metadatos sobre la recomendación. Por ejemplo,{"reviewedBy": "alice", "priority": "high"}. Los metadatos reemplazan el campostateInfo.stateMetadataen la recomendación.
Método HTTP y URL:
POST https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/google.iam.policy.Recommender/recommendations/RECOMMENDATION_ID:markSucceeded
Cuerpo JSON de la solicitud:
{ "etag": "ETAG", "stateMetadata": { "STATE_METADATA" } }Para enviar tu solicitud, expande una de estas opciones:
La respuesta muestra la recomendación en un estado
SUCCEEDED, como se muestra en el siguiente ejemplo. Para mayor claridad, en este ejemplo, se omiten la mayoría de los campos:... "stateInfo": { "state": "SUCCEEDED" }, "etag": "\"7caf4103d7669e12\"", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", ...FAILEDPara marcar una recomendación como
FAILED, lo que indica que no pudiste aplicarla, usa el métodorecommendations.markFailedde la API de Recommender.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID: Es el ID del proyecto deGoogle Cloud que contiene tus conjuntos de datos de BigQuery. Los IDs de proyecto son cadenas alfanuméricas, comomy-project.LOCATION: Es la región en la que se encuentra tu conjunto de datos de BigQuery, por ejemplo,usous-central1.RECOMMENDATION_ID: El identificador único de la recomendación. Este valor aparece al final del camponameen la recomendación. Por ejemplo, si el camponameesprojects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f, el ID de recomendación esfb927dc1-9695-4436-0000-f0f285007c0f.ETAG: El valor del campoetagen la recomendación, como"dd0686e7136a4cbb". Usa barras inversas para escapar las comillas, por ejemplo,"\"df7308cca9719dcc\"".STATE_METADATA: Opcional. Un objeto que contiene pares clave-valor con tu elección de metadatos sobre la recomendación. Por ejemplo,{"reviewedBy": "alice", "priority": "high"}. Los metadatos reemplazan el campostateInfo.stateMetadataen la recomendación.
Método HTTP y URL:
POST https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/google.iam.policy.Recommender/recommendations/RECOMMENDATION_ID:markFailed
Cuerpo JSON de la solicitud:
{ "etag": "ETAG", "stateMetadata": { "STATE_METADATA" } }Para enviar tu solicitud, expande una de estas opciones:
La respuesta muestra la recomendación en un estado
FAILED, como se muestra en el siguiente ejemplo. Para mayor claridad, en este ejemplo, se omiten la mayoría de los campos:... "stateInfo": { "state": "FAILED" }, "etag": "\"7caf4103d7669e12\"", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", ...
Información sobre las recomendaciones
Cada recomendación incluye información para ayudarte a comprender por qué se hizo la recomendación.
Para obtener detalles sobre los campos de una recomendación, consulta la referencia de Recommendation.
Para ver el uso de permisos en el que se basa esta recomendación, consulta las estadísticas de políticas asociadas con la recomendación.
Estas estadísticas se enumeran en el campo associatedInsights. Para ver una estadística de políticas asociada con la recomendación, haz lo siguiente:
- Copia el ID de la estadística asociada. El ID es todo lo que se encuentra después de
insights/en el campoinsight. Por ejemplo, si el campoinsightdiceprojects/123456789012/locations/us/insightTypes/google.iam.policy.Insight/insights/7849add9-73c0-419e-b169-42b3671173fb, el ID de la estadística es7849add9-73c0-419e-b169-42b3671173fb. - Sigue las instrucciones para obtener una estadística de política con el ID de estadística que copiaste.
¿Qué sigue?
- Obtén más información sobre el recomendador.
- Aprende a usar las estadísticas de la política de permisos para los conjuntos de datos de BigQuery.