Utilizzo di Controlli di servizio VPC

Controlli di servizio VPC è una funzionalità di Google Cloud che consente di configurare un perimetro sicuro per proteggerti dall'esfiltrazione di dati. Sia l'URL run.app predefinito sia 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 registry in cui memorizzi il contenitore 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 registry a cui viene eseguito il push del contenitore.
  • La funzionalità di deployment continuo non è disponibile per i progetti all'interno di un perimetro di Controlli di servizio VPC.

  • Quando vengono invocati i servizi Cloud Run, l'applicazione delle norme dei Controlli di servizio VPC non utilizza le informazioni di autenticazione IAM del client. Queste richieste presentano le seguenti limitazioni:

    • Le regole dei criteri di ingresso di Controlli di servizio VPC che utilizzano i principali IAM non sono supportate.
    • I livelli di accesso per i perimetri di Controlli di servizio VPC che utilizzano i principali IAM non sono supportati.

Configurare 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 i criteri dell'organizzazione appropriati, puoi assicurarti che i controlli di Controlli di servizio VPC vengano applicati quando utilizzi 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

I passaggi riportati di seguito mostrano come configurare un perimetro dei Controlli di servizio VPC.

  1. Assicurati di disporre dei ruoli necessari per amministrare i Controlli di servizio VPC.

  2. Nella console Google Cloud, vai alla pagina Controlli di servizio VPC.

    Vai alla pagina Controlli di servizio VPC

  3. Se richiesto, seleziona la tua Organizzazione.

  4. Fai clic su Gestisci criteri di accesso. Seleziona una policy di accesso o creane una. Il criterio di accesso deve includere tutti i progetti che vuoi aggiungere al perimetro.

  5. Fai clic su Nuovo perimetro. Digita un nome per il perimetro.

  6. Seleziona i progetti che vuoi proteggere all'interno del perimetro.

    1. Fai clic su Progetti.

    2. Nella finestra Aggiungi progetti, seleziona i progetti che vuoi aggiungere.

      Se utilizzi VPC condiviso, assicurati di aggiungere il progetto host e i progetti di servizio.

    3. Fai clic sul pulsante Aggiungi progetti.

  7. Seleziona Cloud Run come servizio da proteggere all'interno del perimetro.

    1. Fai clic su Servizi con limitazioni.

    2. Fai clic su Aggiungi servizi.

    3. Cerca "Cloud Run". Quindi seleziona API Cloud Run Admin.

    4. Fai clic su Aggiungi API Cloud Run Admin.

  8. Attiva l'accesso per gli sviluppatori.

    L'attivazione dei Controlli di servizio VPC per Cloud Run impedisce tutto l'accesso dall'esterno del perimetro, inclusa la visualizzazione e l'implementazione 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 il criterio di ingresso del perimetro:

    1. Fai clic su Criterio in entrata.

    2. Specifica Origine, Identità, Progetto e Servizi.

    3. Fai clic su Aggiungi regola.

    Se la tua organizzazione utilizza Gestore contesto accesso, puoi anche abilitare l'accesso per gli sviluppatori impostando i livelli di accesso.

  9. 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 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 ingresso e uscita consentite per Cloud Run nel perimetro di servizio.

Limitare le impostazioni di traffico in entrata consentite

I criteri dell'organizzazione run.allowedIngress controllano 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 richieste interne o internal-and-cloud-load-balancing se vuoi consentire le richieste tramite un bilanciatore del carico delle applicazioni esterno, con i controlli di accesso gestiti da Cloud Load Balancing.

Per ulteriori informazioni su queste impostazioni, consulta Limitare l'accesso in entrata per Cloud Run

Console

  1. Vai alla pagina del criterio Impostazioni di traffico in entrata consentite (Cloud Run) nella console Google Cloud:

    Vai al criterio dell'organizzazione

  2. Fai clic su Modifica.

  3. Nella pagina Modifica, seleziona Personalizza.

  4. In Applicazione criterio, seleziona Sostituisci.

  5. In Valori criterio, seleziona Personalizzato.

  6. In Tipo di criterio, seleziona Consenti.

  7. In Valori personalizzati, inserisci internal. Se vuoi consentire anche il traffico di Cloud Load Balancing, fai clic su Nuovo valore criterio e inserisci internal-and-cloud-load-balancing.

  8. 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 il valore di ingresso 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

  1. Vai alla pagina del criterio Impostazioni di traffico VPC in uscita consentite (Cloud Run) nella console Google Cloud:

    Vai al criterio dell'organizzazione

  2. Fai clic su Modifica.

  3. Nella pagina Modifica, seleziona Personalizza.

  4. In Applicazione criterio, seleziona Sostituisci.

  5. In Valori criterio, seleziona Personalizzato.

  6. In Tipo di criterio, seleziona Consenti.

  7. In Valori personalizzati, inserisci all-traffic.

  8. 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 implementato il criterio 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 tramite una rete VPC, sottoponendolo alle regole del firewall e ad altre impostazioni della rete VPC. I nuovi deployment delle revisioni che specificano un valore diverso vengono bloccati dai criteri dell'organizzazione.

Migrazioni dei criteri dell'organizzazione e del traffico

Per i servizi esistenti prima dell'impostazione del criterio dell'organizzazione, puoi continuare a eseguire la migrazione del traffico alle 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. Una volta che tutte le revisioni che generano traffico sono conformi alle norme, qualsiasi tentativo di spostare il traffico verso revisioni non conformi verrà bloccato dalle norme dell'organizzazione.

Configurare 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 domini googleapis.com regolari vengano inoltrate automaticamente all'intervallo IP virtuale (VIP) limitato, 199.36.153.4/30 (restricted.googleapis.com), in cui viene eseguito il servizio Cloud Run. Non è necessario apportare modifiche al codice.

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:

  1. Abilita l'accesso privato Google nelle subnet che ospitano le risorse della rete VPC.

  2. 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.

  3. Crea un criterio di risposta Cloud DNS.

    gcloud dns response-policies create RESPONSE_POLICY \
    --networks=NETWORK \
    --description=DESCRIPTION
    

    Sostituisci quanto segue:

    • RESPONSE_POLICY: un nome per le norme di risposta.
    • NETWORK: il nome della rete da associare a questo criterio. Per specificare più reti, separa i nomi di ciascuna rete con virgole, ad esempio: network1,network2.
    • DESCRIPTION: una descrizione delle norme di risposta, ad esempio Cloud Run VPC Service Controls response policy
  4. Aggiungi una regola al criterio di risposta per risolvere *.googleapis.com in restricted.googleapis.com. L'intervallo di indirizzi IP per restricted.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 delle norme di risposta.
    • RESPONSE_POLICY: il nome del criterio di risposta creato nel passaggio precedente, tra virgolette.
  5. Aggiungi una regola al criterio di risposta per risolvere *.run.app in restricted.googleapis.com. L'intervallo di indirizzi IP per restricted.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 delle norme di risposta.
    • RESPONSE_POLICY: il nome del criterio di risposta specificato nel passaggio precedente, tra virgolette.

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.

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. Per farlo, devi:

  • I servizi e i job Cloud Run devono utilizzare il traffico VPC diretto in uscita o un connettore di accesso VPC serverless. Per ulteriori informazioni, consulta Connessione a una rete VPC.
  • I servizi e i job Cloud Run devono instradare tutto il traffico in uscita tramite 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 importazione. L'impostazione di Ingress su "Tutti" disattiva l'applicazione dei Controlli di servizio VPC.

Controlla la conformità dei servizi esistenti ai Controlli di servizio VPC

Dopo aver configurato i Controlli di servizio VPC, la conformità dei nuovi servizi creati nei progetti all'interno del perimetro di servizio viene verificata automaticamente. Tuttavia, per evitare interruzioni dei workload esistenti, i servizi esistenti continuano a funzionare e potrebbero non essere conformi ai criteri dell'organizzazione.

Google consiglia di eseguire periodicamente controlli sui servizi per assicurarsi che le impostazioni di entrata e di uscita siano conformi ai requisiti e di aggiornare o eseguire nuovamente il deployment dei servizi, se 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 di rete appropriate.