Utilizzare i Controlli di servizio VPC

I Controlli di servizio VPC sono una funzionalità che ti consente di configurare un perimetro sicuro per proteggerti dall'esfiltrazione di dati. Google Cloud Questa pagina mostra come utilizzare i Controlli di servizio VPC con i pool privati Cloud Build per aggiungere ulteriore sicurezza alle tue build.

Prima di iniziare

  • Per utilizzare gli esempi di 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 risiedono i pool privati. Per le istruzioni, vedi Configurare l'ambiente per creare pool privati.

  • Le build eseguite all'interno del perimetro di servizio non avranno l'autorizzazione per archiviare i log di build nel bucket di log Cloud Storage predefinito. Prima di eseguire la build, configura il file di configurazione della build con una delle seguenti opzioni:

  • Se le tue build eseguono il push di immagini e artefatti in Artifact Registry o Cloud Storage in un progetto Google Cloud diverso, aggiungi questo progetto allo stesso perimetro di servizio del progetto da cui hanno origine le tue build.

  • (Facoltativo) Acquisisci familiarità con le configurazioni dei tipo di macchina e la disponibilità regionale. Per ulteriori informazioni, consulta workerconfig nella documentazione dello schema del file di configurazione del pool privato.

Per assicurarti che disponga delle autorizzazioni necessarie per configurare un perimetro di servizio, chiedi all'amministratore di concedere a i seguenti ruoli IAM sul account di servizio:

Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

L'amministratore potrebbe anche essere in grado di concedere le autorizzazioni richieste tramite ruoli personalizzati o altri ruoli predefiniti.

Configura 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, operazione eseguita a livello di organizzazione. Questa configurazione garantisce che i controlli di servizio VPC vengano applicati quando utilizzi Cloud Build e che gli sviluppatori possano eseguire solo build conformi ai Controlli di servizio VPC.

Crea un perimetro dei Controlli di servizio VPC

Segui la guida rapida ai Controlli di servizio VPC per:

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

  3. Limita l'API Cloud Build.

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

Concessione dell'accesso del account di servizio al perimetro dei Controlli di servizio VPC

Nei seguenti casi, devi concedere al service account Cloud Build o Compute Engine legacy l'accesso al perimetro dei Controlli di servizio VPC affinché le build possano accedere alle risorse all'interno del perimetro:

  • Se utilizzi il account di servizio Cloud Build o Compute Engine legacy per avviare le build utilizzando un trigger di build, l'API Cloud Build o la riga di comando.

  • Se utilizzi service account specificati dall'utente per avviare build utilizzando un trigger di build.

Non è necessario concedere al account di servizio Cloud Build o Compute Engine legacy l'accesso al perimetro dei Controlli di servizio VPC se utilizzi service account specificati dall'utente per avviare le build utilizzando l'API Cloud Build o la riga di comando.

Segui questi passaggi per concedere al service account Cloud Build o Compute Engine legacy l'accesso al perimetro dei Controlli di servizio VPC:

  1. Prendi nota dell'indirizzo email del account di servizio legacy:

    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 corrispondente all'account di servizio Cloud Build legacy.

  2. Aggiorna la policy in entrata del perimetro di servizio per consentire all'account di servizio di chiamare le API Cloud Build. Questa regola in entrata consente al account di servizio di effettuare la chiamata API CreateBuild. Per saperne di più sulla configurazione delle policy in entrata dei Controlli di servizio VPC, consulta Configurazione delle policy 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 la policy del perimetro eseguendo il seguente comando e sostituendo le variabili con i valori appropriati:

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

Dove:

  • SERVICE_ACCOUNT_EMAIL: l'indirizzo email del account di servizio.
  • PROJECT_NUMBER: il numero di progetto del progettoGoogle 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 della policy in entrata.
  • POLICY_ID: l'ID della policy di accesso.

(Facoltativo) Abilitare l'accesso al perimetro per le macchine di sviluppo

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

  • Utilizza una macchina all'interno del perimetro dei Controlli di servizio VPC. Ad esempio, puoi utilizzare una VM 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 saperne di più, consulta Consentire l'accesso a risorse protette dall'esterno di un perimetro.

Configurare i vincoli dei criteri dell'organizzazione

Per assicurarti che i controlli di servizio VPC vengano applicati correttamente e che tu stia limitando le build in un'organizzazione Google Cloud in modo che utilizzino solo i pool privati specificati, imposta il vincolo del criterio dell'organizzazione constraints/cloudbuild.allowedWorkerPools. Puoi applicare il criterio dell'organizzazione all'intera organizzazione o a un progetto o a una cartella dell'organizzazione. Ad esempio, i criteri dell'organizzazione possono 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 le policy dell'organizzazione, devi disporre del ruolo Organization Policy Administrator (roles/orgpolicy.policyAdmin). Per istruzioni sulla concessione di un ruolo, consulta la sezione Configurare l'accesso alle risorse Cloud Build.

Il comando gcloud resource-manager org-policies allow imposta una policy dell'organizzazione che richiede che le build dell'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

Dove:

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

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

  • LOCATION: la regione che contiene il pool privato.

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

Il comando supporta i prefissi under: e is.

Per impostare una policy dell'organizzazione che richieda a tutte le build dell'organizzazione di utilizzare qualsiasi pool privato dell'organizzazione:

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

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

Per impostare una policy dell'organizzazione che richieda a tutte le build nei progetti di una cartella di utilizzare qualsiasi 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 esegui le build.

Per impostare un criterio dell'organizzazione che richieda a tutte le build di un progetto di utilizzare 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 esegui le build.

Tieni presente le seguenti considerazioni quando applichi il vincolo dei criteri dell'organizzazione constraints/cloudbuild.allowedWorkerPools:

  • Se applichi questo vincolo del criterio dell'organizzazione a un progetto Google Cloud , assicurati che tutte le build del progetto utilizzino il pool privato; le build che tentano di utilizzare il pool condiviso predefinito non andranno a buon fine.

  • Se la tua Google Cloud organizzazione contiene servizi come App Engine o funzioni Cloud Run che utilizzano implicitamente Cloud Build, l'applicazione di questo vincolo dei criteri dell'organizzazione potrebbe impedire il funzionamento di questi servizi come previsto.

Crea un pool privato nel perimetro di servizio

Console Google Cloud

  1. Apri la pagina Pool di worker nella console Google Cloud :

    Apri la pagina del pool di worker Cloud Build

  2. Fai clic su Crea pool privato.

    Viene visualizzata la pagina Crea pool privato.

    Inserisci le seguenti informazioni per creare il tuo pool privato:

  3. Nome: inserisci un nome per il pool privato. Questo valore può contenere solo caratteri alfanumerici /[a-z][0-9]/ o trattini -. Il nome del tuo pool privato deve contenere da 1 a 63 caratteri.

  4. Regione: seleziona la regione in cui vuoi creare il pool privato.

  5. Configurazione macchina: configura quanto segue:

    1. Serie: scegli una serie di macchine.

    2. Tipo di macchina: questa impostazione mostra i tipi di macchina, in base alla serie di macchine selezionata, che il pool di worker può utilizzare. I tipi di macchine disponibili variano in base alla regione.

    3. Dimensioni disco: inserisci le dimensioni del disco per il pool privato. Specifica un valore maggiore o uguale a 100 e minore o uguale a 4000. Se non fornisci un valore, Cloud Build utilizza una dimensione del disco di 100.

    4. Virtualizzazione nidificata: se hai selezionato una macchina della serie C3, puoi attivare la virtualizzazione nidificata. Questa funzionalità ti consente di eseguire istanze di macchine virtuali (VM) all'interno di altre VM in modo da poter creare i tuoi ambienti di virtualizzazione.

  6. In Tipo di rete, seleziona Rete privata, quindi seleziona quanto segue:

    1. Progetto: seleziona l' Google Cloud ID progetto.

    2. Rete: seleziona la tua rete dal menu a discesa. Se non hai creato una rete, consulta Crea e gestisci le reti VPC per scoprire come crearne una.

    3. Intervallo IP: inserisci l'intervallo IP interno che la rete di produzione di Cloud Build può utilizzare per allocare alle VM che mantengono una connessione con i repository privati.

      Puoi specificare l'intervallo utilizzando la notazione di routing Classless Inter-Domain Routing (CIDR) nel formato STARTING_IP_ADDRESS/SUBNET_PREFIX_SIZE. Ad esempio, 192.0.2.0/24 ha una lunghezza del prefisso di 24. I primi 24 bit dell'intervallo IP vengono utilizzati come subnet mask (192.0.2.0), mentre gli indirizzi host possibili vanno da 192.0.2.0 a 192.0.2.255.

      Il valore della lunghezza del prefisso non deve superare /29. Se non viene specificato alcun valore per l'intervallo, viene assegnato automaticamente un valore predefinito di /24. Se non viene specificato alcun valore per la lunghezza del prefisso, gli indirizzi IP vengono assegnati automaticamente all'interno della rete VPC con peering. Se non viene specificato alcun valore per l'indirizzo IP, all'indirizzo IP viene assegnato automaticamente un intervallo all'interno della rete VPC con peering.

    4. Deseleziona Assegna IP esterni per limitare l'accesso alla tua rete privata.

  7. Fai clic su Crea per creare il pool privato.

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 service provider. PEERED_NETWORK deve essere nel formato projects/NETWORK_PROJECT_ID/global/networks/NETWORK_NAME, dove NETWORK_PROJECT_ID è l'ID progetto del progetto Google 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 macchine supportati, consulta Schema del file di configurazione dei pool privati.
    • PRIVATE_POOL_DISK_SIZE è la dimensione del disco per l'istanza del pool privato in GB. Specifica un valore maggiore 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 pool privato all'interno del perimetro dei Controlli di servizio VPC.
  2. Esegui il seguente comando gcloud, dove PRIVATEPOOL_ID è un identificatore univoco per il tuo pool privato, PRIVATEPOOL_CONFIG_FILE è il nome del file di configurazione del pool privato e REGION è la regione in cui vuoi creare il pool privato:

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

(Facoltativo) Abilita le chiamate a internet pubblico sulla rete VPC

Per consentire alla tua rete VPC di consentire la connettività di rete alla posizione in cui è ospitato il repository (ad es. github.com), configura entrambe le seguenti impostazioni:

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 in pool predefiniti.

  • I trigger Pub/Sub di Cloud Build non sono supportati quando vengono utilizzati i Controlli di servizio VPC.

Passaggi successivi