Controlli di servizio VPC è una funzionalità di Google Cloud che consente di configurare un perimetro sicuro per proteggersi dall'esfiltrazione di dati. Questa pagina mostra utilizzare i Controlli di servizio VPC Pool privati di Cloud Build per aggiungere ulteriore sicurezza alle tue build.
Limitazioni
La protezione dei Controlli di servizio VPC è disponibile solo per le build eseguite in privato piscine; Non puoi usare Controlli di servizio VPC con le build eseguite in pool predefiniti.
I trigger Pub/Sub di Cloud Build non sono supportati se Si utilizza Controlli di servizio VPC.
Prima di iniziare
Per utilizzare gli esempi a riga di comando in questa guida, installa configurare Google Cloud CLI.
Configura una connessione privata tra la tua rete Virtual Private Cloud e il VPC in cui si trovano i pool privati. Per istruzioni, vedi configurare l'ambiente per creare pool privati.
Configurazione di un pool privato nel perimetro dei Controlli di servizio VPC
Per utilizzare Controlli di servizio VPC con Cloud Build, devi prima creare e configurare un perimetro di servizio, a livello di organizzazione. Questo assicura che i controlli dei Controlli di servizio VPC vengano applicati quando si utilizza Cloud Build e che gli sviluppatori possano eseguire solo build conformi ai Controlli di servizio VPC.
Creazione di un perimetro dei Controlli di servizio VPC
Autorizzazioni di Identity and Access Management: per configurare un perimetro di servizio, è necessario Visualizzatore organizzazione e Editor Gestore contesto accesso ruoli. 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 a:
- Creare un perimetro di servizio.
Aggiungi il progetto in cui prevedi di creare il pool privato al perimetro.
Limita l'API Cloud Build.
Dopo aver configurato il perimetro di servizio, tutte le chiamate a Cloud Build Le API vengono controllate per garantire che le chiamate provengano dallo stesso perimetro.
Concessione dell'accesso all'account di servizio al perimetro dei Controlli di servizio VPC
Nei casi seguenti, devi concedere il servizio Cloud Build o Compute Engine legacy l'accesso dell'account al perimetro dei Controlli di servizio VPC affinché le tue build possano accedere all'interno del perimetro:
Se utilizzi l'account di servizio Cloud Build o Compute Engine legacy per iniziare le build utilizzando un trigger di build, un'API Cloud Build o dall'interfaccia a riga di comando.
Se usi account di servizio specificati dall'utente per avviare le build utilizzando una build trigger.
Non è necessario concedere l'accesso all'account di servizio legacy di Cloud Build o Compute Engine al perimetro dei Controlli di servizio VPC se utilizzi il servizio specificato dall'utente per avviare le build utilizzando l'API Cloud Build o il comando riga di comando.
Per concedere il servizio legacy Cloud Build o Compute Engine, segui questi passaggi l'accesso all'account al perimetro dei Controlli di servizio VPC:
Prendi nota dell'indirizzo email dell'account di servizio precedente:
Apri la pagina IAM:
Seleziona il progetto che hai aggiunto al perimetro di servizio.
Nella tabella delle autorizzazioni, individua l'indirizzo email corrispondente all'indirizzo precedente Account di servizio Cloud Build.
Aggiorna il criterio in entrata del perimetro di servizio per consentire l'account di servizio per chiamare l'istanza di Cloud Build su quelle di livello inferiore. Questa regola in entrata consente all'account di servizio di rendere
CreateBuild
chiamata API. Per saperne di più sull'impostazione dei criteri in entrata dei Controlli di servizio VPC, consulta Configurazione dei criteri di traffico in entrata e in uscita e le 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'
Aggiorna il criterio perimetrale eseguendo questo comando sostituendo 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 l'account di servizio.PROJECT_NUMBER
: il numero del progetto Progetto Google Cloud che hai aggiunto al perimetro dei Controlli di servizio VPC.PERIMETER_NAME
: il nome del tuo perimetro Controlli di servizio VPC.INGRESS-FILENAME
: il nome del file dei criteri in entrata.POLICY_ID
: l'ID del criterio di accesso.
(Facoltativo) Abilitazione dell'accesso perimetrale per le macchine di sviluppo
Poiché i controlli dei Controlli di servizio VPC sono applicati per l'API Cloud Build, all'API Cloud Build non riescono a meno che non provengano dall'interno perimetro di servizio. Quindi, per gestire le build con l'API Cloud Build, la UI di Cloud Build nella console Google Cloud oppure Google Cloud CLI, scegli una delle seguenti opzioni:
Utilizza una macchina all'interno del perimetro dei Controlli di servizio VPC. Ad esempio, puoi usare una VM di Compute Engine o una macchina on-premise connessa tramite VPN.
Concedi agli sviluppatori l'accesso al perimetro. Ad esempio, puoi creano livelli di accesso che abilitano l'accesso al perimetro in base all'indirizzo IP e l'identità utente. Per ulteriori informazioni, vedi Autorizzazione dell'accesso alle risorse protette dall'esterno di un perimetro
Configurazione dei vincoli dei criteri dell'organizzazione
Per assicurarti che i controlli dei Controlli di servizio VPC vengano applicati correttamente
limitando le build in un'organizzazione Google Cloud in modo che utilizzino solo
per i pool privati, imposta il vincolo del criterio dell'organizzazione constraints/cloudbuild.allowedWorkerPools
.
Puoi applicare il criterio dell'organizzazione all'intera organizzazione o a un progetto
o 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 usano i pool privati specificati.
- Tutte le build in un progetto utilizzano i pool privati specificati.
Autorizzazioni IAM: per gestire i criteri dell'organizzazione, è necessario il
Amministratore criteri organizzazione
(roles/orgpolicy.policyAdmin
). Per istruzioni su come concedere 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
usa 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 precedenti con i seguenti:
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 un criterio dell'organizzazione che richieda l'uso di tutte le build dell'organizzazione in 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 un criterio dell'organizzazione che richieda tutte le build nei progetti in un cartella per 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
ai progetti in cui esegui le build.
Per impostare un criterio dell'organizzazione che richieda che tutte le build di un progetto utilizzino una 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.
Quando applichi il
constraints/cloudbuild.allowedWorkerPools
vincolo del criterio dell'organizzazione:
Se applichi questo vincolo del criterio dell'organizzazione a un progetto Google Cloud, assicurati che tutte le build nel progetto utilizzino il pool privato; di build che tentano per utilizzare il pool condiviso predefinito non riuscirà.
Se la tua organizzazione Google Cloud contiene servizi come App Engine o Cloud Functions che usano implicitamente Cloud Build, applicando questo il vincolo del criterio dell'organizzazione potrebbe causare il malfunzionamento di questi servizi come previsto.
Creazione di un pool privato nel perimetro di servizio
Console
Apri la pagina Pool di worker nella console Google Cloud:
Seleziona il progetto in cui vuoi creare il pool privato.
Nella pagina Pool di worker, fai clic su Crea.
Nel riquadro laterale Crea pool privato:
Inserisci un nome per il pool privato.
Seleziona la regione in cui vuoi creare il pool privato.
Seleziona il tipo di macchina Compute Engine che vuoi utilizzare piscina privata.
Inserisci il numero del progetto Google Cloud in cui hai creato della tua rete VPC.
Inserisci il nome della tua rete VPC.
Deseleziona Assegna IP esterni.
Fai clic su Crea.
gcloud
Crea un file di configurazione del pool privato in formato YAML o JSON e imposta il flag
egressOption
suNO_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 connessa in peering con la rete del fornitore di servizi.PEERED_NETWORK
deve essere nel formatoprojects/NETWORK_PROJECT_ID/global/networks/NETWORK_NAME
, doveNETWORK_PROJECT_ID
è l'ID progetto al progetto Google Cloud che contiene la tua rete VPCNETWORK_NAME
è il nome della tua rete VPC.PRIVATE_POOL_MACHINE_TYPE
è Compute Engine per l'istanza del pool privato. Per i tipi di macchina supportati, consulta lo schema del file di configurazione del pool privato.PRIVATE_POOL_DISK_SIZE
è la dimensione del disco dell'istanza del pool privato in GB. Specifica un valore maggiore o uguale a 100 e minore o uguale a 1000. Se specifichi0
, Cloud Build utilizza il valore predefinito di 100.egressOption
è il flag per abilitare il perimetro dei Controlli di servizio VPC per piscina privata. Imposta questo elemento suNO_PUBLIC_EGRESS
per creare il tuo pool privato all'interno Perimetro Controlli di servizio VPC.
Esegui questo comando
gcloud
, dovePRIVATEPOOL_ID
è un identificatore univoco per il pool privato,PRIVATEPOOL_CONFIG_FILE
è il nome del file di configurazione del pool privato eREGION
è il regione in cui vuoi creare il pool privato:gcloud builds worker-pools create PRIVATEPOOL_ID --config-from-file PRIVATEPOOL_CONFIG_FILE --region REGION
(Facoltativo) Abilitare le chiamate internet pubbliche sulla rete VPC
Assicurati che la tua rete VPC sia configurata in modo da consentire la connettività alla posizione in cui è ospitato il repository (ad es. github.com) con le seguenti impostazioni:
Nel file di configurazione del pool privato, assicurati che il campo
egressOption
sia impostato suNO_PUBLIC_EGRESS
.La rete VPC su cui viene eseguito il pool privato è definita come PeeredNetwork. Per consentire le chiamate all'host del repository, assicurati che questo VPC consente il traffico pubblico in uscita verso l'host del repository. Per informazioni su come fare 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 alla rete internet pubblica per cui dovrai eseguire alcune azioni prima di eseguire una build.
Push di immagini ed artefatti creati
Se le tue build eseguono il push di immagini e artefatti in Container Registry (Deprecato), Artifact Registry o Cloud Storage che si trovano in un altro progetto Google Cloud, assicurati di aggiungerlo alla lo stesso perimetro di servizio del progetto da cui hanno origine le build.
Creazione di un bucket di log
L'esecuzione della build all'interno del perimetro di servizio non avrà le autorizzazioni per l'archiviazione log di build nel bucket di log predefinito di Cloud Storage. Scegli una delle seguenti opzioni:
- Scegli di archiviare i log di build in Cloud Logging impostando
loggingMode
aCLOUD_LOGGING_ONLY
. - Nel tuo progetto privato, crea un bucket di log di Cloud Storage da archiviare nei log di build. Per istruzioni in merito, vedi Archiviare i log di build in un bucket creato dall'utente
- Disabilita i log di build impostando
loggingMode
suNONE
.
Esecuzione delle build
Esegui la build seguendo le istruzioni riportate in Eseguire le build in un pool privato.
Passaggi successivi
- Scopri come eseguire build in pool privati.
- Scopri come configurare i casi d'uso di networking di uso comune.