Gestire i progetti all'interno delle cartelle

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

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

    Apri Google Cloud console

  2. Vai alla pagina Gestisci risorse.
  3. Seleziona la risorsa dell'organizzazione dal menu a discesa Organizzazione in alto a sinistra nella 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

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 esempio folder o organization.

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

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

Console

Per spostare un progetto:

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

    Vai a Gestisci risorse

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

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

  4. Fai clic sul menu opzioni (i tre puntini verticali) nella riga e fai clic 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 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, 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 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.

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

    Apri Google Cloud console

  2. Seleziona la risorsa dell'organizzazione dal menu a discesa Organizzazione in alto a sinistra nella 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 fai clic 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 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 spostare
  • PARENT_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

  1. Nella Google Cloud console, 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 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=value per 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