Configurazione dei Controlli di servizio VPC

Controlli di servizio VPC è una funzionalità di Google Cloud che ti consente di configurare un perimetro sicuro per proteggerti dall'esfiltrazione di dati. Questa guida mostra come utilizzare i controlli dei servizi VPC con le funzioni Cloud Run per aggiungere ulteriore sicurezza alle funzioni.

Per le limitazioni di questa integrazione, consulta la documentazione di VPC Service Controls.

Configurazione a livello di organizzazione

Per utilizzare Controlli di servizio VPC con le funzioni di Cloud Run, puoi configurare un perimetro di servizio a livello di organizzazione. Configurando le app all'interno dei criteri dell'organizzazione, puoi assicurarti che i Controlli di servizio VPC vengono applicati forzatamente quando si utilizzano le funzioni di Cloud Run e che gli sviluppatori possono di eseguire il deployment solo di servizi conformi ai Controlli di servizio VPC. Scopri di più sull'eredità e sulle violazioni quando imposti un criterio dell'organizzazione.

Configurare un perimetro dei Controlli di servizio VPC

Per configurare un perimetro di servizio, è necessario Visualizzatore organizzazione (roles/resourcemanager.organizationViewer) e Editor Gestore contesto accesso (roles/accesscontextmanager.policyEditor).

Segui la guida rapida di Controlli di servizio VPC a:

  1. Creare un perimetro di servizio.

  2. Aggiungi uno o più progetti al perimetro.

  3. Limita l'API Cloud Functions e l'API Cloud Run Admin.

Dopo aver configurato il perimetro di servizio, tutte le chiamate all'API con restrizioni vengono controllati per garantire che le chiamate provengano dall'interno dello stesso perimetro.

(Facoltativo) Abilita l'accesso perimetrale per le macchine di sviluppo

Poiché i controlli di Controlli di servizio VPC vengono applicati all'API Cloud Functions, le chiamate all'API Cloud Functions non vanno a buon fine a meno che non provengano dall'interno del perimetro di servizio. Di conseguenza, per gestire le funzioni con l'API Cloud Functions, la UI delle funzioni di Cloud Run nella console Google Cloud oppure Google Cloud CLI, scegli una delle seguenti opzioni:

  • Utilizza un computer 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 una VPN.

  • Concedere agli sviluppatori di funzioni l'accesso al perimetro. Ad esempio, puoi creare livelli di accesso che consentano l'accesso al perimetro in base all'indirizzo IP o all'identità utente. Per ulteriori informazioni, consulta la sezione Consentire l'accesso a risorse protette dall'esterno di un perimetro.

Configura i criteri dell'organizzazione

Per gestire i criteri dell'organizzazione, è necessario Amministratore criteri organizzazione (roles/orgpolicy.policyAdmin).

Per rispettare i Controlli di servizio VPC e proteggerti dall'esfiltrazione dei dati, configura i seguenti criteri dell'organizzazione che controllano le impostazioni di rete consentite per le funzioni Cloud Run nel perimetro di servizio.

Limitare le impostazioni di traffico in entrata consentite

Il criterio dell'organizzazione run.allowedIngress controlla le impostazioni di ingresso che gli sviluppatori possono utilizzare per le funzioni Cloud Run. Imposta questa organizzazione per imporre agli sviluppatori di utilizzare interno valore:

Console

  1. Vai alla pagina del criterio Impostazioni di traffico in entrata consentite nella Console Google Cloud:

    Vai al criterio dell'organizzazione

  2. Fai clic su Gestisci criterio.

  3. Nella pagina Modifica criterio, seleziona Personalizza.

  4. In Applicazione criterio, seleziona Sostituisci.

  5. In Valori criterio, seleziona Personalizzato.

  6. In Tipo di criterio, seleziona Consenti.

  7. In Valori personalizzati, inserisci internal.

  8. Fai clic su Imposta criterio.

gcloud

Utilizza il comando gcloud resource-manager org-policies allow:

gcloud resource-manager org-policies allow \
  run.allowedIngress internal \
  --organization ORGANIZATION_ID

dove ORGANIZATION_ID è l'ID organizzazione.

Dopo l'applicazione di questo criterio dell'organizzazione, tutte le funzioni devono utilizzare il valore internal per le impostazioni di ingresso. Ciò significa che le funzioni HTTP possono accettare solo il traffico proveniente da una rete VPC all'interno del perimetro del servizio. I deployment delle funzioni che specificano un valore diverso avranno esito negativo.

Limita le impostazioni di traffico in uscita consentite del connettore VPC

Il criterio dell'organizzazione run.allowedVPCEgress consente di controllare impostazioni di traffico in uscita utilizzabili dagli sviluppatori per le funzioni Cloud Run. Imposta questo criterio dell'organizzazione in modo da consentire solo il valore Tutti i traffici:

Console

  1. Vai alla pagina del criterio Impostazioni di traffico in uscita del Connettore VPC consentite nella console Google Cloud:

    Vai al criterio dell'organizzazione

  2. Fai clic su Gestisci criterio.

  3. Nella pagina Modifica criterio, seleziona Personalizza.

  4. In Applicazione criterio, seleziona Sostituisci.

  5. In Valori criterio, seleziona Personalizzato.

  6. In Tipo di criterio, seleziona Consenti.

  7. In Valori personalizzati, inserisci all-traffic.

  8. Fai clic su Imposta criterio.

gcloud

Utilizza il comando gcloud resource-manager org-policies allow:

gcloud resource-manager org-policies allow \
  run.allowedVPCEgress all-traffic \
  --organization ORGANIZATION_ID

dove ORGANIZATION_ID è l'ID organizzazione.

Una volta applicato questo criterio dell'organizzazione, tutte le funzioni devono utilizzare all-traffic per le impostazioni di traffico in uscita. Ciò significa che le funzioni devono instradare tutto il traffico in uscita tramite la rete VPC. Funzione che specifica un valore diverso avranno esito negativo.

Insieme al criterio dell'organizzazione cloudfunctions.requireVPCConnector, obbliga tutto il traffico in uscita a attraversare la rete VPC dove si trova in base alle regole di routing e firewall configurate.

Configurazione a livello di progetto

Per i singoli progetti all'interno del perimetro di servizio, devi eseguire una configurazione aggiuntiva per utilizzare Controlli di servizio VPC.

Configura reti VPC

Per accedere alle API e ai servizi Google riducendo al contempo i rischi di esfiltrazione di dati, devono essere inviate intervallo di indirizzi IP virtuali (VIP) limitato, 199.36.153.4/30 (restricted.googleapis.com).

Per ogni rete VPC di un progetto, segui questi passaggi per bloccare traffico in uscita, tranne il traffico verso l'intervallo VIP limitato:

  1. Configura le regole del firewall per impedire ai dati di uscire dalla rete VPC:

    • Crea una regola di negazione per il traffico in uscita che blocchi tutto il traffico in uscita.

    • Crea una regola di uscita consentita che consenta il traffico verso 199.36.153.4/30 sulla porta TCP 443. Assicurati che abbia una priorità prima della regola di esclusione di uscita che hai appena creato, in modo da consentire l'uscita solo all'intervallo VIP limitato.

  2. Configura il DNS per risolvere *.googleapis.com in restricted.googleapis.com.

  3. Configura il DNS con un record A che mappa *.cloudfunctions.net al Intervallo IP 199.36.153.4/30. Con Cloud DNS puoi:

    gcloud dns managed-zones create ZONE_NAME \
    --visibility=private \
    --networks=https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/global/networks/VPC_NAME \
    --description=none \
    --dns-name=cloudfunctions.net
    
    gcloud dns record-sets transaction start --zone=ZONE_NAME
    
    gcloud dns record-sets transaction add --name=*.cloudfunctions.net. \
    --type=A 199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7 \
    --zone=ZONE_NAME \
    --ttl=300
    
    gcloud dns record-sets transaction execute --zone=ZONE_NAME
    
  4. Abilitare l'accesso privato Google per la subnet del Connettore VPC.

A questo punto, le richieste provenienti dall'interno della rete VPC:

  • non sono in grado di uscire dalla rete VPC, impedendo il traffico in uscita al di fuori del perimetro del servizio.
  • può raggiungere solo le API e i servizi Google che controllano i Controlli di servizio VPC, impedire l'esfiltrazione tramite le API di Google.

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

Le funzioni Cloud Run utilizzano Cloud Build per compilare il codice sorgente in un contenitore eseguibile. Per utilizzare le funzioni Cloud Run con Controlli di servizio VPC, devi configurare l'account di servizio Cloud Build (predefinito o personalizzato) in modo che abbia accesso al perimetro di servizio.

Trova il nome dell'account di servizio

Se utilizzi l'account di servizio Cloud Build predefinito, puoi trovare il suo nome come segue:

  1. Utilizza la pagina IAM nella console Google Cloud per trovare Cloud Build l'account di servizio.

    Apri IAM

  2. Assicurati che nel menu a discesa del progetto sia visualizzato il progetto corretto.

  3. Cerca cloudbuild.gserviceaccount.com. L'indirizzo email nel moduloPROJECT_NUMBER@cloudbuild.gserviceaccount.com è il nome dell'account di servizio.

Se hai un account di servizio Cloud Build personalizzato, utilizza questo nome.

Concedi all'account di servizio l'accesso al perimetro di servizio

Una volta che hai il nome dell'account di servizio, segui la guida alla pagina Limitare l'accesso per account utente o di servizio per creare un livello di accesso per l'account di servizio. Quindi, segui la procedura per aggiungere un livello di accesso a un perimetro esistente per aggiungere il livello di accesso al perimetro di servizio.

Esegui il deployment di funzioni conformi ai Controlli di servizio VPC

Dopo aver configurato i Controlli di servizio VPC per le funzioni Cloud Run, devi assicurarti che tutte le funzioni di cui è stato eseguito il deployment nel perimetro di servizio rispettano i criteri dell'organizzazione specificati. Ciò significa che:

  • Tutte le funzioni devono utilizzare un connettore di accesso VPC serverless. Consulta Connessione a una rete VPC per ulteriori informazioni.
  • Tutte le funzioni devono consentire solo il traffico da origini interne. Consulta: Impostazioni Ingress per ulteriori informazioni.
  • Tutte le funzioni devono instradare tutto il traffico in uscita attraverso rete VPC. Per ulteriori informazioni, consulta Impostazioni di uscita.

I deployment delle funzioni che non soddisfano questi criteri avranno esito negativo.

Controllare le funzioni esistenti per garantire la conformità dei Controlli di servizio VPC

Dopo aver configurato i Controlli di servizio VPC, la conformità delle nuove funzioni create nei progetti all'interno del perimetro di servizio viene verificata automaticamente. Tuttavia, per evitare interruzioni dei carichi di lavoro esistenti, le funzioni esistenti continuano a funzionare e potrebbero non rispettare i criteri dell'organizzazione.

Ti consigliamo di controllare le funzioni esistenti e di aggiornare o rieseguire il deployment se necessario. Per semplificare questa procedura, puoi creare uno script che utilizza l'API Cloud Functions per elencare le funzioni e evidenziare quelle che non specificano le impostazioni di rete appropriate.

Utilizzo di Controlli di servizio VPC con funzioni esterne a un perimetro

Le sezioni precedenti si applicano allo scenario in cui esegui il deployment delle funzioni di Cloud Run all'interno di un perimetro di servizio dei Controlli di servizio VPC.

Se devi eseguire il deployment di una funzione al di fuori del perimetro di servizio, ma richiede l'accesso alle risorse all'interno di un perimetro, utilizza la seguente configurazione:

  1. Concedi all'account di servizio Cloud Build l'accesso al perimetro dei Controlli di servizio VPC.
  2. Concedi all'account di servizio di runtime della funzione l'accesso al perimetro. Puoi farlo creazione di un livello di accesso e aggiungendo il livello di accesso al perimetro di servizio, o per creazione di un criterio in entrata lungo il perimetro.
  3. Connetti la funzione a una rete VPC.
  4. Instrada tutto il traffico in uscita dalla funzione attraverso il VPC in ogni rete. Per ulteriori informazioni, consulta Impostazioni di uscita.

Dopo aver completato questa configurazione, la funzione potrà raggiungere e risorse protette dal perimetro.