Questa pagina descrive come organizzare la gerarchia Google Cloud nidificando i progetti all'interno delle cartelle.
Panoramica
Nella gerarchia delle risorse Google Cloud , i progetti fungono da unità organizzative e di fatturazione principali per le risorse. Si trovano tra le cartelle (o la risorsa organizzazione) e le risorse sottostanti, come le istanze di macchine virtuali e i bucket di archiviazione.
Sebbene le cartelle siano un meccanismo di raggruppamento facoltativo, l'organizzazione dei progetti all'interno delle cartelle offre diversi vantaggi principali:
Governance scalabile: applica automaticamente i criteri IAM (Identity and Access Management) e i vincoli di sicurezza a più progetti tramite l'ereditarietà basata sulla gerarchia.
Allineamento aziendale: struttura il tuo ambiente cloud in modo che rifletta i reparti, i centri di costo o i cicli di vita di sviluppo della tua organizzazione (ad esempio Dev, Staging e Prod).
Amministrazione delegata: concede a team specifici l'autonomia di gestire i propri progetti e le proprie sottocartelle senza richiedere autorizzazioni generali a livello di organizzazione.
Visibilità dei costi: raggruppa i progetti correlati per semplificare il monitoraggio della spesa e migliorare l'analisi della fatturazione per unità aziendali o applicazioni specifiche.
Isolamento della sicurezza: stabilisci limiti di attendibilità chiari per limitare l'area interessata dalle modifiche alla configurazione e ridurre i rischi per la sicurezza in diversi ambienti.
Creare un progetto in una cartella
Per creare un progetto in una cartella, devi disporre del ruolo Autore progetto
(roles/resourcemanager.projectCreator) nella cartella. Questo ruolo potrebbe essere
ereditato da una cartella principale.
Console
- Nella console Google Cloud , apri la pagina Gestisci risorse.
- Vai alla pagina Gestisci risorse.
- Seleziona la risorsa dell'organizzazione dal menu a discesa Organizzazione in alto a sinistra della pagina.
- Fai clic su Crea progetto.
- Inserisci un nome progetto.
- Nella casella Destinazione, fai clic su Sfoglia per selezionare la cartella in cui vuoi creare il progetto.
- Fai clic su Crea.
gcloud
gcloud projects create PROJECT_ID --folder FOLDER_ID
Sostituisci quanto segue:
PROJECT_ID: l'ID del progetto da creareFOLDER_ID: l'ID della cartella in cui deve essere creato il progetto.
REST
JSON della richiesta:
request_json= '{
name: DISPLAY_NAME, projectId: PROJECT_ID, parent: {id: PARENT_ID, type: PARENT_TYPE}
}'
La richiesta curl:
curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer ${bearer_token}" \
-d "$request_json" \
https://cloudresourcemanager.googleapis.com/v3/projects
Sostituisci quanto segue:
PROJECT_ID: l'identificatore univoco del progetto in fase di creazione. Ad esempio,my-awesome-proj-123.DISPLAY_NAME: il nome visualizzato del progetto in fase di creazione.PARENT_ID: l'identificatore univoco del genitore in cui viene creato. Ad esempio,123.PARENT_TYPE: il tipo di genitore, ad esempiofolderoorganization.
Non includere informazioni sensibili nel nome della cartella o in altri nomi delle risorse. Qualsiasi riferimento alla cartella o alle risorse correlate espone il nome della cartella e il nome della risorsa.
Spostare un progetto in una cartella
Prima di spostare un progetto in una cartella o fuori da una cartella, devi valutare attentamente le implicazioni delle norme. I criteri di autorizzazione che definisci a livello di progetto si spostano con il progetto, ma i criteri ereditati da una risorsa padre non si spostano.
Quando sposti un progetto, vengono spostati anche i criteri Identity and Access Management o i criteri dell'organizzazione allegati direttamente. Tuttavia, un progetto nella gerarchia delle risorse è interessato anche dalle policy ereditate dalle risorse padre. Se un progetto eredita un ruolo IAM che fornisce agli utenti l'autorizzazione a utilizzare un determinato servizio, gli utenti non avranno accesso a quel servizio nella destinazione, a meno che non ereditino l'autorizzazione anche nella destinazione.
Ad esempio, supponiamo che un account di servizio abbia il ruolo Storage Object Creator associato a un utente nella cartella A. Il account di servizio dispone delle autorizzazioni per caricare dati in Cloud Storage in qualsiasi progetto nella cartella A. Se sposti uno di questi progetti nella cartella B, che non dispone delle stesse autorizzazioni ereditate, il account di servizio per quel progetto perde la possibilità di caricare dati, con conseguente interruzione del servizio.
Queste stesse considerazioni si applicano se i criteri dell'organizzazione sono definiti nelle cartelle di origine e di destinazione. Come i criteri IAM, i criteri dell'organizzazione vengono ereditati. Di conseguenza, devi assicurarti che le norme della tua organizzazione siano coerenti tra le cartelle di origine e di destinazione.
Per saperne di più sulle policy dell'organizzazione, consulta la pagina Introduzione al servizio Policy dell'organizzazione.
Per spostare un progetto, devi disporre del ruolo IAM Autore spostamento progetto
(roles/resourcemanager.projectMover) sia nella cartella di origine che in quella di destinazione. Se la risorsa non si trova in una cartella, devi disporre di questo ruolo nella risorsa organizzazione.
Questi ruoli ti concedono le seguenti autorizzazioni obbligatorie:
resourcemanager.projects.updatesul progetto- Se la risorsa si trova in una cartella:
resourcemanager.projects.movesulla cartella di origine e sulla destinazione - Se la risorsa non si trova in una cartella:
resourcemanager.projects.movesulla risorsa dell'organizzazione
Puoi anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Console
Per spostare un progetto:
Nella console Google Cloud , vai alla pagina Gestisci risorse.
Seleziona la tua organizzazione dal menu a discesa Organizzazione in alto a sinistra della pagina.
Fai clic sulla riga del progetto per selezionarlo dall'elenco di risorse. Tieni presente che non devi fare clic sul nome del progetto, che ti reindirizza alla pagina Identity and Access Management (IAM) del progetto.
Fai clic sul menu opzioni (i tre puntini verticali) nella riga e poi su Sposta.
Fai clic su Sfoglia per selezionare la cartella in cui vuoi spostare il progetto.
Fai clic su Sposta.
gcloud
Per spostare un progetto, esegui il comando gcloud beta projects move:
gcloud beta projects move PROJECT_ID \ --DESTINATION_TYPE DESTINATION_ID
Sostituisci quanto segue:
PROJECT_ID: L'ID o il numero del progetto che vuoi spostare.DESTINATION_TYPE: il tipo di destinazione,organizationofolder.DESTINATION_ID: l'ID della risorsa organizzazione o della cartella in cui vuoi spostare il progetto.
REST
Puoi utilizzare il metodo v3
projects.move
per spostare un progetto.
Richiesta:
POST https://cloudresourcemanager.googleapis.com/v3/{name=PROJECT_NAME}:move
{
"destinationParent": DESTINATION_PARENT
}
Sostituisci quanto segue:
PROJECT_NAME: il nome del progetto che vuoi aggiornare. Ad esempio,projects/415104041262DESTINATION_PARENT: la nuova risorsa organizzazione o cartella principale in cui vuoi spostare il progetto. Ad esempio:organizations/12345678901
In caso di esito positivo, la richiesta restituirà un'operazione che può essere utilizzata per monitorare lo spostamento del progetto.
Spostare una cartella in un'altra cartella
Per spostare una cartella in un'altra cartella, devi disporre dell'autorizzazione resourcemanager.folders.move sia per la cartella di origine sia per quella di destinazione.
Console
La procedura per spostare le cartelle in altre cartelle nella console è simile allo spostamento dei progetti.
- Nella console Google Cloud , apri la pagina Gestisci risorse.
- Seleziona la risorsa dell'organizzazione dal menu a discesa Organizzazione in alto a sinistra della pagina.
- Fai clic sulla riga della cartella per selezionarla dall'elenco di progetti e cartelle.
- Fai clic sul menu opzioni (i tre puntini verticali) nella riga e poi su Sposta.
- Fai clic su Sfoglia per selezionare la cartella in cui vuoi spostare la cartella.
- Fai clic su Sposta.
gcloud
Per spostare una cartella nella risorsa organizzazione, esegui questo comando:
gcloud resource-manager folders move FOLDER_ID \
--organization=PARENT_ID
Sostituisci quanto segue:
FOLDER_ID: l'ID della cartella da spostarePARENT_ID: l'ID della risorsa organizzazione principale
Per spostare una cartella in un'altra cartella, esegui questo comando:
gcloud resource-manager folders move FOLDER_ID \
--folder=PARENT_ID
Sostituisci quanto segue:
FOLDER_ID: l'ID della cartella da spostarePARENT_ID: l'ID della cartella principale
REST
JSON della richiesta:
request_json= '{
destinationParent: "folders/DESTINATION_FOLDER_ID"
}'
La richiesta curl Sposta cartella:
curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer ${bearer_token} \
-d "$request_json" \
https://cloudresourcemanager.googleapis.com/v3/folders/DISPLAY_NAME:move
Sostituisci quanto segue:
- DESTINATION_FOLDER_ID: l'ID della cartella in cui stai
spostando un'altra cartella, ad esempio
98765. - DISPLAY_NAME: il nome visualizzato della cartella da spostare, ad esempio "La mia fantastica cartella".
La risposta Sposta cartella:
{
"name": "operations/fm.1234567890",
"metadata": {
"@type": "type.googleapis.com/google.cloud.resourcemanager.v3.FolderOperation",
"displayName": "DISPLAY_NAME",
"operationType": "MOVE"
}
}
La richiesta curl Get Operation:
curl -H "Authorization: Bearer ${bearer_token}" \
https://cloudresourcemanager.googleapis.com/v3/operations/fm.1234567890
La risposta di Recupero operazione:
{
"name": "operations/fm.1234567890",
"metadata": {
"@type": "type.googleapis.com/google.cloud.resourcemanager.v3.FolderOperation",
"displayName": "DISPLAY_NAME",
"operationType": "MOVE"
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.resourcemanager.v3.Folder",
"name": "folders/12345",
"parent": "folders/98765",
"displayName": "DISPLAY_NAME",
"lifecycleState": "ACTIVE",
"createTime": "2017-07-19T23:29:26.018Z",
"updateTime": "2017-07-20T00:54:44.295Z"
}
}
Visualizzare o elencare i progetti all'interno di una cartella
Per visualizzare o elencare i progetti che sono figli diretti di una cartella, devi disporre del ruolo Visualizzatore cartella (roles/resourcemanager.folderViewer) o del ruolo Browser (roles/browser) nella cartella.
Console
Nella console Google Cloud , apri la pagina Gestisci risorse.
Nel menu a discesa Organizzazione, seleziona la tua organizzazione.
Nell'elenco delle risorse, fai clic sul nome della cartella per espanderla e visualizzare i relativi progetti.
(Facoltativo) Utilizza la barra Filtro nella parte superiore dell'elenco per cercare un progetto specifico in base al nome o all'ID.
gcloud
Per elencare tutti i progetti che sono figli diretti di una cartella specifica, utilizza il
comando gcloud projects list con un filtro:
gcloud projects list --filter="parent.id:FOLDER_ID AND parent.type:folder"
Sostituisci FOLDER_ID con l'ID univoco della cartella.
REST
Utilizza il metodo projects.list con un parametro di query che definisce la cartella principale.
Richiesta HTTP: GET https://cloudresourcemanager.googleapis.com/v3/projects?parent=folders/FOLDER_ID
Comando curl di esempio:
Bash
curl -H "Authorization: Bearer $(gcloud auth print-access-token)"
"https://cloudresourcemanager.googleapis.com/v3/projects?parent=folders/FOLDER_ID"
Sostituisci FOLDER_ID con l'ID univoco della cartella.
(Facoltativo) Filtra i progetti per tag o etichette
Se hai un numero elevato di progetti all'interno di una cartella, puoi utilizzare i filtri per trovare risorse specifiche in base ai metadati.
Console
- Nella barra Filtro della pagina Gestisci risorse, digita
Labels:key=valueper restringere l'elenco ai progetti con etichette specifiche. Tieni presente che la console offre un supporto limitato per il filtro visivo per tag; utilizza Google Cloud CLI per query avanzate sui tag.
gcloud
Per elencare i progetti all'interno di una cartella che hanno un valore di tag specifico, utilizza il flag --filter
con l'attributo tags:
gcloud projects list \ --filter="parent.id:FOLDER_ID AND tags.TAG_KEY_PARENT/TAG_KEY_SHORT_NAME:TAG_VALUE_SHORT_NAME"
Sostituisci quanto segue:
FOLDER_ID: l'ID univoco della cartella.TAG_KEY_PARENT: l'ID della risorsa principale della chiave del tag, ad esempio un'organizzazione o un progetto.TAG_KEY_SHORT_NAME: il nome breve della chiave tag.TAG_VALUE_SHORT_NAME: il nome breve del valore tag.
Per filtrare in base alle etichette:
gcloud projects list \ --filter="parent.id:FOLDER_ID AND labels.KEY=VALUE"
Sostituisci quanto segue:
FOLDER_ID: l'ID univoco della cartella.KEY: la chiave dell'etichetta.VALUE: il valore dell'etichetta.
Passaggi successivi
- Scopri di più sulla visualizzazione e sull'aggiornamento dei progetti.
- Scopri di più su ruoli e autorizzazioni per la gestione dei progetti.