Utilizzo dei Controlli di servizio VPC

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

VPC Service Controls è una funzionalità di Google Cloud che consente di configurare un perimetro sicuro per impedire l'esfiltrazione di dati. Questa pagina mostra come utilizzare i Controlli di servizio VPC con i pool privati di Cloud Build per aumentare la sicurezza delle tue build.

Limitazioni

La protezione dei Controlli di servizio VPC è disponibile solo per le build eseguite in pool privati; non puoi utilizzare i Controlli di servizio VPC con le build eseguite nei pool predefiniti.

Prima di iniziare

  • Per utilizzare gli esempi a riga di comando in questa guida, installa e configura Google Cloud CLI.

  • Configura una connessione privata tra la tua rete Virtual Private Cloud e la rete VPC in cui si trovano i pool privati. Per le istruzioni, consulta la pagina relativa alla configurazione dell'ambiente per creare pool privati.

Configurazione di un pool privato nel perimetro dei Controlli di servizio VPC

Per utilizzare i Controlli di servizio VPC con Cloud Build, devi prima creare e configurare un perimetro di servizio, eseguito a livello di organizzazione. Questa configurazione garantisce che i controlli di Controlli di servizio VPC vengano applicati quando si utilizza Cloud Build e che gli sviluppatori possono eseguire solo le build conformi ai Controlli di servizio VPC.

Creazione di un perimetro dei Controlli di servizio VPC

Autorizzazioni di gestione di identità e accessi: per configurare un perimetro di servizio, devi disporre dei ruoli Visualizzatore organizzazione e Editor contesto contesto. Per istruzioni sulla concessione di questi ruoli, consulta Configurazione dell'accesso alle risorse Cloud Build.

Per creare un perimetro dei Controlli di servizio VPC:

Segui la guida rapida di Controlli di servizio VPC per:

  1. Crea un perimetro di servizio.
  2. Aggiungi il progetto in cui intendi creare il pool privato al perimetro.

  3. Limita l'API Cloud Build.

Dopo aver configurato il perimetro di servizio, tutte le chiamate all'API Cloud Build vengono controllate per garantire che le chiamate abbiano origine dallo stesso perimetro.

Concedere all'account di servizio Cloud Build l'accesso al perimetro dei Controlli di servizio VPC

Cloud Build utilizza l'account di servizio Cloud Build o gli account di servizio specificati dall'utente per eseguire build per tuo conto. Nei casi seguenti, devi concedere all'account di servizio l'accesso al perimetro dei Controlli di servizio VPC, affinché le tue build possano accedere alle risorse all'interno del perimetro:

Non devi concedere all'account di servizio l'accesso al perimetro di controllo dei servizi VPC se utilizzi account di servizio specificati dall'utente per iniziare a creare le build utilizzando l'API Cloud Build o la riga di comando.

Per concedere all'account di servizio Cloud Build l'accesso al perimetro dei Controlli di servizio VPC:

  1. Prendi nota dell'indirizzo email del tuo account di servizio Cloud Build o dell'account di servizio specificato dall'utente. Per ottenere l'indirizzo email del tuo account di servizio Cloud Build:

    1. Apri la pagina IAM:

      Apri la pagina IAM

    2. Seleziona il progetto che hai aggiunto al perimetro di servizio.

    3. Nella tabella delle autorizzazioni, individua l'indirizzo email che termina con @cloudbuild.gserviceaccount.com e annotalo. Questo è il tuo account di servizio Cloud Build.

  2. Aggiorna il criterio in entrata del perimetro di servizio per consentire all'account di servizio di chiamare le API Cloud Build. Questa regola in entrata consente all'account di servizio di effettuare la chiamata API CreateBuild. Per ulteriori informazioni sull'impostazione dei criteri di traffico VPC per i Controlli di servizio VPC, vedi Configurazione dei criteri in entrata e in uscita e Regole in entrata e in uscita.

    - ingressFrom:
        identities:
        - serviceAccount:SERVICE_ACCOUNT_EMAIL
        sources:
        - accessLevel: '*'
      ingressTo:
        operations:
        - serviceName: 'cloudbuild.googleapis.com'
          methodSelectors:
          - method: '*'
        resources:
        - 'projects/PROJECT_NUMBER'
    
  3. Aggiorna il criterio del perimetro eseguendo il comando seguente sostituendo le variabili con valori appropriati:

    gcloud beta access-context-manager perimeters update PERIMETER_NAME \
        --set-ingress-policies=INGRESS-FILENAME \
        --policy=POLICY_ID
    

Sostituisci le variabili riportate sopra con le seguenti:

  • SERVICE_ACCOUNT_EMAIL: l'indirizzo email del tuo account di servizio Cloud Build o dell'account di servizio specificato dall'utente.
  • PROJECT_NUMBER: numero di progetto del progetto cloud che hai aggiunto al perimetro dei Controlli di servizio VPC.
  • PERIMETER_NAME: il nome del perimetro dei Controlli di servizio VPC.
  • INGRESS-FILENAME: il nome del file del criterio in entrata.
  • POLICY_ID: l'ID del criterio di accesso.

Facoltativo: abilitazione dell'accesso al perimetro per le macchine di sviluppo

Poiché i controlli Controlli di servizio VPC sono applicati per l'API Cloud Build, le chiamate all'API Cloud Build non vanno a buon fine a meno che non provengano dal perimetro del servizio. Pertanto, per gestire le build con l'API Cloud Build, l'interfaccia utente di Cloud Build nella console Google Cloud o Google Cloud CLI, scegli una delle seguenti opzioni:

  • Usa una macchina all'interno del perimetro dei Controlli di servizio VPC. Ad esempio, puoi utilizzare una VM di Compute Engine o una macchina on-premise connessa alla tua rete VPC tramite VPN.

  • Concedi agli sviluppatori l'accesso al perimetro. Ad esempio, puoi creare livelli di accesso che consentono l'accesso al perimetro in base all'indirizzo IP o all'identità utente. Per ulteriori informazioni, vedi come consentire l'accesso alle risorse protette dall'esterno di un perimetro.

Configurazione dei vincoli dei criteri dell'organizzazione

Per assicurarti che i controlli di Controllo di servizio VPC vengano applicati correttamente e che limiti le build di un'organizzazione Google Cloud in modo che utilizzino solo i pool privati specificati, imposta il vincolo dei criteri dell'organizzazione constraints/cloudbuild.allowedWorkerPools. Puoi applicare il criterio dell'organizzazione all'intera organizzazione o a un progetto o a una cartella nell'organizzazione. Ad esempio, il criterio dell'organizzazione può specificare che:

  • Tutte le build nell'organizzazione utilizzano i pool privati specificati.
  • Tutte le build in una cartella utilizzano i pool privati specificati.
  • Tutte le build di un progetto utilizzano i pool privati specificati.

Autorizzazioni IAM: per gestire i criteri dell'organizzazione, devi disporre del ruolo Amministratore criteri dell'organizzazione (roles/orgpolicy.policyAdmin). Per istruzioni sulla concessione di un ruolo, consulta Configurazione dell'accesso alle risorse Cloud Build.

Il comando gcloud resource-manager org-policies allow imposta un criterio dell'organizzazione che richiede che le build nell'organizzazione utilizzino solo il pool privato specificato:

 gcloud resource-manager org-policies allow \
     cloudbuild.allowedWorkerPools \
     projects/PRIVATEPOOL_PROJECT_ID/locations/LOCATION/workerPools/PRIVATEPOOL_ID \
     --organization ORGANIZATION_ID

Sostituisci i valori segnaposto nei comandi riportati sopra con i seguenti elementi:

  • PRIVATEPOOL_ID: l'ID del pool privato per eseguire le build.

  • PRIVATEPOOL_PROJECT_ID: l'ID del progetto Cloud che contiene il pool privato.

  • LOCATION: l'area geografica che contiene il pool privato.

  • ORGANIZATION_ID: l'ID dell'organizzazione in cui stai eseguendo le build.

Il comando supporta i prefissi under: e is.

Per impostare i criteri dell'organizzazione che richiedono che tutte le build nell'organizzazione utilizzino qualsiasi pool privato che appartiene all'organizzazione:

 gcloud resource-manager org-policies allow \
     cloudbuild.allowedWorkerPools under:organizations/ORGANIZATION_ID \
     --organization ORGANIZATION_ID

Dove ORGANIZATION_ID rappresenta l'ID dell'organizzazione che contiene i pool privati.

Per impostare un criterio dell'organizzazione che richiede che tutte le build dei progetti contenuti in una cartella utilizzino un pool privato nel progetto specificato:

 gcloud resource-manager org-policies allow \
     cloudbuild.allowedWorkerPools under:projects/PROJECT_ID \
     --folder FOLDER_ID

Dove PROJECT_ID è l'ID del progetto che contiene i pool privati e FOLDER_ID contiene i progetti in cui stai eseguendo le build.

Per impostare un criterio dell'organizzazione che richiede che tutte le build di un progetto utilizzino qualsiasi pool privato nel progetto specificato:

 gcloud resource-manager org-policies allow \
     cloudbuild.allowedWorkerPools under:projects/PRIVATEPOOL_PROJECT_ID \
     --project BUILD_PROJECT_ID

Dove PRIVATEPOOL_PROJECT_ID è l'ID del progetto che contiene i pool privati e BUILD_PROJECT_ID è l'ID del progetto in cui stai eseguendo le build.

Tieni presente le seguenti considerazioni durante l'applicazione del vincolo dei criteri dell'organizzazione constraints/cloudbuild.allowedWorkerPools:

  • Se applichi questo vincolo dei criteri dell'organizzazione a un progetto Cloud, assicurati che tutte le build nel progetto utilizzino il pool privato; le build che tentano di utilizzare il pool condiviso predefinito non riusciranno.

  • Se la tua organizzazione Google Cloud contiene servizi come App Engine o Cloud Functions che utilizzano implicitamente Cloud Build, l'applicazione forzata di questo vincolo del criterio dell'organizzazione può causare il mancato funzionamento di questi servizi.

Creazione di un pool privato nel perimetro di servizio

console

  1. Apri la pagina Pool di worker in Google Cloud Console:

    Apri la pagina del pool di worker di Cloud Build

  2. Seleziona il progetto in cui vuoi creare il pool privato.

  3. Nella pagina Pool di worker, fai clic su Crea.

  4. Nel riquadro laterale Crea pool privato:

    1. Inserisci un nome per il pool privato.

    2. Seleziona la regione in cui vuoi creare il pool privato.

    3. Seleziona il tipo di macchina Compute Engine da utilizzare per il pool privato.

    4. Inserisci il numero di progetto Cloud nel punto in cui hai creato la rete VPC.

    5. Inserisci il nome della rete VPC.

    6. Deseleziona Assegna IP esterni.

    7. Fai clic su Crea.

gcloud

  1. Crea un file di configurazione del pool privato in formato YAML o JSON e imposta il flag egressOption su NO_PUBLIC_EGRESS:

    privatePoolV1Config:
      networkConfig:
        egressOption: NO_PUBLIC_EGRESS
        peeredNetwork: PEERED_NETWORK
    workerConfig:
      diskSizeGb: 'PRIVATE_POOL_DISK_SIZE'
      machineType: PRIVATE_POOL_MACHINE_TYPE
    

    Dove:

    • PEERED_NETWORK è l'URL della risorsa di rete della rete in peering con la rete del fornitore di servizi. Il formato PEERED_NETWORK deve essere nel formato projects/NETWORK_PROJECT_ID/global/networks/NETWORK_NAME, dove NETWORK_PROJECT_ID è l'ID del progetto Cloud che contiene la rete VPC e NETWORK_NAME è il nome della rete VPC.
    • PRIVATE_POOL_MACHINE_TYPE è il tipo di macchina Compute Engine per l'istanza del pool privato. Per i tipi di macchina supportati, consulta l'articolo sullo schema dei file di configurazione del pool privato.
    • PRIVATE_POOL_DISK_SIZE è la dimensione del disco per l'istanza del pool privato in GB. Specifica un valore maggiore di o uguale a 100 e minore o uguale a 1000. Se specifichi 0, Cloud Build utilizza il valore predefinito 100.
    • egressOption è il flag per abilitare il perimetro dei Controlli di servizio VPC per il tuo pool privato. Imposta questo valore su NO_PUBLIC_EGRESS per creare il tuo pool privato all'interno del perimetro dei Controlli di servizio VPC.
  2. Esegui questo comando gcloud, dove PRIVATEPOOL_ID è un identificatore univoco per il pool privato, PRIVATEPOOL_CONFIG_FILE è il nome del file di configurazione del pool privato, mentre REGION è l'area geografica in cui vuoi creare il pool privato:

    gcloud builds worker-pools create PRIVATEPOOL_ID --config-from-file PRIVATEPOOL_CONFIG_FILE --region REGION
    

Facoltativo: abilitazione delle chiamate Internet pubbliche sulla rete VPC

Assicurati che la tua rete VPC sia configurata in modo da consentire la connettività di rete alla posizione in cui è ospitato il repository (ad esempio github.com) con le seguenti impostazioni:

  1. Nel file di configurazione del pool privato, assicurati che il campo egressOption sia impostato su NO_PUBLIC_EGRESS.

  2. La rete VPC su cui viene eseguito il pool privato viene definita come PeeredNetwork. Per consentire le chiamate all'host del repository, assicurati che questa rete VPC consenta il traffico in uscita pubblico all'host del repository. Per informazioni su come eseguire questa operazione, vedi Route e regole firewall.

Esecuzione di build in un pool privato all'interno del perimetro di servizio

Le build eseguite all'interno del perimetro di servizio non hanno accesso a una rete Internet pubblica, per cui dovrai eseguire alcune azioni prima di eseguire una build.

Push di immagini e artefatti creati

Se le build eseguono il push di immagini e artefatti in Container Registry, Artifact Registry o Cloud Storage che si trovano in un altro progetto Cloud, assicurati di aggiungere il progetto allo stesso perimetro di servizio del progetto da cui hanno origine le build.

Creazione di un bucket di log

La build eseguita all'interno del perimetro di servizio non avrà le autorizzazioni per archiviare i log di build nel bucket di log predefinito di Cloud Storage. Scegli una delle seguenti opzioni:

Esecuzione delle build

Esegui la build utilizzando le istruzioni riportate in Esecuzione di build in un pool privato.

Passaggi successivi