Configura i Controlli di servizio VPC (1ª gen.)

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

Per le limitazioni di questa integrazione, consulta la documentazione dei Controlli di servizio VPC.

Configurazione a livello di organizzazione

Per utilizzare i Controlli di servizio VPC con Cloud Run Functions, puoi configurare un perimetro di servizio a livello di organizzazione. Configurando le policy dell'organizzazione appropriate, puoi assicurarti che i controlli dei Controlli di servizio VPC vengano applicati quando utilizzi Cloud Run 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 nell'impostazione di una policy dell'organizzazione.

Configura un perimetro dei Controlli di servizio VPC

Per configurare un perimetro di servizio, devi disporre dei ruoli Organization Viewer (roles/resourcemanager.organizationViewer) e Access Context Manager Editor (roles/accesscontextmanager.policyEditor).

Segui la Guida rapida dei Controlli di servizio VPC per:

  1. Creare un perimetro di servizio.

  2. Aggiungi uno o più progetti al perimetro.

  3. Limita l'API Cloud Functions.

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

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

Poiché i controlli dei Controlli di servizio VPC vengono applicati all'API Cloud Functions, le chiamate all'API Cloud Functions non riescono a meno che non provengano dall'interno del perimetro di servizio. Pertanto, per gestire le funzioni con l'API Cloud Functions, l'interfaccia utente Cloud Run 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 Compute Engine o una macchina on-premise connessa alla tua rete VPC tramite una VPN.

  • Concedi l'accesso al perimetro agli sviluppatori di funzioni. Ad esempio, puoi creare livelli di accesso che consentono l'accesso al perimetro in base all'indirizzo IP o all'identità dell'utente. Per saperne di più, consulta Consentire l'accesso a risorse protette dall'esterno di un perimetro.

Configura le policy dell'organizzazione

Per gestire le policy dell'organizzazione, devi disporre del ruolo Organization Policy Administrator (roles/orgpolicy.policyAdmin).

Per la conformità ai Controlli di servizio VPC e per proteggerti dall'esfiltrazione di dati, configura le seguenti policy dell'organizzazione che controllano le impostazioni di rete consentite per le funzioni Cloud Run nel perimetro di servizio.

Limita le impostazioni di traffico in entrata consentite

La policy dell'organizzazione cloudfunctions.allowedIngressSettings controlla le impostazioni di traffico in entrata che gli sviluppatori possono utilizzare per Cloud Run Functions. Imposta questa policy dell'organizzazione per imporre agli sviluppatori l'uso del valore ALLOW_INTERNAL_ONLY:

Console

  1. Vai alla pagina della policy Impostazioni di traffico in entrata consentite nella consoleGoogle Cloud :

    Vai alla policy dell'organizzazione

  2. Fai clic su Gestisci policy.

  3. Nella pagina Modifica policy, seleziona Personalizza.

  4. In Applicazione policy, seleziona Sostituisci.

  5. In Valori policy, seleziona Personalizzato.

  6. In Tipo di policy, seleziona Consenti.

  7. In Valori personalizzati, inserisci ALLOW_INTERNAL_ONLY.

  8. Fai clic su Imposta policy.

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 della tua organizzazione.

Una volta implementata questa policy dell'organizzazione, tutte le funzioni devono utilizzare il valore ALLOW_INTERNAL_ONLY per le impostazioni di traffico in entrata. Ciò significa che le funzioni HTTP possono accettare solo il traffico proveniente da una rete VPC all'interno del perimetro di servizio. I deployment di funzioni che specificano un valore diverso non riusciranno.

Richiede Connettore VPC

La policy dell'organizzazione cloudfunctions.requireVPCConnector controlla se è richiesto un connettore di accesso VPC serverless per le funzioni. Imposta questa policy dell'organizzazione per applicare questo vincolo:

Console

  1. Vai alla pagina della policy Richiede Connettore VPC nella consoleGoogle Cloud :

    Vai alla policy dell'organizzazione

  2. Fai clic su Gestisci policy.

  3. Nella pagina Modifica policy, seleziona Personalizza.

  4. In Applicazione forzata, seleziona On.

  5. Fai clic su Imposta policy.

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 della tua organizzazione.

Una volta implementata questa policy dell'organizzazione, tutte le funzioni devono utilizzare un connettore di accesso VPC serverless. I deployment di funzioni che non specificano un connettore non riusciranno.

Limita le impostazioni di traffico in uscita del connettore VPC consentite

La policy dell'organizzazione cloudfunctions.allowedVpcConnectorEgressSettings controlla le impostazioni di traffico in uscita che gli sviluppatori possono utilizzare per Cloud Run Functions. Imposta questa policy dell'organizzazione in modo da consentire solo il valore ALL_TRAFFIC:

Console

  1. Vai alla pagina della policy Impostazioni di traffico in uscita del Connettore VPC consentite nella consoleGoogle Cloud :

    Vai alla policy dell'organizzazione

  2. Fai clic su Gestisci policy.

  3. Nella pagina Modifica policy, seleziona Personalizza.

  4. In Applicazione policy, seleziona Sostituisci.

  5. In Valori policy, seleziona Personalizzato.

  6. In Tipo di policy, seleziona Consenti.

  7. In Valori personalizzati, inserisci ALL_TRAFFIC.

  8. Fai clic su Imposta policy.

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 della tua organizzazione.

Una volta implementata questa policy 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 tua rete VPC. I deployment di funzioni che specificano un valore diverso non riusciranno.

In combinazione con la policy dell'organizzazione cloudfunctions.requireVPCConnector, questo impone a tutto il traffico in uscita di attraversare la 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) con limitazioni, 199.36.153.4/30 (restricted.googleapis.com).

Per ogni rete VPC in un progetto, segui questi passaggi per bloccare il traffico in uscita, ad eccezione del traffico verso l'intervallo VIP con limitazioni:

  1. Configura le regole firewall per impedire l'uscita dei dati dalla rete VPC:

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

    • Crea una regola di autorizzazione in uscita che consenta il traffico verso 199.36.153.4/30 sulla porta TCP 443. Assicurati che abbia una priorità che precede la regola di negazione del traffico in uscita che hai appena creato. In questo modo, il traffico in uscita è consentito solo all'intervallo VIP limitato.

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

  3. Configura il DNS con una mappatura del record A *.cloudfunctions.net all'intervallo IP 199.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
    
  4. Abilita l'accesso privato Google per la subnet del connettore VPC.

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

  • non possono uscire dalla rete VPC, impedendo il traffico in uscita all'esterno del perimetro di servizio.
  • possono raggiungere solo le API e i servizi Google che verificano i Controlli di servizio VPC, impedendo l'esfiltrazione tramite le API di Google.

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

Cloud Run Functions utilizza Cloud Build per creare un container eseguibile dal codice sorgente. Per utilizzare Cloud Run Functions con i Controlli di servizio VPC, devi configurare il service account Cloud Build in modo che abbia accesso al perimetro di servizio:

Trova il nome del service account

  1. Utilizza la pagina IAM nella console Google Cloud per trovare il service account Cloud Build.

    Apri IAM

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

  3. Cerca cloudbuild.gserviceaccount.com. L'indirizzo email nel formato PROJECT_NUMBER@cloudbuild.gserviceaccount.com è il nome del service account.

Concedi al service account l'accesso al perimetro di servizio

Una volta ottenuto il nome del service account, segui le istruzioni in Limita l'accesso per utente o service account per creare un livello di accesso per il service account. Poi, segui la procedura descritta in 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 Run Functions, devi assicurarti che tutte le funzioni di cui è stato eseguito il deployment all'interno del perimetro di servizio rispettino le policy dell'organizzazione specificate. Ciò significa che:

I deployment di funzioni che non soddisfano questi criteri non riusciranno.

Controlla le funzioni esistenti per assicurare la conformità ai 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 interruzioni dei workload in corso, le funzioni esistenti rimangono invariate e potrebbero non essere conformi alle policy dell'organizzazione.

Ti consigliamo di controllare le funzioni esistenti e di aggiornarle o rieseguire il deployment come necessario. Per facilitare questo processo, puoi creare uno script che utilizza l'API Cloud Functions per elencare le tue funzioni ed evidenziare quelle che non specificano le impostazioni di rete corrette.

Utilizzo dei Controlli di servizio VPC con funzioni all'esterno di un perimetro

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

Se devi eseguire il deployment di una funzione all'esterno di un perimetro di servizio, ma la funzione deve accedere a risorse all'interno di un perimetro, utilizza la seguente configurazione:

  1. Concedi l'accesso al perimetro dei Controlli di servizio VPC al service account Cloud Build.
  2. Concedi l'accesso al perimetro al service account di runtime della funzione. Puoi farlo creando un livello di accesso e aggiungendolo al perimetro di servizio oppure creando una policy in entrata sul perimetro.
  3. Collega la funzione a una rete VPC.
  4. Instrada tutto il traffico in uscita dalla funzione attraverso la rete VPC. Per saperne di più, consulta Impostazioni di traffico in uscita.

Una volta completata questa configurazione, la funzione potrà raggiungere le risorse protette dal perimetro.