Le risorse in Google Cloud sono organizzate in una gerarchia, in cui ogni nodo (organizzazioni, cartelle, progetti e così via) ha un riferimento al relativo elemento principale. Puoi utilizzare questo riferimento come termine di filtro principale per le scansioni per migliorare la coerenza delle ricerche delle risorse.
Puoi concedere 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 loro 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é determinate risorse non vengono visualizzate.
Per evitare questo scenario, questa pagina illustra le best practice per elencare tutte le risorse gestite dall'API Cloud Resource Manager nella gerarchia delle risorse. Puoi utilizzare queste indicazioni per configurare controlli di conformità personalizzati o per creare la tua esperienza utente sull'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:
- Concedi a un account di servizio le autorizzazioni
list
eget
per le organizzazioni, Cartelle e progetti sulla risorsa Organizzazione. - Se stai elencando risorse di progetto e cartella, specifica la risorsa padre nella stringa del filtro.
- Esegui l'
Metodo
projects.list()
con questo account di servizio per ogni tipo di risorsa che vuoi trovare 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 nelle query è un numero elevato di progetti Apps Script all'interno di un'organizzazione. Il comando seguente 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'
Ottenere l'ID cartella di Apps Script
Per trovare l'ID della cartella di Apps Script, procedi nel seguente modo.
Nella barra degli strumenti della console Google Cloud, fai clic su Cerca risorse, documenti, prodotti e altro ancora e digita
apps-script
.In Risorse, seleziona la cartella apps-script.
In ID cartella, copia l'ID cartella.
Cerca nelle risorse
Se la scansione è finalizzata alla ricerca di una risorsa creata qualche tempo fa, puoi eseguire una scansione più rapida con coerenza finale anziché con coerenza forte. 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 risorse:
- Utilizza un account di servizio con l'autorizzazione
get
per la risorsa che stai cercando. - Esegui l'
projects.search()
con questo account di servizio.
Risolvere i 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 dall'utente che dispone di autorizzazioni parziali, con la conseguente 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 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 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 Organization. Pertanto, l'intera gerarchia è visibile quando si esegue un elenco o eseguire una ricerca.
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 lacuna nelle autorizzazioni offre una visibilità completa sull'elenco o sulla ricerca di quella parte della gerarchia, ma non sull'altra metà.
Questo esempio mostra l'esperienza di un utente con solo
Autorizzazione resourcemanager.projects.get
concessa a livello di risorsa Cartella.
Possono vedere i progetti all'interno della cartella nella gerarchia, ma solo tramite ricerca. L'utilizzo della funzionalità di elenco non restituirà alcun risultato.
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.
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 in tutta la 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.
Di conseguenza, non sono in grado di restituire i progetti sul lato sinistro di questa gerarchia delle 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.
In questo esempio, l'utente può ottenere la risorsa Organizzazione ed elencare le risorse Progetto specificando la risorsa principale in tutta la gerarchia. Tuttavia, Non disponi dell'autorizzazione per elencare o cercare nelle cartelle intermedie. I suoi progetti sono disponibili per la ricerca se l'utente conosce l'ID della relativa cartella principale. Le cartelle non sono visibili a questo utente, che quindi non potrà scoprire l'ID se non lo ha già. L'unica risorsa nella console Google Cloud sarà Organizzazione.
Quando progetti la tua esperienza utente personalizzata, è importante essere consapevole di situazioni simili a quelle riportate sopra. Puoi utilizzare una combinazione di elenchi e ricerche per visualizzare la gerarchia delle risorse. Dovresti anche considerare come comunicare agli utenti che non dispongono di autorizzazioni che gli consentirebbero di l'intera gerarchia delle risorse.