L'API Cloud Resource Manager vous permet de découvrir et de cataloguer chaque dossier et projet de votre hiérarchie de ressources Cloud de Confiance by S3NS. Cette visibilité vous aide à effectuer des contrôles d'audit et à créer des outils de gestion personnalisés. Les opérations de liste standards peuvent omettre des ressources lorsque les utilisateurs disposent de rôles personnalisés restreints. Vous pouvez filtrer vos requêtes par références parentes pour obtenir des résultats de recherche cohérents et identifier les nœuds que les autorisations de moindre privilège pourraient autrement masquer.
Répertorier tous les nœuds de ressources
Lorsque vous analysez votre hiérarchie de ressources afin de répertorier toutes les ressources, il importe que les résultats obtenus soient fortement cohérents. Si votre analyse omet certaines ressources ou fournit des résultats obsolètes, il peut être difficile de déterminer si un problème est survenu. Pour obtenir à coup sûr les résultats les plus précis et les plus complets possibles, utilisez un compte de service et procédez comme suit pour l'analyse :
- Attribuez à un compte de service les autorisations
listetgetpour les organisations, les dossiers et les projets de la ressource Organisation. - Si vous répertoriez les ressources de projets et de dossiers, spécifiez la ressource parente dans la chaîne de filtre.
- Exécutez la méthode
projects.list()via ce compte de service pour chaque type de ressource recherché, ainsi que pour toutes les ressources intermédiaires telles que les dossiers.
Exemple pour lister tous les nœuds de ressources
Le pseudo-code suivant montre comment lister chaque nœud de ressource dans vos organisations :
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))
}
Lorsque vous créez une expérience utilisateur personnalisée, vous pouvez également avoir besoin de mélanger les résultats de recherche et de charger les ressources parentes selon vos besoins (tout en interceptant l'exception PERMISSION_DENIED).
Réduire la latence sur la liste des projets gcloud
Si votre requête gcloud projects list échoue ou prend trop de temps, le nombre de projetsCloud de Confiance by S3NS à renvoyer est peut-être trop élevé. Pour résoudre ce problème, appliquez les options filter et page-size à votre commande gcloud projects list.
Pour en savoir plus sur les options que vous pouvez ajouter à votre commande gcloud projects list, consultez la page sur les projets gcloud.
Exemple d'exclusion de projets Apps Script
Le plus souvent, les échecs ou la latence des requêtes sont dus à un nombre élevé de projets Apps Script au sein d'une organisation. La commande suivante montre comment exclure les projets Apps Script de la liste des projets et limiter le nombre de ressources renvoyées par page.
gcloud projects list --filter="NOT parent.id: 'APPS_SCRIPT_FOLDER_ID' "--page-size='30'
Obtenir l'ID du dossier Apps Script
Pour trouver l'ID de votre dossier Apps Script, procédez comme suit :
Dans la barre d'outils de la console Cloud de Confiance , cliquez sur Rechercher des ressources, des documents, des produits, etc., puis saisissez
apps-script.Sous Ressources, sélectionnez le dossier apps-script.
Sous ID du dossier, copiez l'ID du dossier.
Rechercher des ressources
Si votre analyse a pour but de rechercher une ressource qui a été créée il y a quelque temps, vous pouvez effectuer une analyse plus rapide privilégiant une cohérence à terme par rapport à une cohérence forte. Notez que cette méthode de recherche peut omettre certaines ressources du résultat de recherche, en particulier celles qui ont été modifiées récemment. Pour rechercher des ressources, procédez comme suit :
- Utilisez un compte de service disposant de l'autorisation
getpour la ressource que vous recherchez. - Exécutez la méthode
projects.search()avec ce compte de service.
Résoudre les problèmes d'omission de ressources
Si vous développez un outil d'analyse, nous vous recommandons d'utiliser les autorisations list et get accordées au niveau de l'organisation. Vous évitez ainsi les problèmes liés au caractère partiel des autorisations détenues par l'utilisateur, qui entraîne l'omission de certaines ressources dans la liste.
Si vous concevez une expérience utilisateur personnalisée qui vérifie les autorisations des utilisateurs, il n'existe pas de solution simple. Si un utilisateur ne détient pas les autorisations requises au niveau de l'organisation, il lui faudra disposer de certaines autorisations sur chacune des ressources à répertorier. Si un utilisateur ne dispose pas des autorisations nécessaires sur une ressource de la hiérarchie, certaines ressources risquent de ne pas s'afficher.
Si un utilisateur dispose de l'autorisation list, mais pas de l'autorisation get pour une ressource particulière, cette ressource ne sera pas visible dans la consoleCloud de Confiance . Toutefois, la ressource sera renvoyée dans une recherche utilisant l'API ou la Google Cloud CLI qui spécifie le parent de la ressource. Cette disparité entre la console Cloud de Confiance et les autres méthodes est une source fréquente de confusion lors de l'analyse de la hiérarchie des ressources.
Les schémas suivants illustrent certaines configurations courantes des autorisations, en indiquant comment elles modifient les ressources visibles par un utilisateur effectuant une recherche.
Dans cet exemple, toutes les autorisations requises sont accordées dans la ressource Organisation. Par conséquent, la hiérarchie tout entière est visible lorsque vous effectuez une recherche ou une opération de liste.
Dans cet exemple, l'utilisateur dispose de toutes les autorisations requises à l'exception de resourcemanager.organizations.get, mais ces autorisations ne lui sont accordées qu'au niveau du dossier. Lors des opérations de liste ou de recherche, cette lacune dans les autorisations lui donne une visibilité totale sur une branche de la hiérarchie, mais pas sur l'autre.
Cet exemple illustre l'expérience d'un utilisateur ne disposant que de l'autorisation resourcemanager.projects.get accordée au niveau d'une ressource Dossier.
L'utilisateur peut voir les projets situés sous ce dossier dans la hiérarchie, mais uniquement en effectuant une recherche. L'utilisation de la fonctionnalité de liste ne renverra aucun résultat.
Cet exemple illustre un scénario similaire dans lequel les autorisations accordées ne vous permettent de trouver vos ressources de dossier qu'en effectuant une recherche. L'opération de liste ne renvoie aucun résultat.
Dans cet exemple, les utilisateurs disposent d'une combinaison d'autorisations au sein de leur organisation.
Ils peuvent obtenir la liste des dossiers depuis le niveau de l'organisation, ce qui leur permet de retrouver les dossiers de l'ensemble de la hiérarchie via des recherches spécifiant la ressource parente.
Ils peuvent répertorier les ressources Projet d'un dossier, mais pas celles de l'autre, et ils disposent de l'autorisation resourcemanager.projects.get pour un projet situé au niveau inférieur de la hiérarchie.
Ils n'ont donc pas la possibilité de répertorier les projets de la branche de gauche de cette hiérarchie de ressources. Il ne peut lister les projets sur la droite qu'en effectuant une recherche qui spécifie la ressource parente, et un seul projet est visible lorsqu'il est affiché dans la console Cloud de Confiance .
Dans cet exemple, vous pouvez obtenir la ressource Organization et lister les ressources Project en spécifiant le parent dans toute la hiérarchie. Cependant, vous n'êtes pas autorisé à lister ni à rechercher des dossiers intermédiaires. Vos projets sont consultables si vous connaissez l'ID de leur dossier parent. Les dossiers ne sont pas visibles, vous ne pouvez donc pas découvrir l'ID si vous ne l'avez pas déjà. La seule ressource qui apparaît dans la console Cloud de Confiance est l'organisation.
Lorsque vous concevez votre expérience utilisateur personnalisée, il est important de prendre en compte des situations similaires à celles-ci. Vous pouvez afficher la hiérarchie des ressources à l'aide d'une combinaison d'opérations de liste et de recherche. Vous pouvez également réfléchir à la manière d'indiquer aux utilisateurs qu'il leur manque certaines autorisations pour afficher la hiérarchie des ressources tout entière.