La API de Cloud Resource Manager te permite descubrir y catalogar cada carpeta y proyecto en tu Cloud de Confiance by S3NS jerarquía de recursos. Esta visibilidad te ayuda a realizar verificaciones de auditoría y compilar herramientas de administración personalizadas. Las operaciones de lista estándar pueden omitir recursos cuando los usuarios tienen roles personalizados restringidos. Puedes filtrar tus consultas por referencias superiores para obtener resultados de la búsqueda coherentes y, además, identificar los nodos que los permisos de privilegio mínimo podrían ocultar.
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
listygetpara 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
En el siguiente pseudocódigo, se muestra cómo enumerar cada nodo de recursos en tus 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 gcloud projects list
Si tu consulta de gcloud projects list falla o tarda demasiado, es posible que la cantidad de
proyectos deCloud de Confiance by S3NS que se devuelven sea demasiado grande. Para solucionar este problema, aplica las marcas filter y page-size a tu comando gcloud projects list.
Para obtener más información sobre las marcas que puedes agregar al comando gcloud projects list,
consulta gcloud projects list.
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. En el siguiente comando, se muestra cómo excluir los proyectos de Apps Script de la lista de proyectos y limitar 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 tu carpeta de Apps Script, sigue estos pasos.
En la barra de herramientas de la consola de Cloud de Confiance , haz clic en Buscar recursos, documentos, productos y más y escribe
apps-script.En Recursos, selecciona la carpeta apps-script.
En ID de la 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
getpara el recurso que buscas. - Ejecuta el método
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 estás diseñando una experiencia del usuario personalizada que verifique los permisos del usuario, no hay 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 para un
recurso en particular, ese recurso no será visible en la
consola deCloud de Confiance . Sin embargo, el recurso se devolverá en una búsqueda con la
API o Google Cloud CLI que especifique el elemento superior del recurso. Esta disparidad
entre la consola de Cloud de Confiance 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 función de lista, no se mostrará ningún resultado.
En este ejemplo, se ilustra una situación similar en la que los permisos otorgados solo te permiten encontrar tus recursos de carpeta mediante una búsqueda. La operación list no devuelve 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. Solo pueden enumerar los proyectos del lado derecho con una búsqueda que especifique el recurso superior, y solo un proyecto es visible cuando se ve en la consola de Cloud de Confiance .
En este ejemplo, puedes obtener el recurso de organización y enumerar los recursos de proyecto especificando el elemento superior en toda la jerarquía. Sin embargo, no tienes permiso para enumerar ni buscar carpetas intermedias. Tus proyectos se pueden buscar si conoces el ID de su carpeta superior. Las carpetas no son visibles para ti, por lo que no puedes descubrir el ID si aún no lo tienes. El único recurso que aparece en la consola de Cloud de Confiance es la organización.
Cuando diseñes tu experiencia del usuario personalizada, es importante que tengas en cuenta situaciones similares a estas. 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.