Controlli di servizio VPC è una funzionalità di 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.
- I livelli di accesso per i perimetri di Controlli di servizio VPC che utilizzano i principal IAM non sono supportati.
Configura la tua organizzazione per supportare i Controlli di servizio VPC
Per utilizzare Controlli di servizio VPC con Cloud Run, puoi configurare un perimetro di servizio a livello di organizzazione. Configurando criteri dell'organizzazione appropriati, 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 quando imposti una policy dell'organizzazione.
Se esegui il deployment delle funzioni Cloud Run con gcloud functions, tu
o il tuo amministratore dovete concedere al account di servizio Cloud Build l'accesso al
perimetro dei Controlli di servizio VPC. Per saperne di più, consulta la Panoramica della procedura di build.
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 verificare che provengano dallo stesso perimetro.
Configurare i criteri dell'organizzazione
Per gestire le policy dell'organizzazione, devi disporre del ruolo
Organization Policy Administrator
(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 ingresso e uscita consentite per Cloud Run nel perimetro di servizio.
Limitare le impostazioni di traffico in entrata consentite
Il criterio dell'organizzazione run.allowedIngress controlla le
impostazioni di traffico in entrata
che gli sviluppatori possono utilizzare per Cloud Run. Imposta questo criterio dell'organizzazione per imporre agli sviluppatori di utilizzare il 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 maggiori informazioni su queste impostazioni, consulta Limitazione del traffico in entrata per Cloud Run.
Console
Vai alla pagina dei criteri 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 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 implementato questo criterio 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.
Limitare le impostazioni di traffico VPC in uscita consentite
Il criterio dell'organizzazione run.allowedVPCEgress
controlla le
impostazioni di uscita
che gli sviluppatori possono utilizzare per Cloud Run. Imposta questo criterio dell'organizzazione in modo da consentire solo il valore all-traffic:
Console
Vai alla pagina dei criteri 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 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 diretto in uscita o un connettore di accesso VPC serverless e devono utilizzare il valore all-traffic per le impostazioni di 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 nuovi deployment di revisione 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 del criterio 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 alle norme. 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 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) limitati, 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 limitato:
Abilita l'accesso privato Google nelle subnet che ospitano le risorse della rete VPC.
Configura le regole firewall per impedire ai dati di uscire dalla rete VPC:
Crea una regola di negazione del traffico in uscita che blocchi tutto il traffico in uscita.
Crea una regola per il traffico in uscita che consenta il traffico verso
199.36.153.4/30sulla porta TCP 443. Assicurati che abbia una priorità prima della regola di negazione dell'uscita che hai appena creato. In questo modo, l'uscita è consentita solo all'intervallo VIP con limitazioni.
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 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 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.
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 VPC diretto in uscita 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 ulteriori informazioni, consulta Impostazioni di uscita.
- I servizi Cloud Run devono consentire il traffico solo da origini interne. Per ulteriori informazioni, consulta Impostazioni di Ingress. L'impostazione dell'accesso in entrata su "all" disattiva l'applicazione dei Controlli di servizio VPC.
Esegui l'audit dei servizi esistenti per 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 esistenti, i servizi esistenti continuano a funzionare e potrebbero non essere conformi alle policy dell'organizzazione.
Google consiglia di controllare periodicamente i servizi per assicurarsi che le impostazioni di ingresso e uscita siano conformi ai requisiti e di aggiornare o ridistribuire i servizi in base alle necessità. 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 di rete corrette.