Los recursos de Google Cloud se organizan en una jerarquía, y cada nodo (organizaciones, carpetas, proyectos, etc.) contiene una referencia a su elemento superior. Puedes usar esa referencia como un término de filtro de clave para realizar análisis a fin de mejorar la coherencia de las búsquedas de recursos.
Puedes otorgar permisos a los usuarios con las funciones personalizadas. Estas funciones operan en el principio del menor privilegio y suelen brindar solo los permisos mínimos necesarios para realizar una tarea en particular.
Este esquema puede ser útil para aislar diferentes grupos de usuarios. Por ejemplo:
- Una empresa grande con departamentos que no deberían poder inspeccionar los recursos de sus pares.
- Contratistas a los que se les otorgan permisos de un proyecto específico, pero no de otros recursos.
Sin embargo, como resultado de sus permisos restringidos, las funciones personalizadas pueden ocasionar que se omitan muchos recursos en tu jerarquía cuando se ejecuta una operación de lista. Cuando se realizan búsquedas como usuario al que se le otorgó una función personalizada, puede ser difícil saber por qué ciertos recursos no aparecen.
Para evitar esta situación, en esta página se analizan las prácticas recomendadas para enumerar todos de los recursos que administra la API de Cloud Resource Manager en tu jerarquía de recursos. Tú puedes usar esta guía para configurar verificaciones de auditoría personalizadas o crear tus propias del usuario sobre la API de Cloud Resource Manager.
Enumera todos los nodos de recursos
Cuando analizas la jerarquía de recursos para ver una lista de todos los recursos, necesitas resultados con coherencia sólida. Si tu análisis omite recursos o proporciona resultados desactualizados, puede ser difícil saber que algo salió mal. Si deseas asegurarte de que siempre obtendrás los resultados más precisos y completos, usa una cuenta de servicio y realiza un análisis de la manera siguiente:
- Otorga a una cuenta de servicio los permisos
list
yget
para organizaciones, carpetas y proyectos en el recurso de la organización. - Si deseas enumerar los recursos de proyectos y carpetas, especifica el recurso superior en la string de filtro.
- Ejecuta el método
projects.list()
con esta cuenta de servicio para cada tipo de recurso que deseas buscar y cualquier recurso intermedio, como carpetas.
Ejemplo para enumerar todos los nodos de recursos
El siguiente pseudocódigo muestra cómo enumerar todos los nodos de recursos en tu Organizaciones:
organizations = organizations.search()
projects = emptyList()
parentsToList = queueOf(organizations)
while (parent = parentsToList.pop()) {
// TODO: Iterate over paginated results as needed.
// TODO: Handle PERMISSION_DENIED appropriately.
projects.addAll(projects.list(parent.type, parent.id))
parentsToList.addAll(folders.list(parent))
}
Cuando creas una experiencia del usuario personalizada, te recomendamos también combinar los resultados de la búsqueda y subir los recursos principales según sea necesario (al tiempo que se detecta la excepción PERMISSION_DENIED
).
Reduce la latencia en la lista de proyectos de gcloud
Si tu consulta gcloud projects list
falla o tarda demasiado, la cantidad de
Es posible que los proyectos de Google Cloud que se muestren sean demasiado grandes. Para solucionar esto, aplica el
Marcas filter
y page-size
para el comando gcloud projects list
.
Para obtener más información sobre las marcas que puedes agregar al comando gcloud projects list
, haz lo siguiente:
consulta la lista de proyectos de gcloud.
Ejemplo de exclusión de proyectos de Apps Script
La causa más común de errores de consultas o latencia es una gran cantidad de proyectos de Apps Script dentro de una organización. El siguiente comando muestra cómo excluir Los proyectos de Apps Script de la lista de proyectos y limitan la cantidad de recursos que se devuelven por página.
gcloud projects list --filter="NOT parent.id: 'APPS_SCRIPT_FOLDER_ID' "--page-size='30'
Obtén el ID de la carpeta de Apps Script
Para encontrar el ID de la carpeta de Apps Script, sigue estos pasos.
En la barra de herramientas de la consola de Google Cloud, haz clic en Busca recursos, documentos, productos y mucho más y escribe
apps-script
.En Recursos, selecciona la carpeta apps-script.
En ID de carpeta, copia el ID de la carpeta.
Buscar recursos
Si tu análisis está destinado a buscar un recurso que se creó hace algún tiempo, puedes realizar un análisis más rápido que tenga coherencia eventual, en lugar de coherencia sólida. Ten en cuenta que, en este método de búsqueda, se pueden omitir algunos recursos del resultado de la búsqueda, en particular, cualquier recurso que se modificó recientemente. Para buscar recursos, haz lo siguiente:
- Usa una cuenta de servicio que tenga el permiso
get
para el recurso que buscas. - Ejecuta el
projects.search()
con esta cuenta de servicio.
Solución de problemas de recursos omitidos
Si desarrollas una herramienta de análisis, te recomendamos que uses los permisos list
y get
que se otorgan a nivel de organización. Esto evita que el usuario que tiene permisos parciales genere problemas, lo que hace que algunos recursos se omitan de la lista.
Si diseñas una experiencia del usuario personalizada que verifique los permisos del usuario, no existe una solución sencilla. Si un usuario no tiene permisos a nivel de organización, necesitará determinados permisos en cada recurso para que este aparezca. Si a un usuario le faltan permisos en un recurso en alguna parte de la jerarquía, es posible que algunos recursos no aparezcan.
Si un usuario tiene el permiso list
, pero no el permiso get
de una
recurso en particular, ese recurso no estará visible en absoluto en la
Consola de Google Cloud Sin embargo, se devolverá el recurso en una búsqueda con el valor
La API o Google Cloud CLI que especifica el elemento superior del recurso. Esta disparidad
entre la consola de Google Cloud y otros métodos es una fuente común de confusión
cuando se intenta analizar la jerarquía de recursos.
En los diagramas siguientes, se muestran algunas configuraciones comunes de permisos y cómo estos cambian los recursos visibles para un usuario que ejecuta una búsqueda.
En este ejemplo, se otorgan todos los permisos necesarios en el recurso de la organización. Por lo tanto, toda la jerarquía está visible cuando se crea una lista o se realiza una búsqueda.
El usuario de este ejemplo tiene todos los permisos requeridos, excepto resourcemanager.organizations.get
, pero se le otorgan los permisos en el nivel de carpetas. Este intervalo de permisos le da visibilidad completa en la lista o búsqueda de esa parte de la jerarquía, pero no en la otra mitad.
En este ejemplo, se muestra la experiencia de un usuario con solo el permiso resourcemanager.projects.get
otorgado en el nivel de recurso de la carpeta.
Este puede ver los proyectos debajo de esa carpeta en la jerarquía, pero solo mediante la búsqueda. Si usas la funcionalidad de la lista, no se mostrará ningún resultado.
En este ejemplo, se muestra el mismo problema que antes, en el que los permisos otorgados solo permiten al usuario buscar sus recursos de carpetas mediante la búsqueda. Si usas la funcionalidad de la lista, no se mostrará ningún resultado.
En este ejemplo, el usuario tiene una combinación de permisos en toda su organización.
Puede mostrar listas de carpetas del nivel de la organización, lo que le permite buscarlas a través de búsquedas que especifiquen el recurso superior en toda la jerarquía.
Puede enumerar los recursos del proyecto de una carpeta, pero no de otra, y tienen el permiso resourcemanager.projects.get
en un proyecto en la parte inferior de la jerarquía.
El resultado es que no puede mostrar los proyectos en el lado izquierdo de esta jerarquía de recursos. Pueden enumerar los proyectos en el lado derecho solo por con una búsqueda que especifique el recurso superior, y solo se puede en la consola de Google Cloud.
En este ejemplo, el usuario puede obtener el recurso de la organización y enumerar los recursos del proyecto mediante la especificación del elemento superior en toda la jerarquía. Sin embargo, no tiene permisos para mostrar una lista ni buscar cualquiera de las carpetas intermedias. El usuario puede buscar los proyectos si conoce el ID de su carpeta principal. Las carpetas no están visibles en absoluto para este usuario, por lo que no podrán saber el ID si aún no lo tienen. El único recurso que en la consola de Google Cloud es la Organización.
Cuando diseñas tu experiencia del usuario personalizada, es importante que conozcas situaciones similares a las anteriores. Puedes usar una combinación de listas y búsquedas para procesar la jerarquía de recursos. También debes tener en cuenta cómo notificarles a los usuarios que les faltan permisos para ver toda la jerarquía de recursos.