Configurazione dei Controlli di servizio VPC
Controlli di servizio VPC è una funzionalità di Google Cloud che consente di configurare un perimetro sicuro per prevenire l'esfiltrazione di dati. Questa guida illustra come utilizzare Controlli di servizio VPC con Cloud Functions per aggiungere ulteriore sicurezza alle tue funzioni.
Per le limitazioni di questa integrazione, consulta la documentazione relativa ai Controlli di servizio VPC.
Configurazione a livello di organizzazione
Per utilizzare Controlli di servizio VPC con Cloud Functions, puoi configurare un perimetro di servizio a livello di organizzazione. Configurando criteri dell'organizzazione appropriati, puoi garantire che i controlli dei Controlli di servizio VPC vengano applicati quando si utilizza Cloud Functions e che gli sviluppatori possano eseguire il deployment solo di servizi conformi ai Controlli di servizio VPC. Scopri di più su ereditarietà e violazioni quando si imposta un criterio dell'organizzazione.
Configurare un perimetro dei Controlli di servizio VPC
Per configurare un perimetro di servizio, devi disporre dei ruoli
Visualizzatore organizzazione
(roles/resourcemanager.organizationViewer
) e
Editor Gestore contesto accesso
(roles/accesscontextmanager.policyEditor
).
Segui la guida rapida di Controlli di servizio VPC per:
Creare un perimetro di servizio.
Aggiungi uno o più progetti al perimetro.
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 controllate per garantire che le chiamate provengano dallo stesso perimetro.
(Facoltativo) Abilita l'accesso perimetrale per le macchine di sviluppo
Poiché i controlli dei Controlli di servizio VPC vengono applicati per l'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. Pertanto, per gestire le funzioni con l'API Cloud Functions, la UI di Cloud Functions 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 di Compute Engine o una macchina on-premise connessa alla tua rete VPC tramite una VPN.
Concedi agli sviluppatori di funzioni l'accesso al perimetro. Ad esempio, puoi creare livelli di accesso che abilitano l'accesso al perimetro in base all'indirizzo IP o all'identità dell'utente. Per ulteriori informazioni, consulta Consentire l'accesso alle risorse protette dall'esterno di un perimetro.
Configura i criteri dell'organizzazione
Per gestire i criteri dell'organizzazione, devi disporre del ruolo Amministratore criteri organizzazione (roles/orgpolicy.policyAdmin
).
Per rispettare i Controlli di servizio VPC e proteggerti dall'esfiltrazione di dati, configura i seguenti criteri dell'organizzazione che controllano le impostazioni di rete consentite per Cloud Functions nel perimetro di servizio.
Limita impostazioni di traffico in entrata consentite
Il criterio dell'organizzazione run.allowedIngress
controlla le impostazioni del traffico in entrata che gli sviluppatori sono autorizzati a utilizzare per Cloud Functions. Imposta questo criterio dell'organizzazione in modo che impongano agli sviluppatori di utilizzare il valore ALLOW_INTERNAL_ONLY
:
Console
Vai alla pagina dei criteri Impostazioni di traffico in entrata consentite nella console Google Cloud:
Fai clic su Gestisci criterio.
Nella pagina Modifica criterio, seleziona Personalizza.
In Applicazione dei criteri, seleziona Sostituisci.
In Valori criterio, seleziona Personalizzato.
In Tipo di criterio, seleziona Consenti.
In Valori personalizzati, inserisci
ALLOW_INTERNAL_ONLY
.Fai clic su Imposta criterio.
gcloud
Utilizza il comando gcloud resource-manager org-policies allow
:
gcloud resource-manager org-policies allow \ run.allowedIngress ALLOW_INTERNAL_ONLY \ --organization ORGANIZATION_ID
dove ORGANIZATION_ID
è l'ID organizzazione.
Una volta applicato questo criterio dell'organizzazione, tutte le funzioni devono utilizzare il valore ALLOW_INTERNAL_ONLY
per le relative impostazioni di traffico in entrata. Ciò significa che le funzioni HTTP
possono accettare solo traffico proveniente da una rete VPC all'interno
del perimetro di 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
controlla le impostazioni del traffico in uscita che gli sviluppatori sono autorizzati a utilizzare per Cloud Functions. Imposta questo criterio dell'organizzazione in modo da consentire solo il valore ALL_TRAFFIC
:
Console
Vai alla pagina dei criteri Impostazioni di traffico in uscita del Connettore VPC consentite nella console Google Cloud:
Fai clic su Gestisci criterio.
Nella pagina Modifica criterio, seleziona Personalizza.
In Applicazione dei criteri, seleziona Sostituisci.
In Valori criterio, seleziona Personalizzato.
In Tipo di criterio, seleziona Consenti.
In Valori personalizzati, inserisci
ALL_TRAFFIC
.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 il valore ALL_TRAFFIC
per le impostazioni di traffico in uscita. Ciò significa che le funzioni devono
instradare tutto il traffico in uscita attraverso la rete VPC. I deployment di funzioni che specificano un valore diverso avranno esito negativo.
In combinazione con il criterio dell'organizzazione cloudfunctions.requireVPCConnector
, tutto il traffico in uscita forza l'attraversamento della rete VPC dove è soggetto 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 i Controlli di servizio VPC.
Configura reti VPC
Per accedere alle API e ai servizi Google riducendo i rischi di esfiltrazione di dati,
le richieste devono essere inviate all'intervallo di IP virtuali (VIP) limitato,
199.36.153.4/30
(restricted.googleapis.com
).
Per ogni rete VPC di un progetto, segui questi passaggi per bloccare il traffico in uscita, tranne il traffico verso l'intervallo VIP limitato:
Configura le regole firewall per impedire ai dati di uscire dalla rete VPC:
Creare una regola di negazione del traffico in uscita che blocchi tutto il traffico in uscita.
Crea una regola di traffico in uscita di autorizzazione che consenta il traffico verso
199.36.153.4/30
sulla porta TCP 443. Assicurati che abbia una priorità prima della regola di negazione in uscita appena creata, che consente il traffico in uscita solo verso l'intervallo VIP limitato.
Configura il DNS per risolvere
*.googleapis.com
inrestricted.googleapis.com
.Configura il DNS con un record A che mappa
*.cloudfunctions.net
all'intervallo IP199.36.153.4/30
. Puoi farlo con Cloud DNS: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
Abilita l'accesso privato Google per la subnet del connettore VPC.
A questo punto, le richieste provenienti dall'interno della rete VPC:
- non possono lasciare la rete VPC, impedendo il traffico in uscita al di fuori del perimetro di servizio.
- può raggiungere solo le API e i servizi Google che verificano i Controlli di servizio VPC, impedendo l'esfiltrazione tramite le API di Google.
Concedi all'account di servizio Cloud Build l'accesso al perimetro dei Controlli di servizio VPC
Cloud Functions usa Cloud Build per creare il codice sorgente in un container eseguibile. Per utilizzare Cloud Functions con i Controlli di servizio VPC, devi configurare il tuo account di servizio Cloud Build (predefinito o personalizzato) per avere 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:
Utilizza la pagina IAM nella console Google Cloud per trovare l'account di servizio Cloud Build.
Assicurati che nel menu a discesa del progetto sia visualizzato il progetto corretto.
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 quel nome.
Concedi all'account di servizio l'accesso al perimetro di servizio
Una volta individuato 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. Poi, segui Aggiunta di 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 Cloud Functions, devi assicurarti che tutte le funzioni di cui è stato eseguito il deployment all'interno del perimetro di servizio siano conformi ai criteri dell'organizzazione specificati. Ciò significa che:
- Tutte le funzioni devono utilizzare un connettore di accesso VPC serverless. Per ulteriori informazioni, consulta Connessione a una rete VPC.
- Tutte le funzioni devono consentire solo il traffico proveniente da sorgenti interne. Per maggiori informazioni, consulta la pagina relativa alle impostazioni di Ingress.
- Tutte le funzioni devono instradare tutto il traffico in uscita attraverso la rete VPC. Vedi Impostazioni del traffico in uscita per ulteriori informazioni.
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, le nuove funzioni create nei progetti all'interno del perimetro di servizio vengono controllate automaticamente per verificare la conformità. Tuttavia, per evitare l'interruzione dei carichi di lavoro esistenti, le funzioni esistenti continuano a funzionare e potrebbero non essere conformi ai criteri dell'organizzazione.
Ti consigliamo di controllare le funzioni esistenti e di aggiornarle o eseguirne di nuovo il deployment, se necessario. Per facilitare questo processo, potresti creare uno script che utilizzi l'API Cloud Functions per elencare le funzioni ed evidenziare quelle che non specificano le impostazioni di rete corrette.
Utilizzo di Controlli di servizio VPC con funzioni all'esterno di un perimetro
Le sezioni precedenti si applicano allo scenario in cui esegui il deployment di Cloud Functions all'interno di un perimetro di servizio Controlli di servizio VPC.
Se devi eseguire il deployment di una funzione all'esterno di un perimetro di servizio, ma la funzione richiede l'accesso alle risorse all'interno di un perimetro, utilizza la configurazione seguente:
- Concedi all'account di servizio Cloud Build l'accesso al perimetro dei Controlli di servizio VPC.
- Concedi all'account di servizio di runtime della funzione l'accesso al perimetro. Per farlo, puoi creare un livello di accesso e aggiungerlo al perimetro di servizio oppure creando un criterio in entrata nel perimetro.
- Connetti la funzione a una rete VPC.
- Instrada tutto il traffico in uscita dalla funzione tramite la rete VPC. Vedi Impostazioni del traffico in uscita per ulteriori informazioni.
Dopo aver completato la configurazione, la funzione potrà raggiungere le risorse protette dal perimetro.