Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Buscar políticas de IAM

La API de Cloud Asset te permite usar un lenguaje de consulta personalizado para buscar políticas de Identity and Access Management (IAM) dentro de una organización, carpeta o proyecto.

Antes de comenzar

Llama a SearchAllIamPolicies

gcloud

Puedes llamar a SearchAllIamPolicies con el comando gcloud asset search-all-iam-policies. Debes ejecutar la versión 302.0.0 del SDK de Cloud o una más reciente. Puedes verificar tu versión con el comando gcloud version.

gcloud asset search-all-iam-policies \
  --scope=SCOPE \
  --query=QUERY \
  --page-size=PAGE_SIZE

Aquí:

  • (Opcional) SCOPE: Un permiso puede ser un proyecto, una carpeta o una organización. La búsqueda se limita a las políticas de IAM dentro de este permiso. El emisor debe tener el permiso cloudasset.assets.searchAllIamPolicies en el permiso deseado. Si no se especifica, se usará la propiedad del proyecto configurado. Para encontrar el proyecto configurado, ejecuta gcloud config get-value project. Para cambiar la configuración, ejecuta gcloud config set project PROJECT_ID.

    Los valores permitidos son los siguientes:

    • projects/PROJECT_ID (p. ej., "projects/foo-bar")
    • projects/PROJECT_NUMBER (p. ej., "projects/12345678")
    • folders/FOLDER_NUMBER (p. ej., "folders/1234567")
    • organizations/ORGANIZATION_NUMBER (p. ej., "organizations/123456")
  • QUERY: la declaración de la consulta (opcional). Consulta cómo construir una consulta para obtener más información. Si no se especifica o está vacía, buscará todas las políticas de IAM dentro del scope especificado. Ten en cuenta que la string de consulta se compara con cada vinculación de política de IAM, incluidos sus miembros, funciones y condiciones de IAM. Las políticas de IAM que se muestran solo contendrán las vinculaciones que coinciden con tu consulta. Para obtener más información sobre la estructura de las políticas de IAM, consulta la documentación sobre las políticas de IAM.

    Ejemplos:

    • policy:amy@gmail.com para buscar vinculaciones de políticas de IAM que especifiquen el usuario “amy@gmail.com”.
    • policy:roles/compute.admin para encontrar vinculaciones de políticas de IAM que especifiquen la función de administrador de Compute.
    • policy:comp* para encontrar vinculaciones de política de IAM que contengan “comp” como prefijo de cualquier palabra en la vinculación.
    • policy.role.permissions:storage.buckets.update para encontrar vinculaciones de política de IAM que especifiquen una función que contenga el permiso “storage.buckets.update”. Ten en cuenta que, si los emisores no tienen acceso iam.roles.get a los permisos incluidos en una función, las vinculaciones de política que especifican esta función se quitarán de los resultados de la búsqueda.
    • policy.role.permissions:upd* para encontrar vinculaciones de política de IAM que especifiquen una función que contenga "uped" como un prefijo de cualquier palabra en la vinculación. Ten en cuenta que si los emisores no tienen acceso de iam.roles.get a los permisos incluidos en una función, las vinculaciones de políticas que especifican esta función se quitarán de los resultados de la búsqueda.
    • resource:organizations/123456 para encontrar vinculaciones de políticas de IAM que se establecen en "organizations/123456".
    • resource=//cloudresourcemanager.googleapis.com/projects/myproject para encontrar vinculaciones de política de IAM que se configuren en el proyecto llamado "myproject".
    • Important para encontrar vinculaciones de políticas de IAM que contengan la palabra “Important” en cualquiera de los campos de búsqueda (excepto los permisos incluidos).
    • resource:(instance1 OR instance2) policy:amy para encontrar vinculaciones de políticas de IAM que se establecen en los recursos “instance1” o “instance2” y también especifican el usuario “amy”.
  • PAGE_SIZE: El tamaño de la página para la paginación del resultado de la búsqueda (opcional). La cantidad máxima es 500. Si el valor se establece en 0, se seleccionará un valor predeterminado adecuado.

  • Busca todas las vinculaciones de políticas de IAM en tu organizations/123456 que contengan el dominio mycompany.com:

    gcloud asset search-all-iam-policies \
      --scope='organizations/123456' \
      --query='policy:"domain:mycompany.com"'
    
  • Busca todas las vinculaciones de políticas de IAM en tu organizations/123456 en la que se otorgó a myuser@mycompany.com la función básica de propietario (roles/owner):

    gcloud asset search-all-iam-policies \
      --scope='organizations/123456' \
      --query='policy:(roles/owner myuser@mycompany.com)'
    
  • Busca todas las vinculaciones de políticas de IAM en tu organizations/123456 que se establecieron en projects/12345678:

    gcloud asset search-all-iam-policies \
      --scope='organizations/123456' \
      --query='resource:projects/12345678'
    

api

Puedes llamar a SearchAllIamPolicies con un token de OAuth válido para un proyecto. Para llamar al método SearchAllIamPolicies desde Cloud Shell o cualquier consola en la que esté disponible el comando gcloud:

  1. Si no configuraste la pantalla de consentimiento de OAuth de tu proyecto, deberás hacerlo. Se requerirá una dirección de correo electrónico y un nombre del producto.

    1. Ve a la pantalla de consentimiento de OAuth de tu proyecto.
      Configuración de la pantalla de consentimiento
    2. Ingresa el Nombre de la aplicación que deseas mostrar.
    3. En Correo electrónico de asistencia, selecciona la dirección de correo electrónico que deseas mostrar como contacto público. Debe ser tu dirección de correo electrónico o un grupo de Google que te pertenezca.
    4. Agrega otro tipo de información opcional que desees mostrar.
    5. Haz clic en Guardar.
  2. Crea un token de OAuth para tu proyecto. Consulta Configura OAuth 2.0 para obtener más información.

    1. Ve a la página Crear ID de cliente de OAuth.
      Crear clientes de OAuth
    2. Selecciona App de escritorio como el Tipo de aplicación.
    3. Haga clic en Crear.
  3. Descarga el archivo client_secret.json.

    1. Ve a la página Credenciales.
    2. A la derecha de tu ID de cliente nuevo, haz clic en Descargar JSON.
    3. Almacena el archivo de forma segura en una ubicación a la que solo pueda acceder tu app.
  4. Accede mediante el archivo JSON son el siguiente comando.

    gcloud auth application-default login --client-id-file=YOUR_JSON_FILE
    

    Tenga en cuenta que este comando te solicitará que abras un vínculo. Asegúrate de que la página muestre el Nombre de la aplicación que estableciste en la pantalla de consentimiento de OAuth.

  5. Genera un token de autenticación para tu cuenta con el siguiente comando:

    TOKEN=$(gcloud auth application-default print-access-token)
    
  6. Ahora puedes consultar las políticas de IAM con los comandos curl.

    PAGE_SIZE=PAGE_SIZE
    PAGE_TOKEN="PAGE_TOKEN"
    SCOPE="SCOPE"
    QUERY="QUERY"
    curl -s -G \
        -H "Authorization: Bearer $TOKEN" \
        -d "page_size=$PAGE_SIZE" \
        -d "page_token=$PAGE_TOKEN" \
        --data-urlencode "query=$QUERY" \
        "https://cloudasset.googleapis.com/v1/$SCOPE:searchAllIamPolicies"
    
  • (Opcional) SCOPE: Un permiso puede ser un proyecto, una carpeta o una organización. La búsqueda se limita a las políticas de IAM dentro de este permiso. El emisor debe tener el permiso cloudasset.assets.searchAllIamPolicies en el permiso deseado.

    Los valores permitidos son los siguientes:

    • projects/PROJECT_ID (p. ej., "projects/foo-bar")
    • projects/PROJECT_NUMBER (p. ej., "projects/12345678")
    • folders/FOLDER_NUMBER (p. ej., "folders/1234567")
    • organizations/ORGANIZATION_NUMBER (p. ej., "organizations/123456")
  • QUERY: la declaración de la consulta (opcional). Consulta cómo construir una consulta para obtener más información. Si no se especifica o está vacía, buscará todas las políticas de IAM dentro del scope especificado. Ten en cuenta que la string de consulta se compara con cada vinculación de política de IAM, incluidos sus miembros, funciones y condiciones de IAM. Las políticas de IAM que se muestran solo contendrán las vinculaciones que coinciden con tu consulta. Para obtener más información sobre la estructura de las políticas de IAM, consulta la documentación sobre las políticas de IAM.

    Ejemplos:

    • policy:amy@gmail.com para buscar vinculaciones de políticas de IAM que especifiquen el usuario “amy@gmail.com”.
    • policy:roles/compute.admin para encontrar vinculaciones de políticas de IAM que especifiquen la función de administrador de Compute.
    • policy:comp* para encontrar vinculaciones de política de IAM que contengan “comp” como prefijo de cualquier palabra en la vinculación.
    • policy.role.permissions:storage.buckets.update para encontrar vinculaciones de políticas de Cloud IAM que especifiquen una función que contenga el permiso “storage.buckets.update”. Ten en cuenta que, si los emisores no tienen acceso iam.roles.get a los permisos incluidos en una función, las vinculaciones de política que especifican esta función se quitarán de los resultados de la búsqueda.
    • policy.role.permissions:upd* para encontrar vinculaciones de política de IAM que especifiquen una función que contenga "uped" como un prefijo de cualquier palabra en el permiso de la función. Ten en cuenta que si los emisores no tienen acceso de iam.roles.get a los permisos incluidos en una función, las vinculaciones de políticas que especifican esta función se quitarán de los resultados de la búsqueda.
    • resource:organizations/123456 para encontrar vinculaciones de políticas de IAM que se establecen en "organizations/123456".
    • resource=//cloudresourcemanager.googleapis.com/projects/myproject para encontrar vinculaciones de política de IAM que se configuren en el proyecto llamado "myproject".
    • Important para encontrar vinculaciones de políticas de IAM que contengan la palabra “Important” en cualquiera de los campos de búsqueda (excepto los permisos incluidos).
    • resource:(instance1 OR instance2) policy:amy para encontrar vinculaciones de políticas de IAM que se establecen en los recursos “instance1” o “instance2” y también especifican el usuario “amy”.
  • PAGE_SIZE: El tamaño de la página para la paginación del resultado de la búsqueda (opcional). La cantidad máxima es 2,000. Si el valor se establece en 0, se seleccionará un valor predeterminado adecuado.

  • (Opcional) PAGE_TOKEN: El token que representa el siguiente lote de resultados de la llamada anterior a este método. El page_token debe ser el mismo que el valor de next_page_token de la respuesta de la llamada anterior.

Referencia de la API y biblioteca cliente

Construye una consulta

Consulta la sintaxis de las consultas para obtener más información sobre el lenguaje de las consultas.

Consulta la búsqueda de ejemplos de políticas de IAM para obtener más información sobre las consultas de muestra de varios casos de uso reales.

Consulta políticas de IAM mediante vinculación de información

Para buscar políticas de IAM, una expresión de consulta debe tener el siguiente formato:

policy:QUERY

Miembro

Las vinculaciones de políticas de IAM admiten cinco tipos de miembros:

  1. Cuentas de Google, como user:user@gmail.com
  2. Grupos de Google, como group:devs@googlegroups.com
  3. Dominios de Cloud Identity y G Suite, como domain:google.com
  4. Cuentas de servicio, como serviceAccount:my-other-app@appspot.gserviceaccount.com
  5. Identificadores especiales, como allUsers y allAuthenticatedUsers

Puedes limitar tu consulta a las políticas relacionadas con un usuario específico mediante el uso de la siguiente sintaxis:

policy:"user:amy@mycompany.com"

Ten en cuenta que user:amy@mycompany.com debe estar entre comillas dobles, ya que contiene el carácter especial :. Puedes omitir el prefijo user: o group: en una cadena de consulta, si el valor de la consulta es lo suficientemente único o si deseas buscar la dirección de correo electrónico sin importar el tipo de miembro. Por ejemplo, la siguiente consulta probablemente coincidirá con un solo usuario:

policy:amy@mycompany.com
Ejemplos: consulta por miembro
  • Busca todas las vinculaciones de políticas de IAM que especifiquen el usuario Amy:

    policy:amy
    
  • Busca todas las vinculaciones de políticas de IAM que especifiquen el dominio mydomain.com:

    policy:mydomain.com
    
  • Busca todas las vinculaciones de políticas de IAM que especifiquen los usuarios Amy y John:

    policy:(amy john)
    
  • Busca todas las vinculaciones de políticas de IAM que especifiquen los usuarios Amy o John:

    policy:(amy OR john)
    
  • Busca todas las vinculaciones de políticas de IAM en tu organización que contengan amy@mycompany.com:

    policy:amy@mycompany.com
    
  • Busca todas las vinculaciones de políticas de IAM en tu organización que contengan el dominio mycompany.com:

    policy:"domain:mycompany.com"
    
  • Busca todas las vinculaciones de políticas de IAM que asignen funciones a la cuenta de servicio mycompany.gserviceaccount.com:

    policy:"serviceAccount:mycompany.gserviceaccount.com"
    
  • Busca todas las vinculaciones de políticas de IAM que asignen funciones al grupo admins:

    policy:"group:admins"
    
  • Encuentra todas las vinculaciones de políticas de IAM que asignen funciones a todos los usuarios:

    policy:allUsers
    
  • Busca todas las vinculaciones de políticas de IAM que asignen funciones a todos los usuarios autenticados:

    policy:allAuthenticatedUsers
    
  • Busca todas las vinculaciones de políticas de IAM que asignen funciones a amy@mycompany.com o al dominio mycompany.com:

    policy:(amy@mycompany.com OR "domain:mycompany.com")
    

Función

Las vinculaciones de políticas de IAM admiten diferentes tipos de funciones. Todos los nombres de las funciones de IAM comienzan con el prefijo roles/.

  1. Funciones básicas: Existen tres funciones que existían antes de la introducción de IAM: Propietario (roles/owner ), Editor (roles/editor ) y Visualizador (roles/viewer).
  2. Funciones predefinidas: IAM proporciona funciones predefinidas adicionales que brindan acceso detallado a diferentes recursos. Consulta todas las funciones predefinidas.
  3. Funciones personalizadas: Funciones de IAM definidas por el usuario que contienen una lista seleccionada de permisos.

Puedes limitar tu consulta a las políticas relacionadas con una función específica mediante el uso de la siguiente sintaxis:

policy:roles/role-name

Ten en cuenta que puedes omitir el prefijo roles/ en una string de consulta si el valor de la consulta es lo suficientemente único. Por ejemplo, es posible que la siguiente consulta solo coincida con la función roles/cloudasset.owner:

policy:cloudasset.owner
Ejemplos: consulta por función
  • Busca todas las vinculaciones de políticas de IAM que especifiquen la función owner.

    policy:roles/owner
    
  • Busca todas las vinculaciones de políticas de IAM que asignen la función de propietario amy@mycompany.com.

    policy:(roles/owner amy@mycompany.com)
    
  • Busca todas las vinculaciones de políticas de IAM que asignen la función compute.admin a los miembros cuya dirección de correo electrónico contenga la palabra john:

    policy:(roles/compute.admin john)
    
  • Encuentra todas las vinculaciones de políticas de IAM que otorguen la función viewer a los usuarios que tienen “swe” o “sde” como prefijo.

    policy:(roles/viewer (swe* OR sde*))
    

Condiciones de IAM

Las vinculaciones de políticas de IAM pueden contener un objeto condition, que te permite definir y aplicar el control de acceso condicional basado en atributos para los recursos de Google Cloud. Consulta la Descripción general de las condiciones de IAM para obtener más información.

Puedes limitar tu consulta a las políticas relacionadas con una condición específica mediante la siguiente sintaxis:

policy:condition_information
Ejemplos: consulta por condición
  • Busca todas las vinculaciones de políticas de IAM que especifiquen una condición, cuyo título o descripción contenga la palabra "myCondition":

    policy:myCondition
    
  • Busca todas las vinculaciones de políticas de IAM que especifiquen una condición, cuya expresión contiene el atributo "request.time":

    policy:"request.time"
    

Consultar las políticas de IAM según los permisos incluidos

Las funciones de una política pueden incluir una lista de permisos. Consulta la referencia de permisos de IAM para obtener más detalles. Puedes limitar tu consulta a políticas que contengan un permiso específico. Una expresión de consulta tiene los siguientes formatos:

  • Concordancia exacta: policy.role.permissions=QUERY
  • Coincidencia parcial: policy.role.permissions:QUERY
Ejemplos: consulta por permisos
  • Busca todas las vinculaciones de políticas de IAM que contengan el permiso compute.instances.create.

    policy.role.permissions:compute.instances.create
    policy.role.permissions=compute.instances.create
    
  • Busca todas las vinculaciones de políticas de IAM que contengan los permisos relacionados compute.instances.

    policy.role.permissions:compute.instances
    
  • Busca todas las vinculaciones de políticas de IAM que contengan permisos cloudasset.assets.export... (p. ej., cloudasset.assets.exportAssets y cloudasset.assets.exportIamPolicyAnalysis):

    policy.role.permissions:cloudasset.assets.export*
    
  • Busca todas las vinculaciones de políticas de IAM que otorguen a alguien permisos para cambiar las políticas de IAM.

    policy.role.permissions:setIamPolicy
    
  • Busca todas las vinculaciones de políticas de IAM que tengan una función con los permisos compute.instances.create y compute.disks.create.

    policy.role.permissions:(compute.instances.create compute.disks.create)
    
  • Busca todas las vinculaciones de políticas de IAM que contienen el permiso compute.instances.create y especifica el usuario amy.

    policy.role.permissions:compute.instances.create policy:amy
    policy.role.permissions=compute.instances.create policy:amy
    

Consulta políticas de IAM por nombre de recurso

Cuando realizas una búsqueda, puedes especificar un nombre de recurso completo para buscar solo las políticas que se establecieron directamente en el recurso. Una expresión de consulta tiene los siguientes formatos:

  • Concordancia exacta: resource=QUERY
  • Coincidencia parcial: resource:QUERY

Ejemplos: Consulta por nombre de recurso

  • Busca todas las vinculaciones de políticas de IAM que se establezcan directamente en un recurso cuyo nombre de recurso completo sea igual a //cloudresourcemanager.googleapis.com/projects/myproject:

    resource=//cloudresourcemanager.googleapis.com/projects/myproject
    
  • Busca todas las vinculaciones de políticas de IAM que se establezcan directamente en los recursos cuyo nombre completo de recurso contenga la palabra myproject:

    resource:myproject
    
  • Busca todas las vinculaciones de políticas de IAM que se establezcan directamente en los recursos cuyo nombre completo de recurso contenga una palabra con el prefijo myproj:

    resource:myproj*
    
  • Encuentra todas las vinculaciones de políticas de IAM que se configuran directamente en los recursos de un tipo de servicio determinado:

    resource:cloudresourcemanager
    
  • Busca todas las vinculaciones de políticas de IAM que se establecen en myproject o myfolder:

    resource:(myproject OR myfolder)
    
  • Busca todas las vinculaciones de políticas de IAM que se establecen en recursos cloudresourcemanager y asigna la función de propietario a los usuarios de gmail.com:

    resource:cloudresourcemanager policy:(roles/owner gmail.com)
    

Consulta las políticas de IAM por texto libre

También puedes usar una consulta de texto libre sin especificar un campo. Se mostrarán políticas siempre que haya un campo de búsqueda (p. ej., los campos de vinculación de política, el nombre del recurso) que coincida con la consulta.

Ejemplos: Consulta por texto libre

  • Busca todas las vinculaciones de políticas de IAM dentro de tu scope cuyos campos de metadatos (p.ej., vinculaciones de políticas, nombre de recurso) contengan Important como palabra:

    Important
    
  • Busca todas las vinculaciones de políticas de IAM dentro de tu scope cuyos campos de metadatos (p.ej., vinculaciones de políticas, nombre de recurso) contengan import como prefijo de cualquier palabra:

    import*