Elenco di tutti i progetti e di tutte le cartelle nella gerarchia

Le risorse in Google Cloud sono organizzate in un gerarchia, con ogni nodo (organizzazioni, cartelle, progetti e così via) con un riferimento al relativo elemento padre. Puoi utilizzare la modalità riferimento come termine di filtro della chiave per le scansioni al fine di migliorare la coerenza le ricerche di risorse.

Puoi concedere le autorizzazioni agli utenti utilizzando ruoli personalizzati. Questi ruoli operano principio del privilegio minimo e in genere fornisce solo il minimo necessario autorizzazioni necessarie per eseguire una determinata attività.

Questo schema può essere utile per isolare diversi gruppi di utenti. Ad esempio:

  • Una grande azienda con reparti che non dovrebbero essere in grado di ispezionare e le risorse dei loro colleghi.
  • Contrattisti a cui sono concesse le autorizzazioni per un progetto specifico, ma nessun altro Google Cloud.

Tuttavia, a causa delle autorizzazioni limitate, i ruoli personalizzati possono molte risorse della gerarchia da omettere durante l'esecuzione di un'operazione di elenco. Quando esegue ricerche come utente a cui è stato concesso un ruolo personalizzato, può difficile capire perché alcune risorse non vengono visualizzate.

Per evitare questo scenario, in questa pagina vengono illustrate le best practice per elencare tutti delle risorse gestite dall'API Cloud Resource Manager nella tua gerarchia di risorse. Tu puoi utilizzare queste indicazioni per configurare controlli di controllo personalizzati o per crearne di personalizzati oltre all'API Cloud Resource Manager.

Elenca tutti i nodi delle risorse

Quando analizzi la gerarchia delle risorse per elencare tutte le risorse, devi avere per ottenere risultati coerenti. Se la scansione non include risorse o fornisce risultati obsoleti, può essere difficile capire che qualcosa è andato storto. Per assicurarti di ottenere sempre i risultati più precisi e completi, utilizzare un account di servizio e eseguire una scansione nel seguente modo:

  1. Concedi a un account di servizio le autorizzazioni list e get per le organizzazioni, Cartelle e progetti sulla risorsa Organizzazione.
  2. Se stai elencando risorse di progetto e cartella, specifica la risorsa padre nella stringa del filtro.
  3. Esegui l' Metodo projects.list() con questo account di servizio per ogni tipo di risorsa che vuoi trovare per le risorse intermedie come le cartelle.

Esempio di elenco di tutti i nodi delle risorse

Il seguente pseudocodice mostra come elencare tutti i nodi di risorse Organizzazioni:

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))
}

Quando crei un'esperienza utente personalizzata, ti consigliamo anche di combinare le ricerche dei risultati e caricare le risorse padre in base alle esigenze (acquisendo anche PERMISSION_DENIED eccezione).

Riduci la latenza nell'elenco di progetti gcloud

Se la query gcloud projects list non riesce o richiede troppo tempo, il numero di I progetti Google Cloud da restituire potrebbero essere troppo grandi. Per risolvere il problema, applica la macro Flag filter e page-size al tuo comando gcloud projects list.

Per scoprire di più sui flag che puoi aggiungere al comando gcloud projects list: consulta gcloud projects list.

Esempio di esclusione di progetti Apps Script

La causa più comune di errori o latenza delle query è un elevato numero di app Crea progetti di script all'interno di un'organizzazione. Il seguente comando mostra come escludere Progetti Apps Script nell'elenco dei progetti e limitare il numero di risorse restituiti per pagina.

gcloud projects list --filter="NOT parent.id: 'APPS_SCRIPT_FOLDER_ID' "--page-size='30'

Recuperare l'ID cartella di Apps Script

Per trovare l'ID della cartella di Apps Script, procedi nel seguente modo.

  1. Nella barra degli strumenti della console Google Cloud, fai clic su Cerca risorse, documenti, prodotti e altro ancora e digita apps-script.

    Vai alla console Google Cloud

  2. In Risorse, seleziona la cartella apps-script.

  3. In ID cartella, copia l'ID cartella.

Cerca nelle risorse

Se la scansione è destinata a cercare una risorsa creata un po' di tempo in precedenza, puoi eseguire una scansione più rapida a coerenza finale anziché elevata coerenza. Tieni presente che questo metodo di ricerca potrebbe omettere alcune risorse dalla nei risultati di ricerca, in particolare quelle che sono state modificate di recente. Per cercare le risorse:

  1. Utilizza un account di servizio con l'autorizzazione get per la risorsa che stai che sta cercando.
  2. Esegui l' projects.search() con questo account di servizio.

Risoluzione dei problemi relativi alle risorse omesse

Se stai sviluppando uno strumento di scansione, ti consigliamo di utilizzare list e get autorizzazioni concesse a livello di organizzazione. In questo modo si evitano i problemi causati se l'utente dispone di autorizzazioni parziali, il che comporta la omessi dall'elenco.

Se stai progettando un'esperienza utente personalizzata che controlla le autorizzazioni degli utenti, non esiste una soluzione facile. Se un utente non ha un livello di organizzazione autorizzazioni, avranno bisogno di determinate autorizzazioni su ogni risorsa affinché vengono visualizzate. Se un utente non dispone delle autorizzazioni per una risorsa in una della gerarchia, alcune risorse potrebbero non essere visualizzate.

Se un utente dispone dell'autorizzazione list, ma non dell'autorizzazione get per un risorsa, questa non sarà per niente visibile nella console Google Cloud. Tuttavia, la risorsa verrà restituita in una ricerca utilizzando il comando API o Google Cloud CLI che specifica l'elemento padre della risorsa. Questa disparità tra la console Google Cloud e altri metodi è una fonte di confusione comune durante la scansione della gerarchia delle risorse.

I seguenti diagrammi mostrano alcune configurazioni comuni delle autorizzazioni, e come modificano le risorse visibili a un utente che esegue una ricerca.

Elenco di tutte le risorse

In questo esempio, tutte le autorizzazioni richieste sono concesse nella risorsa. Pertanto, l'intera gerarchia è visibile quando si esegue un elenco o eseguire una ricerca.

Autorizzazioni dell'organizzazione mancanti

In questo esempio, l'utente dispone di tutte le autorizzazioni richieste tranne che per: resourcemanager.organizations.get, ma le relative autorizzazioni vengono concesse in a livello di cartella. Questa carenza di autorizzazioni consente loro di avere una visibilità completa quella parte della gerarchia, ma non l'altra metà.

Progetto con autorizzazione

Questo esempio mostra l'esperienza di un utente con solo Autorizzazione resourcemanager.projects.get concessa a livello di risorsa Cartella. Possono vedere i progetti al di sotto di quella cartella nella gerarchia, ma solo con la ricerca. La funzionalità di elenco non restituirà alcun risultato.

Richiesta di autorizzazione solo per la cartella

Questo esempio mostra lo stesso problema di cui sopra, in cui solo le autorizzazioni concesse Consentire a un utente di trovare le risorse della cartella tramite la ricerca. Utilizzo dell'elenco non restituirà alcun risultato.

Autorizzazioni miste

In questo esempio, l'utente dispone di una combinazione di autorizzazioni in tutta l'organizzazione. Possono elencare le cartelle a livello di organizzazione, in modo da trovare mediante ricerche che specificano la risorsa padre nell'intera gerarchia. Possono elencare le risorse di progetto per una cartella, ma non per l'altra. Inoltre, possono Autorizzazione resourcemanager.projects.get per un progetto nella parte inferiore di nella gerarchia.

Il risultato è che non è in grado di restituire i progetti sul lato sinistro di questa gerarchia di risorse. Possono elencare i progetti sul lato destro solo usando una ricerca che specifichi la risorsa padre e solo un progetto viene visibile nella console Google Cloud.

Risorse non rilevabili

In questo esempio, l'utente può recuperare la risorsa Organizzazione ed elencare il progetto risorse specificando l'elemento padre in tutta la gerarchia. Tuttavia, Non disponi dell'autorizzazione per elencare o cercare nelle cartelle intermedie. Loro I progetti sono disponibili per la ricerca se l'utente conosce l'ID dell'elemento padre Cartella. Le cartelle non sono visibili a questo utente, quindi non saranno rilevare l'ID, se non è già in possesso. L'unica risorsa nella console Google Cloud sarà Organizzazione.

Quando si progetta la propria esperienza utente personalizzata, è importante conoscere in situazioni simili a quelle di cui sopra. Puoi usare una combinazione di schede e per eseguire il rendering della gerarchia delle risorse. Dovresti anche considerare come comunicare agli utenti che non dispongono di autorizzazioni che gli consentirebbero di l'intera gerarchia delle risorse.