Questa pagina descrive come organizzare la Google Cloud gerarchia nidificando i progetti all'interno delle cartelle.
Panoramica
Nella gerarchia delle Google Cloud risorse, 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 le policy 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: concedi a team specifici l'autonomia per gestire i propri progetti e le proprie sottocartelle senza richiedere autorizzazioni ampie 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 può essere ereditato da una cartella principale.
Console
- Nella Google Cloud console, apri la pagina Gestisci risorse.
- Vai alla pagina Gestisci risorse.
- Seleziona la risorsa dell'organizzazione dal menu a discesa Organizzazione in alto a sinistra nella 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
Il 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 parent in fase di creazione. Ad esempio,123.PARENT_TYPE: il tipo di parent, ad esempiofolderoorganization.
Non includere informazioni sensibili nel nome della cartella o in altri nomi di 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 policy. Le policy di autorizzazione definite a livello di progetto verranno spostate con il progetto, ma le policy ereditate da una risorsa parent non verranno spostate.
Quando sposti un progetto, vengono spostate anche le policy IAM (Identity and Access Management) o le policy dell'organizzazione collegate direttamente. Tuttavia, un progetto nella gerarchia delle risorse è interessato anche dalle policy che eredita dalle risorse parent. 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 ha le autorizzazioni per caricare i dati in Cloud Storage in qualsiasi progetto nella cartella A. Se sposti uno di questi progetti nella cartella B, che non ha le stesse autorizzazioni ereditate, il account di servizio per quel progetto perde la possibilità di caricare i dati, con conseguente interruzione del servizio.
Queste stesse considerazioni si applicano se le policy dell'organizzazione sono definite nelle cartelle di origine e di destinazione. Come le policy IAM, le policy dell'organizzazione vengono ereditate. Di conseguenza, devi assicurarti che le policy dell'organizzazione siano coerenti tra le cartelle di origine e di destinazione.
Per saperne di più sulle policy dell'organizzazione, consulta Introduzione al servizio Policy dell'organizzazione.
Per spostare un progetto, devi disporre del ruolo IAM Project Mover (roles/resourcemanager.projectMover) sia nella cartella di origine sia nella cartella di destinazione. Se la risorsa non si trova in una cartella, devi disporre di questo ruolo nella risorsa organizzazione.
Questi ruoli ti forniscono le seguenti autorizzazioni richieste:
resourcemanager.projects.updatesul progetto- Se la risorsa si trova in una cartella:
resourcemanager.projects.movenella cartella di origine e nella destinazione - Se la risorsa non si trova in una cartella:
resourcemanager.projects.movenella risorsa organizzazione
Puoi ottenere queste autorizzazioni anche con ruoli personalizzati o altri ruoli predefiniti.
Console
Per spostare un progetto:
Nella Google Cloud console, vai alla pagina Gestisci risorse.
Seleziona la tua organizzazione dal menu a discesa Organizzazione in alto a sinistra nella pagina.
Fai clic sulla riga del progetto per selezionarlo dall'elenco delle risorse. Tieni presente che non devi fare clic sul nome del progetto, che ti porta alla pagina IAM (Identity and Access Management) del progetto.
Fai clic sul menu opzioni (i tre puntini verticali) nella riga e fai clic 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
gcloud beta projects move
comando:
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 parent in cui vuoi spostare il progetto. Ad esempio:organizations/12345678901
Se l'operazione ha esito positivo, la richiesta restituisce 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 a quella per spostare i progetti.
- Nella Google Cloud console, apri la pagina Gestisci risorse.
- Seleziona la risorsa dell'organizzazione dal menu a discesa Organizzazione in alto a sinistra nella 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 fai clic 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 parent
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 parent
REST
Il 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 in fase di spostamento, ad esempio "La mia cartella fantastica."
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 Get Operation:
{
"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 Folder Viewer (roles/resourcemanager.folderViewer) o del ruolo Browser (roles/browser) nella cartella.
Console
Nella Google Cloud console, 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 Filtra nella parte superiore dell'elenco per cercare un progetto specifico per nome o 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 parent.
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.
Filtrare i progetti per tag o etichette (facoltativo)
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 Filtra della pagina Gestisci risorse, digita
Labels:key=valueper limitare l'elenco ai progetti con etichette specifiche. Tieni presente che la console fornisce un supporto limitato per il filtraggio visivo per tag; utilizza Google Cloud CLI per le query di tag avanzate.
gcloud
Per elencare i progetti all'interno di una cartella che hanno un valore 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 parent della chiave 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 come visualizzare e aggiornare i progetti.
- Scopri i ruoli e le autorizzazioni per la gestione dei progetti.