En IAM, las políticas vigentes describen cómo se heredan todas las políticas principales y antecesoras en la jerarquía de recursos para un recurso.
Solo se admiten las políticas de permiso para la recuperación a través de Cloud Asset Inventory. No se admiten las siguientes formas de control de acceso:
Antes de comenzar
Habilita la API de Cloud Asset Inventory en el proyecto desde el que ejecutas los comandos de Cloud Asset Inventory.
Asegúrate de que tu cuenta tenga el rol correcto para llamar a la API de Cloud Asset Inventory. Para obtener información sobre los permisos individuales de cada tipo de llamada, consulta Permisos.
Visualiza las políticas efectivas en los recursos
gcloud
gcloud asset get-effective-iam-policy \ --scope=SCOPE_PATH \ --names=ASSET_NAME_1,ASSET_NAME_2,...
Ingresa los siguientes valores:
-
SCOPE_PATH: Usa uno de los siguientes valores:Los valores permitidos son los siguientes:
-
projects/PROJECT_ID, dondePROJECT_IDes el ID del proyecto que es el nivel superior desde el que se verifican las políticas de IAM efectivas. -
projects/PROJECT_NUMBER, dondePROJECT_NUMBERes el número del proyecto que es el nivel superior desde el que se verifican las políticas de IAM efectivas.Cómo encontrar un número de proyecto Google Cloud
Consola deGoogle Cloud
Para encontrar el número de un proyecto Google Cloud , completa los siguientes pasos:
-
Ve a la página Bienvenida en la consola de Google Cloud .
- Haz clic en el cuadro de lista del conmutador en la barra de menú.
-
Selecciona tu organización en el cuadro de lista y, luego, busca el nombre de tu proyecto. El nombre, el número y el ID del proyecto se muestran cerca del encabezado Bienvenido.
Se muestran hasta 4,000 recursos. Si no ves el proyecto que buscas, ve a la página Administrar recursos y filtra la lista con el nombre de ese proyecto.
gcloud CLI
Puedes recuperar un número de proyecto Google Cloud con el siguiente comando:
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
-
folders/FOLDER_ID, en la queFOLDER_IDes el ID de la carpeta que es el nivel superior desde el que se verifican las políticas de IAM efectivas.Cómo encontrar el ID de una carpeta Google Cloud
Consola deGoogle Cloud
Para encontrar el ID de una carpeta de Google Cloud , completa los siguientes pasos:
-
Accede a la consola de Google Cloud .
- Haz clic en el cuadro de lista del conmutador en la barra de menú.
- Selecciona tu organización en el cuadro de lista.
- Busca el nombre de tu carpeta. El ID de la carpeta se muestra junto al nombre de la carpeta.
gcloud CLI
Puedes recuperar el ID de una carpeta Google Cloud ubicada a nivel de la organización con el siguiente comando:
gcloud resource-manager folders list \ --organization=$(gcloud organizations describe ORGANIZATION_NAME \ --format="value(name.segment(1))") \ --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \ --format="value(ID)"
En el ejemplo anterior, TOP_LEVEL_FOLDER_NAME es una coincidencia de cadena parcial o completa para el nombre de la carpeta. Quita la marca
--formatpara ver más información sobre las carpetas encontradas.El comando anterior no devuelve los IDs de las subcarpetas dentro de las carpetas. Para ello, ejecuta el siguiente comando con el ID de una carpeta de nivel superior:
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organizations/ORGANIZATION_ID, dondeORGANIZATION_IDes el ID de la organización que es el nivel superior desde el que se verifican las políticas de IAM efectivas.Cómo encontrar el ID de una organización de Google Cloud
Consola deGoogle Cloud
Para encontrar el ID de una organización Google Cloud , completa los siguientes pasos:
-
Accede a la consola de Google Cloud .
- Haz clic en el cuadro de lista del conmutador en la barra de menú.
- Selecciona tu organización en el cuadro de lista.
- Haz clic en la pestaña Todos. El ID de la organización se muestra junto al nombre de la organización.
gcloud CLI
Puedes recuperar el ID de una organización Google Cloud con el siguiente comando:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
ASSET_NAME_#: Es una lista separada por comas de los nombres completos de los recursos.
Puedes recuperar políticas para un máximo de 20 recursos en un lote.
Consulta la referencia de la CLI de gcloud para ver todas las opciones.
Ejemplo
Ejecuta el siguiente comando para ver las políticas de IAM efectivas en la instancia de Compute Engine my-instance que se heredan de la organización con el ID my-organization-id.
Cómo encontrar el ID de una organización de Google Cloud
Consola deGoogle Cloud
Para encontrar el ID de una organización Google Cloud , completa los siguientes pasos:
-
Accede a la consola de Google Cloud .
- Haz clic en el cuadro de lista del conmutador en la barra de menú.
- Selecciona tu organización en el cuadro de lista.
- Haz clic en la pestaña Todos. El ID de la organización se muestra junto al nombre de la organización.
gcloud CLI
Puedes recuperar el ID de una organización Google Cloud con el siguiente comando:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
gcloud asset get-effective-iam-policy \ --scope=organizations/my-organization-id \ --names=//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/my-instance
Respuesta de ejemplo
policyResults:
- fullResourceName: //compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/my-instance
policies:
- attachedResource: //cloudresourcemanager.googleapis.com/projects/my-project
policy:
bindings:
- members:
- user:alex@example.com
- user:bola@example.com
role: roles/cloudkms.admin
- members:
- serviceAccount:000000000000-compute@developer.gserviceaccount.com
role: roles/editor
- attachedResource: //cloudresourcemanager.googleapis.com/folders/000000000000
policy:
bindings:
- members:
- user:cruz@example.com
role: roles/resourcemanager.folderAdmin
- members:
- user:dani@example.com
role: roles/resourcemanager.folderEditor
- attachedResource: //cloudresourcemanager.googleapis.com/organizations/0000000000000
policy:
bindings:
- members:
- user:hao@example.com
role: organizations/0000000000000/roles/CustomProjectAdmin
- members:
- serviceAccount:000000000000@cloudservices.gserviceaccount.com
- user:ira@example.com
- user:jie@example.com
role: roles/accesscontextmanager.policyAdmin
REST
Método HTTP y URL:
POST https://cloudasset.googleapis.com/v1/SCOPE_PATH/effectiveIamPolicies:batchGet
Cuerpo JSON de la solicitud:
{ "names": [ "ASSET_NAME_1", "ASSET_NAME_2", "..." ] }
Ingresa los siguientes valores:
-
SCOPE_PATH: Usa uno de los siguientes valores:Los valores permitidos son los siguientes:
-
projects/PROJECT_ID, dondePROJECT_IDes el ID del proyecto que es el nivel superior desde el que se verifican las políticas de IAM efectivas. -
projects/PROJECT_NUMBER, dondePROJECT_NUMBERes el número del proyecto que es el nivel superior desde el que se verifican las políticas de IAM efectivas.Cómo encontrar un número de proyecto Google Cloud
Consola deGoogle Cloud
Para encontrar el número de un proyecto Google Cloud , completa los siguientes pasos:
-
Ve a la página Bienvenida en la consola de Google Cloud .
- Haz clic en el cuadro de lista del conmutador en la barra de menú.
-
Selecciona tu organización en el cuadro de lista y, luego, busca el nombre de tu proyecto. El nombre, el número y el ID del proyecto se muestran cerca del encabezado Bienvenido.
Se muestran hasta 4,000 recursos. Si no ves el proyecto que buscas, ve a la página Administrar recursos y filtra la lista con el nombre de ese proyecto.
gcloud CLI
Puedes recuperar un número de proyecto Google Cloud con el siguiente comando:
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
-
folders/FOLDER_ID, en la queFOLDER_IDes el ID de la carpeta que es el nivel superior desde el que se verifican las políticas de IAM efectivas.Cómo encontrar el ID de una carpeta Google Cloud
Consola deGoogle Cloud
Para encontrar el ID de una carpeta de Google Cloud , completa los siguientes pasos:
-
Accede a la consola de Google Cloud .
- Haz clic en el cuadro de lista del conmutador en la barra de menú.
- Selecciona tu organización en el cuadro de lista.
- Busca el nombre de tu carpeta. El ID de la carpeta se muestra junto al nombre de la carpeta.
gcloud CLI
Puedes recuperar el ID de una carpeta Google Cloud ubicada a nivel de la organización con el siguiente comando:
gcloud resource-manager folders list \ --organization=$(gcloud organizations describe ORGANIZATION_NAME \ --format="value(name.segment(1))") \ --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \ --format="value(ID)"
En el ejemplo anterior, TOP_LEVEL_FOLDER_NAME es una coincidencia de cadena parcial o completa para el nombre de la carpeta. Quita la marca
--formatpara ver más información sobre las carpetas encontradas.El comando anterior no devuelve los IDs de las subcarpetas dentro de las carpetas. Para ello, ejecuta el siguiente comando con el ID de una carpeta de nivel superior:
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organizations/ORGANIZATION_ID, dondeORGANIZATION_IDes el ID de la organización que es el nivel superior desde el que se verifican las políticas de IAM efectivas.Cómo encontrar el ID de una organización de Google Cloud
Consola deGoogle Cloud
Para encontrar el ID de una organización Google Cloud , completa los siguientes pasos:
-
Accede a la consola de Google Cloud .
- Haz clic en el cuadro de lista del conmutador en la barra de menú.
- Selecciona tu organización en el cuadro de lista.
- Haz clic en la pestaña Todos. El ID de la organización se muestra junto al nombre de la organización.
gcloud CLI
Puedes recuperar el ID de una organización Google Cloud con el siguiente comando:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
ASSET_NAME_#: Es un array de nombres completos de activos.
Puedes recuperar políticas para un máximo de 20 recursos en un lote.
Consulta la referencia de REST para ver todas las opciones.
Ejemplos de comandos
Ejecuta uno de los siguientes comandos para ver las políticas de IAM efectivas en la instancia de Compute Engine my-instance que se heredan de la organización con el ID my-organization-id.
Cómo encontrar el ID de una organización de Google Cloud
Consola deGoogle Cloud
Para encontrar el ID de una organización Google Cloud , completa los siguientes pasos:
-
Accede a la consola de Google Cloud .
- Haz clic en el cuadro de lista del conmutador en la barra de menú.
- Selecciona tu organización en el cuadro de lista.
- Haz clic en la pestaña Todos. El ID de la organización se muestra junto al nombre de la organización.
gcloud CLI
Puedes recuperar el ID de una organización Google Cloud con el siguiente comando:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
curl (Linux, macOS o Cloud Shell)
curl -X POST \ -H "X-HTTP-Method-Override: GET" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d '{ "names": [ "//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/my-instance" ] }' \ https://cloudasset.googleapis.com/v1/organizations/my-organization-id/effectiveIamPolicies:batchGet
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "X-HTTP-Method-Override" = "GET"; "Authorization" = "Bearer $cred" } $body = @" { "names": [ "//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/my-instance" ] } "@ Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $body ` -Uri "https://cloudasset.googleapis.com/v1/organizations/my-organization-id/effectiveIamPolicies:batchGet" | Select-Object -Expand Content
Respuesta de ejemplo
{ "policyResults": [ { "fullResourceName": "//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/instance-1", "policies": [ { "attachedResource": "//cloudresourcemanager.googleapis.com/projects/my-project", "policy": { "bindings": [ { "role": "roles/cloudkms.admin", "members": [ "user:alex@example.com", "user:bola@example.com" ] }, { "role": "roles/editor", "members": [ "serviceAccount:000000000000-compute@developer.gserviceaccount.com" ] } ] } }, { "attachedResource": "//cloudresourcemanager.googleapis.com/folders/000000000000", "policy": { "bindings": [ { "role": "roles/resourcemanager.folderAdmin", "members": [ "user:cruz@example.com" ] }, { "role": "roles/resourcemanager.folderEditor", "members": [ "user:dani@example.com" ] } ] } }, { "attachedResource": "//cloudresourcemanager.googleapis.com/organizations/000000000000", "policy": { "bindings": [ { "role": "organizations/1060291660910/roles/CustomProjectAdmin", "members": [ "user:hao@example.com" ] }, { "role": "roles/accesscontextmanager.policyAdmin", "members": [ "serviceAccount:000000000000@cloudservices.gserviceaccount.com", "user:ira@example.com", "user:jie@example.com" ] } ] } } ] } ] }