Utilizzo di Controlli di servizio VPC

Controlli di servizio VPC è una funzionalità di Google Cloud che consente di configurare un perimetro sicuro per impedire l'esfiltrazione dei dati. Sia l'URL predefinito run.app 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 avvertenze

  • Per Artifact Registry o Container Registry:

    • Il registry 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 creazione deve trovarsi nello stesso perimetro del registro a cui viene eseguito il push del container.
  • La funzionalità di deployment continuo non è disponibile per i progetti all'interno di un perimetro Controlli di servizio VPC.

Configurazione dell'organizzazione per supportare i Controlli di servizio VPC

Per utilizzare i Controlli di servizio VPC con Cloud Run, devi configurare un perimetro di servizio a livello di organizzazione. Questa configurazione assicura che i controlli di servizio VPC vengano applicati quando si utilizza Cloud Run e che gli sviluppatori possono eseguire il deployment solo di servizi conformi a questi controlli.

Configurazione di un perimetro dei Controlli di servizio VPC

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

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

  2. In Google Cloud Console, vai alla pagina Controlli di servizio VPC.

    Vai alla pagina Controlli di servizio VPC

  3. Se richiesto, seleziona l'organizzazione.

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

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

    1. Fai clic su Progetti.

    2. Nella finestra Aggiungi progetti, seleziona i progetti da aggiungere.

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

    3. Fai clic sul pulsante Aggiungi progetti.

  6. Seleziona Cloud Run come servizio che vuoi proteggere all'interno del perimetro.

    1. Fai clic su Servizi limitati.

    2. Fai clic su Aggiungi servizi.

    3. Cerca "Cloud Run". Quindi seleziona l'API Cloud Run.

    4. Fai clic su Aggiungi API Cloud Run.

  7. Attiva l'accesso per gli sviluppatori.

    L'attivazione dei Controlli di servizio VPC per Cloud Run impedisce tutti gli accessi dall'esterno del perimetro, inclusa la visualizzazione e il deployment di servizi da macchine non perimetrali, come i laptop dell'azienda. Per consentire a sviluppatori e operatori di applicazioni di visualizzare ed eseguire il deployment delle risorse all'interno del perimetro, devi configurare il criterio in entrata periferico:

    1. Fai clic su Criterio in entrata.

    2. Specifica il valore di 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.

  8. Fai clic su Crea perimetro.

Dopo aver completato questi passaggi, tutte le chiamate all'API Cloud Run verranno controllate per garantire che abbiano origine dallo stesso perimetro.

Configurazione dei criteri dell'organizzazione in corso...

Per gestire i criteri dell'organizzazione, devi avere il ruolo Amministratore criteri dell'organizzazione (roles/orgpolicy.policyAdmin).

Per rispettare i Controlli di servizio VPC e proteggere l'esfiltrazione di dati, configura i seguenti criteri dell'organizzazione che controllano le impostazioni di accesso in entrata e in uscita consentite per Cloud Run nel perimetro di servizio.

Limitazione delle 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 richiedere 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 HTTP(S) esterno, con i controlli di accesso gestiti da Cloud Load Balancing.

Per ulteriori informazioni su queste impostazioni, consulta il documento relativo alla restrizione del traffico in entrata per Cloud Run

Console

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

    Vai ai criteri dell'organizzazione

  2. Fai clic su Modifica.

  3. Nella pagina Modifica, seleziona Personalizza.

  4. Sotto Applicazione delle norme, seleziona Sostituisci.

  5. Nella sezione Valori del criterio, seleziona Personalizzato.

  6. Nella sezione 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 del 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 è il tuo ID organizzazione. Se vuoi consentire anche il traffico di Cloud Load Balancing, sostituisci run.allowedIngress internal con run.allowedIngress internal-and-cloud-load-balancing.

Dopo l'implementazione di questo criterio dell'organizzazione, tutti i servizi devono utilizzare i valori consentiti per le proprie impostazioni in entrata. Ciò significa che i servizi Cloud Run possono accettare solo traffico proveniente da una rete VPC all'interno del perimetro di servizio. I tentativi di impostare il traffico in entrata su un valore diverso verranno bloccati dal criterio dell'organizzazione.

Limitazione delle impostazioni di traffico in uscita del connettore VPC consentito

Il criterio dell'organizzazione run.allowedVPCEgress controlla le impostazioni del traffico in uscita che gli sviluppatori possono utilizzare per Cloud Run. Imposta questo criterio dell'organizzazione per consentire solo il valore all-traffic:

Console

  1. Vai alla pagina dei criteri In uscita VPC consentiti (Cloud Run) in Cloud Console:

    Vai ai criteri dell'organizzazione

  2. Fai clic su Modifica.

  3. Nella pagina Modifica, seleziona Personalizza.

  4. Sotto Applicazione delle norme, seleziona Sostituisci.

  5. Nella sezione Valori del criterio, seleziona Personalizzato.

  6. Nella sezione 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 è il tuo ID organizzazione.

Comportamento dopo l'impostazione del criterio dell'organizzazione

Una volta impostato il criterio dell'organizzazione, tutte le nuove revisioni devono utilizzare un connettore VPC e il valore all-traffic per le impostazioni in uscita. Questa combinazione di impostazioni instrada tutto il traffico in uscita da queste revisioni tramite una rete VPC, sottoponendo questo traffico alle regole firewall della rete VPC e ad altre impostazioni. I nuovi deployment di revisione specificando un valore diverso verranno bloccati dal criterio dell'organizzazione.

Criteri dell'organizzazione e migrazioni del traffico

Per i servizi esistenti prima che fosse impostato il criterio dell'organizzazione, puoi continuare a eseguire la migrazione del traffico a revisioni non conformi finché non tutte le revisioni che forniscono traffico sono diventate conformi.

Questo comportamento ti consente di testare e implementare gradualmente nuove revisioni che sono conformi alle norme. Una volta che tutte le revisioni che forniscono traffico sono conformi al criterio, qualsiasi tentativo di spostare il traffico su revisioni non conformi verrà bloccato dal criterio dell'organizzazione.

Configurazione del 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.

Configurazione delle reti VPC

Questa sezione mostra come configurare la rete VPC in modo che le richieste inviate all'IP virtuale normale googleapis.com vengono instradate automaticamente all'intervallo IP virtuale (VIP) limitato, 199.36.153.4/30 (restricted.googleapis.com) in cui viene pubblicato il servizio Cloud Run. Tieni presente che non sono necessarie modifiche al codice.

Per bloccare ciascuna rete VPC in un progetto, segui questi passaggi per bloccare il traffico in uscita ad eccezione del traffico nell'intervallo VIP con restrizioni:

  1. Configura le regole firewall per impedire ai dati di lasciare la rete VPC:

    • Creare una regola di negazione in uscita che blocchi 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à prima della regola di negazione in uscita che hai appena creato, in modo da consentire il traffico in uscita solo per l'intervallo VIP con restrizioni.

  2. Crea un criterio di risposta di Cloud DNS.

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

    Sostituisci quanto segue:

    • RESPONSE_POLICY: un nome per il criterio di risposta.
    • NETWORK: il nome della rete da associare al criterio. Per specificare più reti, separa i nomi di ogni rete con virgole, ad esempio: network1,network2.
    • DESCRIPTION: una descrizione del criterio di risposta, come Cloud Run VPC Service Controls response policy
  3. 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 del criterio di risposta.
    • RESPONSE_POLICY: il nome del criterio di risposta, creato nel passaggio precedente, tra virgolette.
  4. 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 del criterio di risposta.
    • RESPONSE_POLICY: il nome del criterio di risposta, specificato nel passaggio precedente, tra virgolette.

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

  • non possono uscire dalla rete VPC e impedire il traffico in uscita al di fuori del perimetro di servizio.
  • può raggiungere solo API e servizi Google che controllano i Controlli di servizio VPC, impedendo l'esfiltrazione tramite le API.

Deployment di servizi Cloud Run compatibili con i Controlli di servizio VPC

Dopo aver configurato i Controlli di servizio VPC per Cloud Run, assicurati che tutti i servizi di cui è stato eseguito il deployment all'interno del perimetro di servizio abilitino i Controlli di servizio VPC. Ciò significa che:

  • Tutti i servizi devono utilizzare un connettore di accesso VPC serverless. Consulta Connessione a una rete VPC per ulteriori informazioni.
  • Tutti i servizi devono consentire solo il traffico da sorgenti interne. Per ulteriori informazioni, consulta le impostazioni di Ingress.
  • Tutti i servizi devono instradare tutto il traffico in uscita attraverso la rete VPC. Per ulteriori informazioni, vedi Impostazioni del traffico in uscita.

Controllo dei servizi esistenti per la conformità a 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 verificati automaticamente per la conformità. Tuttavia, per evitare interruzioni dei carichi di lavoro esistenti, i servizi esistenti continueranno a funzionare e potrebbero non essere conformi ai criteri dell'organizzazione.

Ti consigliamo di controllare periodicamente i tuoi servizi per assicurarti che le impostazioni di traffico in entrata e in uscita siano conformi ai requisiti e di aggiornare o eseguire nuovamente il deployment dei servizi in base alle necessità. Ad esempio, puoi creare uno script che utilizzi l'API Cloud Run Admin per elencare i tuoi servizi ed evidenziare quelli che non specificano le impostazioni di rete corrette.