Utilizzo di Controlli di servizio VPC

Controlli di servizio VPC è una funzionalità di Google Cloud che consente di configurare un perimetro sicuro per evitare l'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 aumentare la sicurezza dei tuoi servizi.

Limitazioni e avvertenze

  • Per Artifact Registry o Container Registry:

    • Il registro in cui archivi il container deve trovarsi nello stesso perimetro di servizio dei Controlli di servizio VPC del progetto in cui stai eseguendo 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 di Controlli di servizio VPC.

  • Quando i servizi Cloud Run vengono richiamati, l'applicazione del criterio 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 entità IAM non sono supportate.
    • I livelli di accesso per i perimetri dei Controlli di servizio VPC che utilizzano entità IAM non sono supportati.

Configurare la tua organizzazione in modo da 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 dei Controlli di servizio VPC vengano applicati quando utilizzi Cloud Run e che gli sviluppatori possano eseguire il deployment solo di servizi conformi con i Controlli di servizio VPC. Scopri di più sull'ereditarietà e sulle violazioni quando imposti un criterio dell'organizzazione.

Configura un perimetro dei Controlli di servizio VPC

I passaggi seguenti 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 ti viene richiesto, seleziona la tua 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 che vuoi aggiungere.

      Se utilizzi un 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 da proteggere all'interno del perimetro.

    1. Fai clic su Servizi limitati.

    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.

  7. Abilita l'accesso per gli sviluppatori.

    L'attivazione di Controlli di servizio VPC per Cloud Run impedisce ogni accesso dall'esterno del perimetro, inclusa la visualizzazione e il deployment dei servizi da macchine non incluse nel perimetro, come i laptop aziendali. Per consentire agli sviluppatori e agli operatori delle applicazioni di visualizzare ed eseguire il deployment delle risorse all'interno del perimetro, devi configurare il criterio in entrata 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.

  8. Fai clic su Crea perimetro.

Una volta completati questi passaggi, tutte le chiamate all'API Cloud Run Admin vengono controllate per verificare che abbiano origine all'interno dello stesso perimetro.

Configura 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 proteggere dall'esfiltrazione di dati, configura i seguenti criteri dell'organizzazione che controllano le impostazioni consentite per in entrata ed in uscita per Cloud Run nel perimetro di servizio.

Limita impostazioni di traffico in entrata consentite

Il criterio dell'organizzazione run.allowedIngress controlla le impostazioni in entrata che gli sviluppatori sono autorizzati a utilizzare per Cloud Run. Imposta questo criterio dell'organizzazione in modo che gli sviluppatori utilizzino il valore internal se vuoi consentire solo le richieste interne oppure 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 saperne di più su queste impostazioni, consulta Limitazione del traffico 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 dei criteri, seleziona Sostituisci.

  5. In Valori del 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 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 è 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 attivato questo criterio dell'organizzazione, tutti i servizi devono utilizzare 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 traffico in entrata su un valore diverso verranno bloccati dal criterio dell'organizzazione.

Limita impostazioni di traffico VPC in uscita consentite

Il criterio dell'organizzazione run.allowedVPCEgress controlla le impostazioni del traffico in uscita che gli sviluppatori sono autorizzati a utilizzare per Cloud Run. Imposta questo criterio dell'organizzazione per 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 dei criteri, seleziona Sostituisci.

  5. In Valori del 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 attivato il criterio dell'organizzazione, tutte le nuove revisioni devono utilizzare il traffico in uscita dal VPC diretto o un connettore di accesso VPC serverless e il valore all-traffic per le impostazioni 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 nuovi deployment delle revisioni che specificano un valore diverso sono bloccati dal criterio dell'organizzazione.

Migrazioni di 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 saranno conformi.

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

Configurazione del progetto per il supporto dei 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 tua rete VPC in modo che le richieste inviate al normale IP virtuale googleapis.com vengano instradate automaticamente all'intervallo IP virtuale limitato (VIP) limitato 199.36.153.4/30 (restricted.googleapis.com) dove viene servito il tuo 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, tranne quello verso l'intervallo VIP limitato:

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

  2. Configura le regole firewall per impedire ai dati di uscire 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à prima della regola di negazione del traffico in uscita che hai appena creato, in modo da consentire il traffico in uscita solo verso l'intervallo VIP limitato.

  3. 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 a questo criterio. Per specificare più reti, separa i nomi di ogni rete con virgole, ad esempio: network1,network2.
    • DESCRIPTION: una descrizione del criterio 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 del criterio di risposta.
    • RESPONSE_POLICY: il nome del criterio di risposta creato nel passaggio precedente, riportato 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 del criterio di risposta.
    • RESPONSE_POLICY: il nome del criterio di risposta specificato nel passaggio precedente, riportato tra virgolette.

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

  • Non possono 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 Cloud Run conformi ai 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ò richiede quanto segue:

  • Tutti i servizi devono utilizzare il traffico in uscita da VPC diretto o un connettore di accesso VPC serverless. Per ulteriori informazioni, consulta Connessione a una rete VPC.
  • Tutti i servizi devono consentire solo il traffico proveniente da sorgenti interne. Per ulteriori informazioni, consulta le impostazioni in entrata. L'impostazione del traffico in entrata su "tutti" disabilita l'applicazione dei Controlli di servizio VPC.
  • Tutti i servizi devono instradare tutto il traffico in uscita attraverso la rete VPC. Per ulteriori informazioni, consulta Impostazioni per il traffico in uscita.

Controlla i servizi esistenti per la conformità 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 carichi di lavoro esistenti, i servizi esistenti continuano a funzionare e potrebbero non essere conformi ai criteri dell'organizzazione.

Google consiglia di controllare periodicamente i servizi per assicurarti che le impostazioni 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 servizi ed evidenziare quelli che non specificano le impostazioni di rete corrette.