Le risorse sono organizzate in Google Cloud una gerarchia, dove ogni nodo (organizzazioni, cartelle, progetti e così via) ha un riferimento al suo nodo padre. Puoi utilizzare questo riferimento come termine di filtro chiave per le scansioni per migliorare la coerenza delle ricerche di risorse.
Puoi concedere le autorizzazioni agli utenti utilizzando i ruoli personalizzati. Questi ruoli operano in base al principio del privilegio minimo e in genere forniscono solo le autorizzazioni minime 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 le risorse dei colleghi.
- Appaltatori a cui vengono concesse le autorizzazioni per un progetto specifico, ma non per altre risorse.
Tuttavia, a causa delle autorizzazioni limitate, i ruoli personalizzati potrebbero causare l'omissione di molte risorse nella gerarchia durante l'esecuzione di un'operazione di elenco. Quando esegui ricerche come utente a cui è stato concesso un ruolo personalizzato, può essere difficile capire perché alcune risorse non vengono visualizzate.
Per evitare questo scenario, questa pagina illustra le best practice per elencare tutte le risorse gestite dall'API Resource Manager nella gerarchia delle risorse. Puoi utilizzare queste indicazioni per configurare controlli di audit personalizzati o per creare la tua esperienza utente basata sull'API Resource Manager di Cloud.
Elenca tutti i nodi delle risorse
Quando esegui la scansione della gerarchia delle risorse per elencare ogni risorsa, hai bisogno di risultati fortemente coerenti. Se la scansione non rileva le risorse o fornisce risultati obsoleti, può essere difficile capire se si è verificato un problema. Per assicurarti di ottenere sempre i risultati più accurati e completi, utilizza un account di servizio ed esegui la scansione nel seguente modo:
- Concedi a un account di servizio le autorizzazioni
listegetper organizzazioni, cartelle e progetti nella risorsa dell'organizzazione. - Se stai elencando le risorse di progetto e cartella, specifica la risorsa padre nella stringa del filtro.
- Esegui il
projects.list()metodo con questo account di servizio per ogni tipo di risorsa che vuoi trovare e per eventuali risorse intermedie come le cartelle.
Esempio per elencare tutti i nodi delle risorse
Il seguente pseudocodice mostra come elencare ogni nodo delle risorse nelle tue 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, potresti anche voler combinare i risultati di ricerca e caricare le risorse padre in base alle esigenze (intercettando anche l'eccezione PERMISSION_DENIED).
Riduci la latenza in gcloud projects list
Se la query gcloud projects list non riesce o richiede troppo tempo, il numero di
Google Cloud progetti da restituire potrebbe essere troppo elevato. Per risolvere il problema, applica i flag filter e page-size al comando gcloud projects list.
Per saperne di più sui flag che puoi aggiungere al comando gcloud projects list,
consulta gcloud projects list.
Esempio di esclusione dei progetti Apps Script
La causa più comune di errori di query o latenza è un numero elevato di progetti Apps Script all'interno di un'organizzazione. Il seguente comando mostra come escludere i progetti Apps Script dall'elenco dei progetti e limitare il numero di risorse restituite per pagina.
gcloud projects list --filter="NOT parent.id: 'APPS_SCRIPT_FOLDER_ID' "--page-size='30'
Recupera l'ID cartella di Apps Script
Per trovare l'ID cartella di Apps Script, segui questi passaggi.
Nella barra degli strumenti della Google Cloud console, fai clic su Cerca risorse, documenti, prodotti e altro e digita
apps-script.In Risorse seleziona la cartella apps-script.
In ID cartella copia l'ID cartella.
Cerca risorse
Se la scansione è destinata alla ricerca di una risorsa creata qualche tempo fa, puoi eseguire una scansione più rapida con coerenza finale anziché elevata coerenza. Tieni presente che questo metodo di ricerca potrebbe omettere alcune risorse dai risultati di ricerca, in particolare le risorse modificate di recente. Per cercare le risorse:
- Utilizza un account di servizio con l'autorizzazione
getper la risorsa che stai cercando. - Esegui il
projects.search()metodo con questo account di servizio.
Risoluzione dei problemi relativi alle risorse omesse
Se stai sviluppando uno strumento di scansione, ti consigliamo di utilizzare le autorizzazioni list e get concesse a livello di organizzazione. In questo modo si evitano problemi causati dal fatto che l'utente dispone di autorizzazioni parziali, il che comporta l'omissione di alcune risorse dall'elenco.
Se stai progettando un'esperienza utente personalizzata che controlla le autorizzazioni utente, non esiste una soluzione semplice. Se un utente non dispone delle autorizzazioni a livello di organizzazione, avrà bisogno di determinate autorizzazioni per ogni risorsa affinché venga visualizzata. Se a un utente mancano le autorizzazioni per una risorsa in un punto qualsiasi della gerarchia, alcune risorse potrebbero non essere visualizzate.
Se un utente dispone dell'autorizzazione list, ma non dell'autorizzazione get per una
determinata risorsa, quest'ultima non sarà visibile nella
Google Cloud console. Tuttavia, la risorsa verrà restituita in una ricerca che utilizza l'API o Google Cloud CLI e che specifica la risorsa padre. Questa disparità
tra la Google Cloud console e altri metodi è una fonte comune di confusione
quando si tenta di eseguire la scansione della gerarchia delle risorse.
I seguenti diagrammi mostrano alcune configurazioni comuni delle autorizzazioni e come cambiano le risorse visibili a un utente che esegue una ricerca.
In questo esempio, tutte le autorizzazioni richieste vengono concesse nella risorsa dell'organizzazione. Di conseguenza, l'intera gerarchia è visibile quando si esegue un elenco o una ricerca.
L'utente in questo esempio dispone di tutte le autorizzazioni richieste, ad eccezione di resourcemanager.organizations.get, ma queste autorizzazioni vengono concesse a livello di cartella. Questa lacuna nelle autorizzazioni gli consente di avere visibilità completa sull'elenco o sulla ricerca di questa parte della gerarchia, ma non sull'altra metà.
Questo esempio mostra l'esperienza di un utente a cui è stata concessa solo l'autorizzazione resourcemanager.projects.get a livello di risorsa della cartella.
Può visualizzare i progetti nella cartella nella gerarchia, ma solo tramite la ricerca. L'utilizzo della funzionalità di elenco non restituirà alcun risultato.
Questo esempio illustra uno scenario simile in cui le autorizzazioni concesse consentono di trovare le risorse della cartella solo tramite la ricerca. L'operazione di elenco non restituisce alcun risultato.
L'utente in questo esempio dispone di un mix di autorizzazioni in tutta l'organizzazione.
Può elencare le cartelle a livello di organizzazione, il che gli consente di trovarle con le ricerche che specificano la risorsa padre in tutta la gerarchia.
Può elencare le risorse del progetto per una cartella, ma non per l'altra, e dispone dell'autorizzazione resourcemanager.projects.get per un progetto nella parte inferiore della gerarchia.
Di conseguenza, non è in grado di restituire i progetti sul lato sinistro di questa gerarchia delle risorse. Può elencare i progetti sul lato destro solo utilizzando una ricerca che specifica la risorsa padre e solo un progetto è visibile quando viene visualizzato nella console. Google Cloud
In questo esempio, puoi ottenere la risorsa dell'organizzazione ed elencare le risorse del progetto specificando la risorsa padre in tutta la gerarchia. Tuttavia, non hai l'autorizzazione per elencare o cercare le cartelle intermedie. I tuoi progetti sono ricercabili se conosci l'ID della cartella padre. Le cartelle non sono visibili, quindi non puoi scoprire l'ID se non lo hai già. L' unica risorsa che viene visualizzata nella Google Cloud console è l'organizzazione.
Quando progetti la tua esperienza utente personalizzata, è importante essere consapevoli di situazioni simili a queste. Puoi utilizzare una combinazione di elenco e ricerca per eseguire il rendering della gerarchia delle risorse. Dovresti anche valutare come comunicare agli utenti che non dispongono delle autorizzazioni che consentirebbero loro di visualizzare l'intera gerarchia delle risorse.