Configurare Controlli di servizio VPC (1ª generazione.)
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 Controlli di servizio 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 i Controlli di servizio VPC con le funzioni Cloud Run, puoi configurare un perimetro di servizio a livello di organizzazione. Configurando i criteri dell'organizzazione appropriati, puoi assicurarti che i controlli di Controlli di servizio VPC vengano applicati quando utilizzi le funzioni Cloud Run e che gli sviluppatori possano eseguire il deployment solo di servizi conformi a Controlli di servizio VPC. Scopri di più sull'eredità e sulle violazioni quando imposti un criterio dell'organizzazione.
Configura 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 ai Controlli di servizio VPC per:
Crea un perimetro di servizio.
Aggiungi uno o più progetti al perimetro.
Limita l'API Cloud Functions.
Dopo aver configurato il perimetro del servizio, tutte le chiamate all'API con limitazioni vengono controllate per verificare che provengano dallo stesso perimetro.
(Facoltativo) Attiva l'accesso al perimetro 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. Pertanto, per gestire le funzioni con l'API Cloud Functions, l'interfaccia utente di Cloud Run Functions nella console Google Cloud o 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.
Configurare 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 le funzioni Cloud Run nel perimetro di servizio.
Limitare le impostazioni di traffico in entrata consentite
Il criterio dell'organizzazione cloudfunctions.allowedIngressSettings
controlla le
impostazioni di ingresso
che gli sviluppatori possono utilizzare per le funzioni Cloud Run. Imposta questo criterio
dell'organizzazione per imporre agli sviluppatori di utilizzare il valore
ALLOW_INTERNAL_ONLY
:
Console
Vai alla pagina del criterio Impostazioni di importazione consentite nella console Google Cloud:
Fai clic su Gestisci criteri.
Nella pagina Modifica criterio, seleziona Personalizza.
In Applicazione criterio, 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 \ cloudfunctions.allowedIngressSettings ALLOW_INTERNAL_ONLY \ --organization ORGANIZATION_ID
dove ORGANIZATION_ID
è l'ID organizzazione.
Dopo aver implementato questo criterio dell'organizzazione, tutte le funzioni devono utilizzare il valore
ALLOW_INTERNAL_ONLY
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 di servizio. I deployment delle funzioni che specificano un valore diverso non andranno a buon fine.
Richiedi connettore VPC
Il criterio dell'organizzazione cloudfunctions.requireVPCConnector
controlla se è necessario un
connettore di accesso VPC serverless
per le funzioni. Imposta questo criterio dell'organizzazione per applicare questo vincolo:
Console
Vai alla pagina del criterio Richiedi connettore VPC nella console Google Cloud:
Fai clic su Gestisci criterio.
Nella pagina Modifica criterio, seleziona Personalizza.
In Applicazione forzata, seleziona On.
Fai clic su Imposta criterio.
gcloud
Utilizza il comando gcloud resource-manager org-policies enable-enforce
:
gcloud resource-manager org-policies enable-enforce \ cloudfunctions.requireVPCConnector \ --organization ORGANIZATION_ID
dove ORGANIZATION_ID
è l'ID organizzazione.
Dopo aver implementato questo criterio dell'organizzazione, tutte le funzioni devono utilizzare un connettore di accesso VPC serverless. I deployment delle funzioni che non specificano un connettore non andranno a buon fine.
Limitare le impostazioni di traffico in uscita del connettore VPC consentite
Il criterio dell'organizzazione cloudfunctions.allowedVpcConnectorEgressSettings
controlla le impostazioni di uscita che gli sviluppatori possono utilizzare per le funzioni Cloud Run. Imposta questo criterio
dell'organizzazione in modo da consentire solo il valore ALL_TRAFFIC
:
Console
Vai alla pagina del criterio 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 criterio, 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 \ cloudfunctions.allowedVpcConnectorEgressSettings ALL_TRAFFIC \ --organization ORGANIZATION_ID
dove ORGANIZATION_ID
è l'ID organizzazione.
Dopo l'applicazione di questo criterio dell'organizzazione, tutte le funzioni devono utilizzare il valore
ALL_TRAFFIC
per le impostazioni di uscita. Ciò significa che le funzioni devono instradare tutto il traffico in uscita tramite la rete VPC. I deployment delle funzioni che specificano un valore diverso non andranno a buon fine.
Se combinato con il criterio dell'organizzazione cloudfunctions.requireVPCConnector
, questo
obbliga tutto il traffico in uscita a attraversare la rete VPC, dove è sometido
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,
le richieste devono essere inviate all'intervallo IP virtuale (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, ad eccezione di quello verso l'intervallo VIP limitato:
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.
Configura il DNS in modo che risolva
*.googleapis.com
inrestricted.googleapis.com
.Configura il DNS con una mappatura del record A
*.cloudfunctions.net
all'intervallo IP199.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
Abilita l'accesso privato Google per la subnet del tuo connettore VPC.
A questo punto, le richieste provenienti dalla rete VPC:
- non sono in grado di uscire dalla rete VPC, impedendo il traffico in uscita al di fuori del perimetro di servizio.
- può raggiungere solo le API e i servizi Google che controllano 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
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 in modo che abbia accesso al perimetro del servizio:
Trova il nome dell'account di servizio
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.
Concedi all'account di servizio l'accesso al perimetro di servizio
Una volta ottenuto il nome dell'account di servizio, segui la guida Limitare l'accesso in base all'utente o all'account 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. Per ulteriori informazioni, consulta Connessione a una rete VPC.
- Tutte le funzioni devono consentire solo il traffico da origini interne. Per ulteriori informazioni, consulta Impostazioni di importazione.
- Tutte le funzioni devono instradare tutto il traffico in uscita tramite la rete VPC. Per ulteriori informazioni, consulta Impostazioni di uscita.
Gli implementazioni delle funzioni che non soddisfano questi criteri non andranno a buon fine.
Controlla le funzioni esistenti per garantire la conformità ai 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 essere conformi ai criteri dell'organizzazione.
Ti consigliamo di eseguire il controllo delle funzioni esistenti e di aggiornarle o di reimplementarle, se necessario. Per semplificare questa procedura, puoi creare uno script che utilizzi 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 Cloud Run all'interno di un perimetro di servizio Controlli di servizio VPC.
Se devi eseguire il deployment di una funzione al di fuori di un perimetro di servizio, ma la funzione richiede l'accesso alle risorse all'interno di un perimetro, utilizza la seguente configurazione:
- 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. Puoi farlo creando un livello di accesso e aggiungendolo al perimetro di servizio oppure creando un criterio di accesso nel perimetro.
- Collega la funzione a una rete VPC.
- Instrada tutto il traffico in uscita dalla funzione tramite la rete VPC. Per ulteriori informazioni, consulta Impostazioni di uscita.
Dopo aver completato questa configurazione, la funzione potrà raggiungere le risorse protette dal perimetro.