Gestire i progetti all'interno delle cartelle

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

  1. Nella console Google Cloud , apri la pagina Gestisci risorse.

    Apri la Google Cloud console

  2. Vai alla pagina Gestisci risorse.
  3. Seleziona la risorsa dell'organizzazione dal menu a discesa Organizzazione in alto a sinistra della pagina.
  4. Fai clic su Crea progetto.
  5. Inserisci un nome progetto.
  6. Nella casella Destinazione, fai clic su Sfoglia per selezionare la cartella in cui vuoi creare il progetto.
  7. Fai clic su Crea.

gcloud

  gcloud projects create PROJECT_ID --folder FOLDER_ID

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto da creare
  • FOLDER_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 esempio folder o organization.

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.update sul progetto
  • Se la risorsa si trova in una cartella:resourcemanager.projects.move sulla cartella di origine e sulla destinazione
  • Se la risorsa non si trova in una cartella: resourcemanager.projects.move sulla risorsa dell'organizzazione

Puoi anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Console

Per spostare un progetto:

  1. Nella console Google Cloud , vai alla pagina Gestisci risorse.

    Vai a Gestisci risorse

  2. Seleziona la tua organizzazione dal menu a discesa Organizzazione in alto a sinistra della pagina.

  3. 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.

  4. Fai clic sul menu opzioni (i tre puntini verticali) nella riga e poi su Sposta.

  5. Fai clic su Sfoglia per selezionare la cartella in cui vuoi spostare il progetto.

  6. 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, organization o folder.
  • 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/415104041262

  • DESTINATION_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.

  1. Nella console Google Cloud , apri la pagina Gestisci risorse.

    Apri la Google Cloud console

  2. Seleziona la risorsa dell'organizzazione dal menu a discesa Organizzazione in alto a sinistra della pagina.
  3. Fai clic sulla riga della cartella per selezionarla dall'elenco di progetti e cartelle.
  4. Fai clic sul menu opzioni (i tre puntini verticali) nella riga e poi su Sposta.
  5. Fai clic su Sfoglia per selezionare la cartella in cui vuoi spostare la cartella.
  6. 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 spostare
  • PARENT_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 spostare
  • PARENT_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

  1. Nella console Google Cloud , apri la pagina Gestisci risorse.

    Apri la pagina Gestisci risorse

  2. Nel menu a discesa Organizzazione, seleziona la tua organizzazione.

  3. 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=value per 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