I Controlli di servizio VPC sono una funzionalità Google Cloud che ti consente di configurare un perimetro sicuro per proteggerti dall'esfiltrazione di dati.
Sia l'URL run.app predefinito che i domini personalizzati sono soggetti ai Controlli di servizio VPC.
Questa guida mostra come utilizzare i Controlli di servizio VPC con Cloud Run per aggiungere ulteriore sicurezza ai tuoi servizi.
Limitazioni e avvisi
Per Artifact Registry o Container Registry:
- Il registro in cui memorizzi il container deve trovarsi nello stesso perimetro di servizio dei Controlli di servizio VPC del progetto in cui esegui il deployment.
- Il codice in fase di compilazione deve trovarsi nello stesso perimetro del registro in cui viene eseguito il push del container.
La funzionalità di deployment continuo non è disponibile per i progetti all'interno di un perimetro di Controlli di servizio VPC.
Quando vengono richiamati i servizi Cloud Run, l'applicazione dei criteri dei Controlli di servizio VPC non utilizza le informazioni di autenticazione IAM del client. Queste richieste presentano le seguenti limitazioni:
- Le regole dei criteri in entrata dei Controlli di servizio VPC che utilizzano i principal IAM non sono supportate. È supportato solo il tipo di identità
ANY_IDENTITY. - I livelli di accesso per i perimetri di Controlli di servizio VPC che utilizzano i principal IAM non sono supportati.
- Le regole dei criteri in entrata dei Controlli di servizio VPC che utilizzano i principal IAM non sono supportate. È supportato solo il tipo di identità
Configura l'organizzazione per supportare i Controlli di servizio VPC
Per utilizzare i Controlli di servizio VPC con Cloud Run, 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 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.
Se stai eseguendo il deployment di Cloud Run Functions con gcloud functions, tu o il tuo amministratore dovete concedere l'accesso al account di servizio Cloud Build nel perimetro dei Controlli di servizio VPC. Per saperne di più, consulta la Panoramica della procedura di compilazione.
Configura un perimetro dei Controlli di servizio VPC
I seguenti passaggi mostrano come configurare un perimetro dei Controlli di servizio VPC.
Assicurati di disporre dei ruoli necessari per amministrare i Controlli di servizio VPC.
Nella console Google Cloud , vai alla pagina Controlli di servizio VPC.
Se richiesto, seleziona la tua organizzazione.
Fai clic su Gestisci policy di accesso. Seleziona una policy di accesso o creane una. La policy di accesso deve includere tutti i progetti che vuoi aggiungere al perimetro.
Fai clic su Nuovo perimetro. Digita un nome per il perimetro.
Seleziona i progetti che vuoi proteggere all'interno del perimetro.
Fai clic su Progetti.
Nella finestra Aggiungi progetti, seleziona i progetti che vuoi aggiungere.
Se utilizzi il VPC condiviso, assicurati di aggiungere il progetto host e i progetti di servizio.
Fai clic sul pulsante Aggiungi progetti.
Seleziona Cloud Run come servizio da proteggere all'interno del perimetro.
Fai clic su Servizi limitati.
Fai clic su Aggiungi servizi.
Cerca "Cloud Run". Quindi seleziona API Cloud Run Admin. Seleziona API Cloud Functions V2 se hai utilizzato
gcloud functions.Fai clic su Aggiungi API Cloud Run Admin (o API Cloud Functions v2 se hai utilizzato
gcloud functions).
Attiva l'accesso per gli sviluppatori.
L'attivazione dei Controlli di servizio VPC per Cloud Run impedisce qualsiasi accesso dall'esterno del perimetro, inclusa la visualizzazione e il deployment dei servizi da macchine non incluse nel perimetro, come i laptop aziendali. Affinché gli sviluppatori e gli operatori delle applicazioni possano visualizzare ed eseguire il deployment delle risorse all'interno del perimetro, devi configurare la policy in entrata del perimetro:
Fai clic su Criterio in entrata.
Specifica Origine, Identità, Progetto e Servizi.
Fai clic su Aggiungi regola.
Se la tua organizzazione utilizza Gestore contesto accesso, puoi anche attivare l'accesso per gli sviluppatori impostando i livelli di accesso.
Fai clic su Crea perimetro.
Una volta completati questi passaggi, tutte le chiamate all'API Cloud Run Admin vengono controllate per assicurarsi che provengano dallo stesso 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 in entrata e in uscita consentite per Cloud Run nel perimetro di servizio.
Limita le impostazioni di traffico in entrata consentite
La policy dell'organizzazione run.allowedIngress controlla le impostazioni di traffico in entrata
che gli sviluppatori possono utilizzare per Cloud Run. Imposta questa policy dell'organizzazione per imporre agli sviluppatori l'uso del valore internal se vuoi consentire solo le richieste interne o internal-and-cloud-load-balancing se vuoi consentire le richieste tramite un bilanciatore del carico delle applicazioni esterno, con i controlli dell'accesso gestiti da Cloud Load Balancing.
Per ulteriori informazioni su queste impostazioni, consulta Limitazione del traffico in entrata per Cloud Run.
Console
Vai alla pagina della policy Impostazioni di traffico in entrata consentite (Cloud Run) nella consoleGoogle Cloud :
Fai clic su Modifica.
Nella pagina Modifica, seleziona Personalizza.
In Applicazione policy, seleziona Sostituisci.
In Valori policy, seleziona Personalizzato.
In Tipo di policy, seleziona Consenti.
In Valori personalizzati, inserisci
internal. Se vuoi consentire anche il traffico di Cloud Load Balancing, fai clic su Nuovo valore della norma e inserisciinternal-and-cloud-load-balancing.Fai clic su Salva.
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 della tua organizzazione.
Se vuoi consentire anche il traffico di Cloud Load Balancing, sostituisci
run.allowedIngress internal con run.allowedIngress internal-and-cloud-load-balancing.
Una volta implementata questa policy dell'organizzazione, tutti i servizi devono utilizzare i valori consentiti per le impostazioni di traffico in entrata. Ciò significa che i servizi Cloud Run possono accettare solo il traffico proveniente da una rete VPC all'interno del perimetro di servizio. I tentativi di impostare l'accesso in entrata su un valore diverso verranno bloccati dai criteri dell'organizzazione.
Limita le impostazioni di traffico VPC in uscita consentite
La policy dell'organizzazione run.allowedVPCEgress controlla le impostazioni di traffico in uscita
che gli sviluppatori possono utilizzare per Cloud Run. Imposta questa policy dell'organizzazione in modo da consentire solo il valore all-traffic:
Console
Vai alla pagina della policy Impostazioni di traffico VPC in uscita consentite (Cloud Run) nella consoleGoogle Cloud :
Fai clic su Modifica.
Nella pagina Modifica, seleziona Personalizza.
In Applicazione policy, seleziona Sostituisci.
In Valori policy, seleziona Personalizzato.
In Tipo di policy, seleziona Consenti.
In Valori personalizzati, inserisci
all-traffic.Fai clic su Salva.
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 della tua organizzazione.
Comportamento dopo l'impostazione del criterio dell'organizzazione
Una volta implementata la policy dell'organizzazione, tutte le nuove revisioni devono utilizzare il traffico VPC in uscita diretto o un connettore di accesso VPC serverless e devono utilizzare il valore all-traffic per le impostazioni di traffico in uscita. Questa combinazione instrada tutto il traffico in uscita da queste revisioni attraverso una rete VPC, sottoponendo questo traffico alle regole firewall e ad altre impostazioni della rete VPC. I deployment di nuove revisioni che specificano un valore diverso
sono bloccati dai criteri dell'organizzazione.
Policy dell'organizzazione e migrazioni del traffico
Per i servizi esistenti prima dell'impostazione della policy dell'organizzazione, puoi continuare a eseguire la migrazione del traffico verso revisioni non conformi finché tutte le revisioni che gestiscono il traffico non diventano conformi.
Questo comportamento ti consente di testare e implementare gradualmente nuove revisioni conformi alla policy. Dopo che tutte le revisioni che gestiscono il traffico sono conformi alle norme, qualsiasi tentativo di spostare il traffico verso revisioni non conformi verrà bloccato dalle norme dell'organizzazione.
Configura il progetto per supportare i Controlli di servizio VPC
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
Questa sezione mostra come configurare la rete VPC in modo che le richieste inviate ai normali domini googleapis.com vengano automaticamente indirizzate all'intervallo di IP virtuali (VIP) con limitazioni, 199.36.153.4/30 (restricted.googleapis.com), in cui viene pubblicato il servizio Cloud Run. Non è necessario apportare modifiche al codice.
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:
Abilita l'accesso privato Google nelle subnet che ospitano le risorse di rete VPC.
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/30sulla porta TCP 443. Assicurati che abbia una priorità precedente alla regola di negazione del traffico in uscita che hai appena creato. In questo modo, il traffico in uscita è consentito solo all'intervallo VIP limitato.
Crea una policy di risposta di Cloud DNS.
gcloud dns response-policies create RESPONSE_POLICY \ --networks=NETWORK \ --description=DESCRIPTION
Sostituisci quanto segue:
RESPONSE_POLICY: un nome per la policy di risposta.NETWORK: il nome della rete da associare a questa policy. Per specificare più reti, separa i nomi di ciascuna rete con le virgole, ad esempio:network1,network2.DESCRIPTION: una descrizione della policy di risposta, ad esempioCloud Run VPC Service Controls response policy
Aggiungi una regola al criterio di risposta per risolvere
*.googleapis.cominrestricted.googleapis.com. L'intervallo di indirizzi IP perrestricted.googleapis.comè199.36.153.4/30.gcloud dns response-policies rules create RESPONSE_POLICY_RULE \ --response-policy=RESPONSE_POLICY \ --dns-name="*.googleapis.com." \ --local-data=name="restricted.googleapis.com.",type="A",ttl=300,rrdatas="199.36.153.4|199.36.153.5|199.36.153.6|199.36.153.7"
Sostituisci quanto segue:
RESPONSE_POLICY_RULE: un nome per la regola della policy di risposta.RESPONSE_POLICY: il nome della policy di risposta creata nel passaggio precedente, tra virgolette.
Aggiungi una regola al criterio di risposta per risolvere
*.run.app(o*.cloudfunctions.netse hai creato la funzione utilizzandogcloud functions deploy) inrestricted.googleapis.com. L'intervallo di indirizzi IP perrestricted.googleapis.comè199.36.153.4/30.gcloud dns response-policies rules create RESPONSE_POLICY_RULE \ --response-policy=RESPONSE_POLICY \ --dns-name="*.run.app." \ --local-data=name="restricted.googleapis.com.",type="A",ttl=300,rrdatas="199.36.153.4|199.36.153.5|199.36.153.6|199.36.153.7"
Sostituisci quanto segue:
RESPONSE_POLICY_RULE: un nome per la regola della policy di risposta.RESPONSE_POLICY: il nome della policy di risposta specificata nel passaggio precedente, tra virgolette.
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.
Esegui il deployment di servizi e job Cloud Run conformi ai Controlli di servizio VPC
Dopo aver configurato i Controlli di servizio VPC per Cloud Run, assicurati che tutti i servizi e i job Cloud Run di cui è stato eseguito il deployment all'interno del perimetro di servizio abilitino i Controlli di servizio VPC. A tal fine, devi:
- I servizi e i job Cloud Run devono utilizzare il traffico in uscita VPC diretto o un connettore di accesso VPC serverless. Per saperne di più, consulta Connessione a una rete VPC.
- I servizi e i job Cloud Run devono instradare tutto il traffico in uscita attraverso la rete VPC. Per saperne di più, consulta Impostazioni di traffico in uscita.
- I servizi Cloud Run devono consentire solo il traffico proveniente da origini interne. Per saperne di più, consulta Impostazioni di traffico in entrata. L'impostazione dell'accesso in entrata su "all" disattiva l'applicazione dei Controlli di servizio VPC.
Controlla i servizi esistenti per verificare la conformità ai Controlli di servizio VPC
Dopo aver configurato i Controlli di servizio VPC, i nuovi servizi creati nei progetti all'interno del perimetro di servizio vengono controllati automaticamente per verificare la conformità. Tuttavia, per evitare interruzioni dei workload in corso, i servizi esistenti rimangono invariati e potrebbero non essere conformi alle policy dell'organizzazione.
Google consiglia di controllare periodicamente i servizi per assicurarsi che le impostazioni in entrata e in uscita siano conformi ai requisiti e di aggiornare o rieseguire il deployment dei servizi come necessario. Ad esempio, puoi creare uno script che utilizza l'API Cloud Run Admin per elencare i tuoi servizi ed evidenziare quelli che non specificano le impostazioni della rete corrette.