Puedes buscar políticas de permisos de IAM en tus recursos de un proyecto, una carpeta o una organización, y filtrar los resultados devueltos con una consulta.
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.
Cómo crear una consulta
Antes de crear una consulta, puede ser útil comenzar con una solicitud de búsqueda que no especifique una consulta. Usa los campos y los valores de la respuesta completa para crear una consulta con la sintaxis de consulta de búsqueda y defínela mejor hasta que se muestren los resultados que deseas.
Los campos que se pueden usar en una consulta se detallan en la documentación de referencia de IamPolicySearchResult
.
Ten en cuenta las siguientes limitaciones cuando construyas una consulta:
El campo
policy
es un objeto anidado, por lo que solo se puede usar con el operador:
.No todos los tipos de recursos se pueden buscar. Consulta Tipos de recursos para confirmar si un servicio no está disponible en las APIs de búsqueda.
También puedes usar los siguientes campos adicionales para restringir los resultados a ciertos tipos de principales, permisos o roles:
Campo | Descripción |
---|---|
memberTypes |
Contiene uno de los siguientes tipos de principal de IAM:
EjemplomemberTypes=user |
policy.role.permissions |
Contiene permisos de IAM específicos. Ejemplopolicy.role.permissions=storage.buckets.create |
roles |
Contiene roles de IAM específicos. Ejemploroles=roles/storage.objectAdmin |
Busca políticas de permisos de IAM
Antes de crear una consulta, puede ser útil comenzar con una solicitud de búsqueda que no especifique una consulta. Usa los campos y los valores de la respuesta completa para crear una consulta con la sintaxis de consulta de búsqueda y defínela mejor hasta que se muestren los resultados que deseas.
Console
Para buscar metadatos de políticas de permisos de IAM, completa los siguientes pasos.
-
Ve a la página Inventario de activos en la consola de Google Cloud .
- Cambia al proyecto, la carpeta o la organización en la que deseas realizar la búsqueda.
- Haz clic en la pestaña Política de IAM.
-
Para buscar políticas de permisos, ingresa una consulta en el campo Filtro. Consulta Sintaxis de las búsquedas para obtener información sobre cómo escribir una búsqueda.
Para facilitar la creación de consultas, puedes hacer clic en el campo Filtro para mostrar y agregar los campos disponibles en los que se puede realizar una búsqueda a tu consulta.
Después de realizar una búsqueda, las políticas de permiso que coinciden con la consulta se enumeran en la tabla Resultados. Haz doble clic en tu búsqueda para editarla o usa el panel Filtrar resultados para aplicar Ajustes predeterminados de consulta rápidos o restringir los resultados de la búsqueda según criterios específicos.
Para ver la consulta como un comando de Google Cloud CLI, haz clic en Ver consulta.
Para exportar los resultados, haz clic en Descargar CSV.
gcloud
gcloud asset search-all-iam-policies \ --scope=SCOPE_PATH \ --query="QUERY" \ --asset-types=ASSET_TYPE_1,ASSET_TYPE_2,... \ --order-by="ORDER_BY"
Ingresa los siguientes valores:
-
SCOPE_PATH
: Usa uno de los siguientes valores:Los valores permitidos son los siguientes:
-
projects/PROJECT_ID
, dondePROJECT_ID
es el ID del proyecto que tiene activos con políticas de IAM de permiso que deseas buscar. -
projects/PROJECT_NUMBER
, dondePROJECT_NUMBER
es el número del proyecto que tiene activos con políticas de IAM de permiso que deseas buscar.Cómo encontrar un Google Cloud número de proyecto
Google Cloud console
Para encontrar el número de un proyecto de 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_ID
es el ID de la carpeta que tiene activos con políticas de IAM de permiso que deseas buscar.Cómo encontrar el ID de una carpeta Google Cloud
Google Cloud console
Para encontrar el ID de una carpeta de Google Cloud , completa los siguientes pasos:
-
Ve 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
--format
para 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_ID
es el ID de la organización que tiene activos con políticas de IAM de permiso que deseas buscar.Cómo encontrar el ID de una organización de Google Cloud
Google Cloud console
Para encontrar el ID de una organización Google Cloud , completa los siguientes pasos:
-
Ve 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))"
-
-
-
QUERY
: Opcional Es la expresión de la consulta. Si no se especifica o está vacío, se buscarán todos los recursos en el alcance especificado. Para obtener información sobre cómo escribir una consulta de búsqueda, consulta Sintaxis de la consulta de búsqueda. ASSET_TYPE_#
: Opcional Es una lista separada por comas de tipos de recursos que se pueden buscar. Se admiten expresiones regulares compatibles con RE2. Si la expresión regular no coincide con ningún tipo de recurso admitido, se muestra un errorINVALID_ARGUMENT
. Cuando no se especifica--asset-types
, se muestran todos los tipos de recursos.-
ORDER_BY
: Opcional Es una lista de campos separados por comas que especifican el orden de clasificación de los resultados. El orden predeterminado es ascendente. AgregaDESC
después del nombre del campo para indicar el orden descendente. Consulta la documentación de referencia para saber qué campos se pueden ordenar.
Puedes usar las marcas --format
y --flatten
para dar formato al resultado de gcloud CLI.
Consulta la referencia de la CLI de gcloud para ver todas las opciones.
Ejemplo
Ejecuta el siguiente comando para obtener una lista de todas las instancias de Compute Engine (compute.googleapis.com/Instance
) en el proyecto my-project
con una vinculación de política de IAM de permiso que las vincule al usuario alex@example.com
. Los resultados se ordenan de forma descendente por recurso (resource DESC
).
gcloud asset search-all-iam-policies \ --scope=projects/my-project \ --query="policy:\"user:alex@example.com\"" \ --asset-types=compute.googleapis.com/Instance \ --order-by="resource DESC"
Respuesta de ejemplo
--- assetType: compute.googleapis.com/Instance folders: - folders/0000000000000 organization: organizations/0000000000000 policy: bindings: - members: - user:alex@example.com role: roles/compute.viewer - members: - user:alex@example.com role: roles/editor - members: - user:alex@example.com role: roles/owner project: projects/0000000000000 resource: //compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/debian
REST
Método HTTP y URL:
POST https://cloudasset.googleapis.com/v1/SCOPE_PATH:searchAllIamPolicies
Cuerpo JSON de la solicitud:
{ "query": "QUERY", "assetTypes": [ "ASSET_TYPE_1", "ASSET_TYPE_2", "..." ], "orderBy": "ORDER_BY", "pageSize": "PAGE_SIZE", "pageToken": "PAGE_TOKEN" }
Ingresa los siguientes valores:
-
SCOPE_PATH
: Usa uno de los siguientes valores:Los valores permitidos son los siguientes:
-
projects/PROJECT_ID
, dondePROJECT_ID
es el ID del proyecto que tiene activos con políticas de IAM de permiso que deseas buscar. -
projects/PROJECT_NUMBER
, dondePROJECT_NUMBER
es el número del proyecto que tiene activos con políticas de IAM de permiso que deseas buscar.Cómo encontrar un Google Cloud número de proyecto
Google Cloud console
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 el queFOLDER_ID
es el ID de la carpeta que tiene activos con políticas de IAM de permiso que deseas buscar.Cómo encontrar el ID de una carpeta Google Cloud
Google Cloud console
Para encontrar el ID de una carpeta de Google Cloud , completa los siguientes pasos:
-
Ve 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
--format
para 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_ID
es el ID de la organización que tiene activos con políticas de IAM de permiso que deseas buscar.Cómo encontrar el ID de una organización de Google Cloud
Google Cloud console
Para encontrar el ID de una organización Google Cloud , completa los siguientes pasos:
-
Ve 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))"
-
-
-
QUERY
: Opcional Es la expresión de la consulta. Si no se especifica o está vacío, se buscarán todos los recursos en el alcance especificado. Para obtener información sobre cómo escribir una consulta de búsqueda, consulta Sintaxis de la consulta de búsqueda. ASSET_TYPE_#
: Opcional Es un array de tipos de recursos que se pueden buscar. Se admiten expresiones regulares compatibles con RE2. Si la expresión regular no coincide con ningún tipo de recurso admitido, se muestra un errorINVALID_ARGUMENT
. Cuando no se especificaassetTypes
, se muestran todos los tipos de recursos.-
ORDER_BY
: Opcional Es una lista de campos separados por comas que especifican el orden de clasificación de los resultados. El orden predeterminado es ascendente. AgregaDESC
después del nombre del campo para indicar el orden descendente. Consulta la documentación de referencia para saber qué campos se pueden ordenar. -
PAGE_SIZE
: Opcional Es la cantidad de resultados que se devolverán por página. La cantidad máxima es 500. Si el valor se establece en0
o en un valor negativo, se selecciona un valor predeterminado adecuado. Se devuelve unnextPageToken
para recuperar resultados posteriores. -
PAGE_TOKEN
: Opcional Las respuestas a solicitudes largas se separan en varias páginas. Cuando no se especificapageToken
, se devuelve la primera página. Se pueden llamar a las páginas posteriores usando elnextPageToken
de la respuesta anterior como el valor depageToken
.
Consulta la referencia de REST para ver todas las opciones.
Ejemplos de comandos
Ejecuta uno de los siguientes comandos para obtener una lista de todas las instancias de Compute Engine (compute.googleapis.com/Instance
) en el proyecto my-project
con una vinculación de política de permisos de IAM que las vincule al usuario alex@example.com
. Los resultados se ordenan de forma descendente por recurso (resource DESC
).
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 '{ "query": "policy:\"user:alex@example.com\"", "assetTypes": ["compute.googleapis.com/Instance"], "orderBy": "resource DESC" }' \ https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "X-HTTP-Method-Override" = "GET"; "Authorization" = "Bearer $cred" } $body = @" { "query": "policy:\"user:alex@example.com\"", "assetTypes": ["compute.googleapis.com/Instance"], "orderBy": "resource DESC" } "@ Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $body ` -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies" | Select-Object -Expand Content
Respuesta de ejemplo
{ "resource": "//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/debian", "project": "projects/0000000000000", "policy": { "bindings": [ { "role": "roles/compute.viewer", "members": [ "user:alex@example.com" ] }, { "role": "roles/editor", "members": [ "user:alex@example.com" ] }, { "role": "roles/owner", "members": [ "user:alex@example.com" ] } ] }, "assetType": "compute.googleapis.com/Instance", "folders": [ "folders/0000000000000" ], "organization": "organizations/0000000000000" }
C#
Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Asset Inventory, consulta Bibliotecas cliente de Cloud Asset Inventory.
Para autenticarte en Cloud Asset Inventory, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Go
Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Asset Inventory, consulta Bibliotecas cliente de Cloud Asset Inventory.
Para autenticarte en Cloud Asset Inventory, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Java
Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Asset Inventory, consulta Bibliotecas cliente de Cloud Asset Inventory.
Para autenticarte en Cloud Asset Inventory, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Node.js
Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Asset Inventory, consulta Bibliotecas cliente de Cloud Asset Inventory.
Para autenticarte en Cloud Asset Inventory, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
PHP
Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Asset Inventory, consulta Bibliotecas cliente de Cloud Asset Inventory.
Para autenticarte en Cloud Asset Inventory, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Python
Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Asset Inventory, consulta Bibliotecas cliente de Cloud Asset Inventory.
Para autenticarte en Cloud Asset Inventory, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Ruby
Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Asset Inventory, consulta Bibliotecas cliente de Cloud Asset Inventory.
Para autenticarte en Cloud Asset Inventory, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Ejemplos de búsquedas adicionales
En las siguientes muestras de código, se muestran búsquedas específicas para gcloud y REST que te ayudarán a crear tus propias búsquedas.
Recursos con políticas de permisos de IAM
En el siguiente ejemplo, se muestra cómo buscar todos los recursos con políticas de permiso de IAM en el proyecto my-project
.
gcloud
gcloud asset search-all-iam-policies \ --scope=projects/my-project \ --flatten="policy.bindings[].members[]" \ --format="table(resource, policy.bindings.role, policy.bindings.members)"
REST
Método HTTP y URL:
GET https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies
Ejemplos de comandos
curl (Linux, macOS o Cloud Shell)
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method GET ` -Headers $headers ` -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies" | Select-Object -Expand Content
Recursos con nombre y políticas de permisos de IAM
En el siguiente ejemplo, se muestra cómo buscar todos los recursos que tienen example
en su nombre y que tienen políticas de IAM de permiso.
gcloud
gcloud asset search-all-iam-policies \ --scope=projects/my-project \ --query="resource:example"
REST
Método HTTP y URL:
POST https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies
Cuerpo JSON de la solicitud:
{ "pageSize": 1, "query": "resource:example" }
Ejemplos de comandos
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 '{ "pageSize": 1, "query": "resource:example" }' \ https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "X-HTTP-Method-Override" = "GET"; "Authorization" = "Bearer $cred" } $body = @" { "pageSize": 1, "query": "resource:example" } "@ Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $body ` -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies" | Select-Object -Expand Content
Políticas de permisos de IAM en proyectos, carpetas y organizaciones
En el siguiente ejemplo, se muestra cómo buscar todas las políticas de IAM de permiso en todos los proyectos y carpetas de la organización con el ID my-organization-id
.
Cómo encontrar el ID de una organización de Google Cloud
Google Cloud console
Para encontrar el ID de una organización Google Cloud , completa los siguientes pasos:
-
Ve 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
gcloud asset search-all-iam-policies \ --scope=organizations/my-organization-id \ --asset-types=cloudresourcemanager.*
REST
Método HTTP y URL:
POST https://cloudasset.googleapis.com/v1/organizations/my-organization-id:searchAllIamPolicies
Cuerpo JSON de la solicitud:
{ "assetTypes": "cloudresourcemanager.*", "pageSize": 1, }
Ejemplos de comandos
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 '{ "assetTypes": "cloudresourcemanager.*", "pageSize": 1, }' \ https://cloudasset.googleapis.com/v1/organizations/my-organization-id:searchAllIamPolicies
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "X-HTTP-Method-Override" = "GET"; "Authorization" = "Bearer $cred" } $body = @" { "assetTypes": "cloudresourcemanager.*", "pageSize": 1, } "@ Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $body ` -Uri "https://cloudasset.googleapis.com/v1/organizations/my-organization-id:searchAllIamPolicies" | Select-Object -Expand Content
Propietarios de un proyecto
En el siguiente ejemplo, se muestra cómo buscar principales con el rol de propietario (roles/owner
) en el proyecto my-project
.
Esta solicitud solo devuelve los principales a los que se les otorgó el rol de propietario en el proyecto. No incluye las principales que heredan el rol de propietario a través de la herencia de políticas.
gcloud
gcloud asset search-all-iam-policies \ --scope=projects/my-project \ --query="roles:roles/owner" \ --asset-types=cloudresourcemanager.* \ --flatten="policy.bindings[].members[]" \ --format="table(policy.bindings.members)"
REST
Método HTTP y URL:
POST https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies
Cuerpo JSON de la solicitud:
{ "assetTypes": "cloudresourcemanager.*", "pageSize": 1, "query": "roles:roles/owner" }
Ejemplos de comandos
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 '{ "assetTypes": "cloudresourcemanager.*", "pageSize": 1, "query": "roles:roles/owner" }' \ https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "X-HTTP-Method-Override" = "GET"; "Authorization" = "Bearer $cred" } $body = @" { "assetTypes": "cloudresourcemanager.*", "pageSize": 1, "query": "roles:roles/owner" } "@ Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $body ` -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies" | Select-Object -Expand Content
Proyectos en los que un principal tiene el rol de propietario
En el siguiente ejemplo, se muestra cómo buscar proyectos en los que alex@example.com
tiene el rol de propietario (roles/owner
) en la organización con el ID my-organization-id
.
Esta solicitud solo devuelve los proyectos en los que se le otorgó a alex@example.com
el rol de propietario. No incluye los proyectos en los que alex@example.com
heredó el rol de propietario.
Cómo encontrar el ID de una organización de Google Cloud
Google Cloud console
Para encontrar el ID de una organización Google Cloud , completa los siguientes pasos:
-
Ve 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
gcloud asset search-all-iam-policies \ --scope=organizations/my-organization-id \ --query="policy:(roles/owner alex@example.com)" \ --asset-types=cloudresourcemanager.googleapis.com/Project \ --format="table(resource)"
REST
Método HTTP y URL:
POST https://cloudasset.googleapis.com/v1/organizations/my-organization-id:searchAllIamPolicies
Cuerpo JSON de la solicitud:
{ "assetTypes": "cloudresourcemanager.googleapis.com/Project", "pageSize": 1, "query": "policy:(roles/owner alex@example.com)" }
Ejemplos de comandos
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 '{ "assetTypes": "cloudresourcemanager.googleapis.com/Project", "pageSize": 1, "query": "policy:(roles/owner alex@example.com)" }' \ https://cloudasset.googleapis.com/v1/organizations/my-organization-id:searchAllIamPolicies
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "X-HTTP-Method-Override" = "GET"; "Authorization" = "Bearer $cred" } $body = @" { "assetTypes": "cloudresourcemanager.googleapis.com/Project", "pageSize": 1, "query": "policy:(roles/owner alex@example.com)" } "@ Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $body ` -Uri "https://cloudasset.googleapis.com/v1/organizations/my-organization-id:searchAllIamPolicies" | Select-Object -Expand Content
Roles que tiene un principal en un proyecto
En el siguiente ejemplo, se muestra cómo buscar los roles que tiene alex@example.com
en el proyecto my-project
.
Esta solicitud solo devuelve los roles que se le otorgan a alex@example.com
en el proyecto. No incluye los roles que alex@example.com
heredó a través de la herencia de políticas.
gcloud
gcloud asset search-all-iam-policies \ --scope=projects/my-project \ --query="policy:alex@example.com" \ --asset-types=cloudresourcemanager.googleapis.com/Project \ --flatten="policy.bindings[]" \ --format="table(policy.bindings.role)"
REST
Método HTTP y URL:
POST https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies
Cuerpo JSON de la solicitud:
{ "assetTypes": "cloudresourcemanager.googleapis.com/Project", "pageSize": 1, "query": "policy:alex@example.com" }
Ejemplos de comandos
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 '{ "assetTypes": "cloudresourcemanager.googleapis.com/Project", "pageSize": 1, "query": "policy:alex@example.com" }' \ https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "X-HTTP-Method-Override" = "GET"; "Authorization" = "Bearer $cred" } $body = @" { "assetTypes": "cloudresourcemanager.googleapis.com/Project", "pageSize": 1, "query": "policy:alex@example.com" } "@ Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $body ` -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies" | Select-Object -Expand Content
Permisos que tiene una principal en un proyecto
En el siguiente ejemplo, se muestra cómo buscar los permisos que tiene alex@example.com
en el proyecto my-project
.
Esta solicitud solo devuelve los permisos que alex@example.com
tiene en el proyecto. No incluye los permisos que alex@example.com
heredó a través de la herencia de políticas.
gcloud
gcloud asset search-all-iam-policies \ --scope=projects/my-project \ --query="policy:alex@example.com policy.role.permissions:\"\"" \ --asset-types=cloudresourcemanager.* \ --format="default(explanation.matchedPermissions)"
REST
Método HTTP y URL:
POST https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies
Cuerpo JSON de la solicitud:
{ "assetTypes": "cloudresourcemanager.*", "pageSize": 1, "query": "policy:alex@example.com policy.role.permissions:\"\"" }
Ejemplos de comandos
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 '{ "assetTypes": "cloudresourcemanager.*", "pageSize": 1, "query": "policy:alex@example.com policy.role.permissions:\"\"" }' \ https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "X-HTTP-Method-Override" = "GET"; "Authorization" = "Bearer $cred" } $body = @" { "assetTypes": "cloudresourcemanager.*", "pageSize": 1, "query": "policy:alex@example.com policy.role.permissions:\"\"" } "@ Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $body ` -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies" | Select-Object -Expand Content
Principales que pueden acceder a buckets de Cloud Storage
En el siguiente ejemplo, se muestra cómo buscar principales que pueden acceder a buckets de Cloud Storage en el proyecto my-project
.
gcloud
gcloud asset search-all-iam-policies \ --scope=projects/my-project \ --query="policy.role.permissions:storage.buckets" \ --asset-types=cloudresourcemanager.* \ --flatten="policy.bindings[].members[]" \ --format="table(policy.bindings.members)"
REST
Método HTTP y URL:
POST https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies
Cuerpo JSON de la solicitud:
{ "assetTypes": "cloudresourcemanager.*", "pageSize": 1, "query": "policy.role.permissions:storage.buckets" }
Ejemplos de comandos
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 '{ "assetTypes": "cloudresourcemanager.*", "pageSize": 1, "query": "policy.role.permissions:storage.buckets" }' \ https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "X-HTTP-Method-Override" = "GET"; "Authorization" = "Bearer $cred" } $body = @" { "assetTypes": "cloudresourcemanager.*", "pageSize": 1, "query": "policy.role.permissions:storage.buckets" } "@ Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $body ` -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies" | Select-Object -Expand Content
Cuentas de servicio que tienen un rol de propietario
En el siguiente ejemplo, se muestra cómo buscar cuentas de servicio con el rol de propietario (roles/owner
) en la organización con el my-organization-id
. Puedes usar esta búsqueda para reducir tu perfil de riesgo.
Cómo encontrar el ID de una organización de Google Cloud
Google Cloud console
Para encontrar el ID de una organización Google Cloud , completa los siguientes pasos:
-
Ve 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
En este ejemplo, se usa el comando "grep", que está disponible en Cloud Shell y en sistemas operativos similares a Unix.
gcloud asset search-all-iam-policies \ --scope=organizations/my-organization-id \ --query="policy:(roles/owner serviceAccount)" \ --flatten="policy.bindings[].members[]" \ --format="table(resource.segment(3):label=RESOURCE_TYPE, resource.basename():label=RESOURCE, policy.bindings.members)" | grep serviceAccount
REST
Método HTTP y URL:
POST https://cloudasset.googleapis.com/v1/organizations/my-organization-id:searchAllIamPolicies
Cuerpo JSON de la solicitud:
{ "pageSize": 1, "query": "policy:(roles/owner serviceAccount)" }
Ejemplos de comandos
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 '{ "pageSize": 1, "query": "policy:(roles/owner serviceAccount)" }' \ https://cloudasset.googleapis.com/v1/organizations/my-organization-id:searchAllIamPolicies
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "X-HTTP-Method-Override" = "GET"; "Authorization" = "Bearer $cred" } $body = @" { "pageSize": 1, "query": "policy:(roles/owner serviceAccount)" } "@ Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $body ` -Uri "https://cloudasset.googleapis.com/v1/organizations/my-organization-id:searchAllIamPolicies" | Select-Object -Expand Content
Recursos con roles otorgados a un dominio
En el siguiente ejemplo, se muestra cómo buscar recursos con roles otorgados al dominio example.com
, en la organización con el ID my-organization-id
.
Cómo encontrar el ID de una organización de Google Cloud
Google Cloud console
Para encontrar el ID de una organización Google Cloud , completa los siguientes pasos:
-
Ve 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
gcloud asset search-all-iam-policies \ --scope=organizations/my-organization-id \ --query="policy:\"domain:example.com\"" \ --flatten="policy.bindings[]" \ --format="table(resource, policy.bindings.role)"
REST
Método HTTP y URL:
POST https://cloudasset.googleapis.com/v1/organizations/my-organization-id:searchAllIamPolicies
Cuerpo JSON de la solicitud:
{ "pageSize": 1, "query": "policy:\"domain:DOMAIN_NAME\"" }
Ejemplos de comandos
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 '{ "pageSize": 1, "query": "policy:\"domain:DOMAIN_NAME\"" }' \ https://cloudasset.googleapis.com/v1/organizations/my-organization-id:searchAllIamPolicies
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "X-HTTP-Method-Override" = "GET"; "Authorization" = "Bearer $cred" } $body = @" { "pageSize": 1, "query": "policy:\"domain:DOMAIN_NAME\"" } "@ Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $body ` -Uri "https://cloudasset.googleapis.com/v1/organizations/my-organization-id:searchAllIamPolicies" | Select-Object -Expand Content
Recursos con roles otorgados al público
En el siguiente ejemplo, se muestra cómo buscar recursos con roles otorgados al público en la organización con el ID my-organization-id
.
Cómo encontrar el ID de una organización de Google Cloud
Google Cloud console
Para encontrar el ID de una organización Google Cloud , completa los siguientes pasos:
-
Ve 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
gcloud asset search-all-iam-policies \ --scope=organizations/my-organization-id \ --query="memberTypes:(allUsers OR allAuthenticatedUsers)" \ --format="table(resource)"
REST
Método HTTP y URL:
POST https://cloudasset.googleapis.com/v1/organizations/my-organization-id:searchAllIamPolicies
Cuerpo JSON de la solicitud:
{ "pageSize": 1, "query": "memberTypes:(allUsers OR allAuthenticatedUsers)" }
Ejemplos de comandos
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 '{ "pageSize": 1, "query": "memberTypes:(allUsers OR allAuthenticatedUsers)" }' \ https://cloudasset.googleapis.com/v1/organizations/my-organization-id:searchAllIamPolicies
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "X-HTTP-Method-Override" = "GET"; "Authorization" = "Bearer $cred" } $body = @" { "pageSize": 1, "query": "memberTypes:(allUsers OR allAuthenticatedUsers)" } "@ Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $body ` -Uri "https://cloudasset.googleapis.com/v1/organizations/my-organization-id:searchAllIamPolicies" | Select-Object -Expand Content
Principales que pueden cambiar las políticas de permisos de IAM en una organización
En el siguiente ejemplo, se muestra cómo buscar principales que pueden cambiar las políticas de permisos de IAM en la organización con el ID my-organization-id
.
Cómo encontrar el ID de una organización de Google Cloud
Google Cloud console
Para encontrar el ID de una organización Google Cloud , completa los siguientes pasos:
-
Ve 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
gcloud asset search-all-iam-policies \ --scope=organizations/my-organization-id \ --query="policy.role.permissions:(resourcemanager.organizations.setIamPolicy OR resourcemanager.folders.setIamPolicy OR resourcemanager.projects.setIamPolicy)" \ --format="json(resource, policy.bindings, explanation.matchedPermissions)"
REST
Método HTTP y URL:
POST https://cloudasset.googleapis.com/v1/organizations/my-organization-id:searchAllIamPolicies
Cuerpo JSON de la solicitud:
{ "pageSize": 1, "query": "policy.role.permissions:(resourcemanager.organizations.setIamPolicy OR resourcemanager.folders.setIamPolicy OR resourcemanager.projects.setIamPolicy)" }
Ejemplos de comandos
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 '{ "pageSize": 1, "query": "policy.role.permissions:(resourcemanager.organizations.setIamPolicy OR resourcemanager.folders.setIamPolicy OR resourcemanager.projects.setIamPolicy)" }' \ https://cloudasset.googleapis.com/v1/organizations/my-organization-id:searchAllIamPolicies
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "X-HTTP-Method-Override" = "GET"; "Authorization" = "Bearer $cred" } $body = @" { "pageSize": 1, "query": "policy.role.permissions:(resourcemanager.organizations.setIamPolicy OR resourcemanager.folders.setIamPolicy OR resourcemanager.projects.setIamPolicy)" } "@ Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $body ` -Uri "https://cloudasset.googleapis.com/v1/organizations/my-organization-id:searchAllIamPolicies" | Select-Object -Expand Content