Regole di sicurezza

Questa pagina spiega le regole di sicurezza del gateway e come crearle.

Secure Web Proxy consente di definire vari tipi di regole di sicurezza all'interno delle policy di sicurezza del gateway per proteggere il traffico web in uscita. Puoi utilizzare queste regole per controllare con precisione la sicurezza del traffico utilizzando dettagli specifici della richiesta, come intestazioni e pattern URL, per assicurarti che solo il traffico HTTP/S approvato lasci la tua rete.

Le regole di sicurezza del gateway hanno le seguenti funzionalità:

  • Ogni regola è un'istruzione if-then che controlla una richiesta web in base ai seguenti parametri:

    • Identità di origine: chi effettua la richiesta, ad esempio una macchina virtuale (VM) o un service account specifico.

    • Destinazione: dove sta andando la richiesta, ad esempio un URL di destinazione o un dominio come trusted-partner.com.

    • Azione: la decisione di consentire o negare il traffico.

  • Le regole di sicurezza del gateway forniscono un controllo granulare. Queste regole ti consentono di applicare standard di sicurezza diversi all'interno della tua organizzazione utilizzando definizioni chiare e strutturate.

Regole di corrispondenza degli host

Secure Web Proxy utilizza la corrispondenza del nome host per verificare il dominio di destinazione. La procedura di verifica varia a seconda di come viene eseguito il deployment del proxy, come mostrato nella tabella seguente.

Modalità di deployment Procedura di verifica dell'host
Modalità proxy esplicito Per il traffico non criptato, il proxy controlla il nome host rispetto all'intestazione della connessione HTTP. Se utilizzi gli attributi Application Matcher per l'ispezione TLS, il proxy controlla il nome host prima a livello di connessione e poi a livello di applicazione.
Modalità hop successivo Per il traffico criptato, il proxy confronta il nome host di destinazione con il campo Server Name Indication (SNI) nella richiesta in uscita. Questo campo è visibile anche su connessioni sicure.

Configura le regole di corrispondenza degli host per la modalità proxy esplicito

Quando esegui il deployment di Secure Web Proxy come proxy esplicito, configura le regole di corrispondenza dell'host per verificare che le informazioni sull'host inviate dal client vengano estratte e controllate correttamente in base alle regole di sicurezza definite. In modalità proxy esplicito, i client sono configurati attivamente per inviare il traffico direttamente all'istanza Secure Web Proxy.

La corrispondenza degli host in modalità proxy esplicito funziona per diversi tipi di traffico web nel seguente modo:

Tipo di traffico Meccanismo di corrispondenza Configurazione della regola
HTTP non criptato Secure Web Proxy confronta il nome host di destinazione con il campo host nell'intestazione CONNECT standard della richiesta HTTP. Nel campo sessionMatcher, utilizza host() == "example.com".
HTTPS criptato (senza ispezione TLS (Transport Layer Security)) La corrispondenza dell'host non è possibile né a livello di applicazione né a livello di sessione. Questo perché i dettagli della richiesta sono criptati e l'attributo destination.ip non è supportato. Devi utilizzare controlli delle policy più ampi, come la corrispondenza dell'identità di origine, o abilitare l'ispezione TLS per il filtro basato su host. Per utilizzare Application Matcher, utilizza la corrispondenza dell'identità di origine, ad esempio i service account, o attiva l'ispezione TLS.
HTTPS criptato (con ispezione TLS) Per ispezionare la richiesta completa, devi utilizzare sia il matcher di sessione sia il matcher di applicazione. 1. Imposta una regola generale di corrispondenza della sessione che restituisca true o corrisponda all'host di destinazione, ad esempio host() == "example.com".

2. Nel campo applicationMatcher, aggiungi una regola host specifica, ad esempio request.host() == "example.com".

Configura le regole di corrispondenza degli host per la modalità hop successivo

Quando esegui il deployment di Secure Web Proxy come hop successivo, devi configurare le regole di corrispondenza degli host. Il traffico viene reindirizzato al proxy tramite una route Virtual Private Cloud (VPC) basata sugli intervalli di indirizzi IP definiti da te. Le regole di corrispondenza dell'host assicurano che il proxy identifichi correttamente l'host di destinazione controllando vari campi del traffico, come l'intestazione SNI (Server Name Indication).

La corrispondenza dell'host in modalità hop successivo funziona per diversi tipi di traffico web nel seguente modo:

Tipo di traffico Meccanismo di corrispondenza Configurazione della regola
HTTP non criptato Secure Web Proxy controlla il nome host di destinazione rispetto al campo host nell'intestazione della richiesta HTTP standard. Nel campo sessionMatcher, utilizza host() == "example.com".
HTTPS criptato (senza ispezione TLS) Secure Web Proxy confronta il nome host con l'intestazione SNI nella richiesta in uscita, che è visibile anche se il resto del traffico è crittografato. Nel campo sessionMatcher, utilizza host() == "example.com".
HTTPS criptato (con ispezione TLS) Per ispezionare la richiesta completa, devi utilizzare sia il matcher di sessione sia il matcher di applicazione. 1. Imposta una regola generale di corrispondenza della sessione che restituisca true o corrisponda all'host di destinazione, ad esempio host() == "example.com".

2. Nel campo applicationMatcher, aggiungi una regola host specifica, ad esempio request.host() == "example.com".

Regole del proxy TCP

Le regole proxy TCP (Transmission Control Protocol) ti consentono di controllare il traffico che non è traffico web standard, come HTTP (porta 80) o HTTPS (porta 443). Configurando le regole proxy TCP, puoi consentire o bloccare il traffico su qualsiasi altra porta TCP. Queste regole ti aiutano a bloccare il traffico dannoso e a gestire le applicazioni non web che utilizzano TCP.

Se il tuo workload (ad esempio le tue applicazioni e i tuoi servizi) utilizza Secure Web Proxy come hop successivo, l'applicazione delle regole del proxy TCP è utile. Il reindirizzamento basato su route indirizza il traffico non HTTP(S) e non web alla tua istanza di Secure Web Proxy. In questo modo, puoi impedire al traffico in uscita di raggiungere siti esterni dannosi e gestire i servizi esterni a cui possono connettersi i workload della tua rete.

Configura le regole del proxy TCP

Puoi configurare regole del proxy TCP per la tua applicazione in modo da proteggere il traffico non web e applicare policy di sicurezza per le applicazioni che non utilizzano HTTP/S standard, ad esempio per le porte 80 e 443.

Applicando queste regole, puoi impedire l'utilizzo non autorizzato di altre porte TCP per il trasferimento di dati o attività dannose. Ciò è particolarmente utile quando i tuoi workload utilizzano Secure Web Proxy come hop successivo per i protocolli non web.

Per implementare le regole del proxy TCP e creare una regola per consentire o bloccare il traffico per la tua applicazione, devi specificare la porta di destinazione. Facoltativamente, puoi includere uno dei seguenti attributi di Session Matcher per perfezionare i criteri della regola di autorizzazione o di blocco.

La tabella seguente fornisce ulteriori informazioni sui vari attributi che puoi utilizzare in una regola proxy TCP:

Attributo Tipo di attributo Descrizione
source.ip string L'indirizzo IP del client che ha inviato la richiesta.
source.port string Porta client che ha inviato la richiesta.
destination.port string Porta upstream a cui l'istanza Secure Web Proxy invia il traffico.
source.matchTag(SECURE_TAG) boolean

True, se l'origine è associata a SECURE_TAG.

L'argomento è l'ID permanente del tag sicuro, ad esempio source.matchTag('tagValues/123456').

source.matchServiceAccount(SERVICE_ACCOUNT) boolean True, se l'origine è associata a SERVICE_ACCOUNT, ad esempio source.matchServiceAccount('x@my-project.').
inIpRange(IP_ADDRESS,
IP_RANGE)
boolean True, se IP_ADDRESS è contenuto all'interno di IP_RANGE, ad esempio inIpRange(source.ip, '1.2.3.0/24'). Le subnet mask per gli indirizzi IPv6 non possono superare "/64".

Esempio di regola del proxy TCP

Questo esempio mostra come definire un gatewaySecurityPolicyRule di Secure Web Proxy utilizzando un'espressione CEL per consentire tutto il traffico TCP alla porta 22. Puoi utilizzare questa configurazione quando applichi le funzionalità del proxy TCP di Secure Web Proxy.

Il seguente esempio di codice mostra come definire una regola del proxy TCP:

name: projects/PROJECT_ID/locations/REGION/gatewaySecurityPolicies/POLICY_NAME/rules/RULE_NAME
enabled: true
priority: 100 # Lower numbers have higher priority
description: "Allow TCP proxy traffic to port 22 - such as, for SSH"
basicProfile: ALLOW
sessionMatcher: "destination.port == 22"

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto
  • REGION: la regione della policy
  • POLICY_NAME: il nome della policy
  • RULE_NAME: il nome della regola del proxy TCP. In questo esempio, possiamo considerare il suo valore come allow-ssh-tcp-proxy.

Considerazioni importanti

  • Tutte le regole del proxy TCP configurate devono avere una priorità più alta (numero più basso) rispetto alle regole HTTP/S per garantire che vengano valutate e applicate per prime. Per saperne di più, consulta Ordine di valutazione delle regole.

  • Quando configuri le regole del proxy TCP, l'attributo host Session Matcher non è supportato perché le informazioni sull'host non sono disponibili al livello TCP.

  • Le regole del proxy TCP filtrano il traffico web solo in base alla porta di destinazione. Per migliorare la sicurezza della rete, ti consigliamo di aggiungere altre condizioni utilizzando gli operatori logici AND (&&) e OR (||) e gli attributi di supporto come source.ip. Ecco un esempio di come definire una regola proxy TCP più specifica:

      // Allow port 22 from only a specific source IP range
      sessionMatcher: "destination.port == 22 && inIpRange(source.ip, '10.0.0.0/24')"
    
  • Secure Web Proxy non supporta la possibilità di configurare regole proxy per le applicazioni User Datagram Protocol (UDP). Di conseguenza, Secure Web Proxy blocca il traffico delle applicazioni basate su UDP.

Crea una regola di sicurezza

Prima di creare una regola di sicurezza del gateway, assicurati di eseguire le seguenti azioni:

  1. Completa tutti i passaggi di configurazione iniziali.

  2. Crea una policy

Dopo aver creato una regola e averla associata a una policy, puoi utilizzarla durante il deployment di Secure Web Proxy.

Console

  1. Nella console Google Cloud , vai alla pagina Policy SWP.

    Vai a Policy SWP

  2. Fai clic sul nome della policy, ad esempio policy1.

  3. Fai clic su Aggiungi regola.

  4. Per ogni regola, segui questi passaggi:

    1. In Priorità, inserisci un ordine di valutazione numerico per la regola. Le regole vengono valutate dalla priorità più alta a quella più bassa, dove 0 è la priorità più alta.

    2. Nel campo Nome, inserisci un nome per la regola.

    3. Nel campo Descrizione, inserisci una descrizione per la regola.

    4. In Azione, seleziona una delle seguenti opzioni:

      • Consenti: per consentire le richieste di connessione che corrispondono alla regola.
      • Nega: per negare le richieste di connessione che corrispondono alla regola.
    5. Nel campo Stato, seleziona una delle seguenti opzioni per l'applicazione della regola:

      • Abilitata: per applicare la regola all'istanza di Secure Web Proxy.
      • Disattivata: per non applicare la regola all'istanza di Secure Web Proxy.
    6. Nella sezione Corrispondenza sessione, specifica i criteri per la corrispondenza della sessione, ad esempio host() == "www.wikipedia.org".

      Per saperne di più sulla sintassi per SessionMatcher, consulta il riferimento al linguaggio del matcher CEL.

    7. Nella sezione Corrispondenza applicazione, specifica i criteri per la corrispondenza della richiesta.

      Per saperne di più sulla corrispondenza del traffico TCP, consulta Configura le regole del proxy TCP.

    8. Fai clic su Aggiungi regola.

Cloud Shell

  1. Utilizza l'editor di testo che preferisci per creare un file rule.yaml. Per ulteriori informazioni sulla sintassi per sessionMatcher, consulta il riferimento al linguaggio del matcher CEL.

    name: projects/PROJECT_ID/locations/REGION/gatewaySecurityPolicies/policy1/rules/RULE_NAME
    description: Allow wikipedia.org
    enabled: true
    priority: 1
    basicProfile: ALLOW
    sessionMatcher: host() == 'www.wikipedia.org'
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del progetto
    • REGION: la regione della policy
    • RULE_NAME: il nome della regola. In questo esempio, possiamo considerare il suo valore come allow-wikipedia-org.

    (Facoltativo) In alternativa, se vuoi creare una regola con l'ispezione TLS abilitata, crea il file rule.yaml come mostrato qui. Per saperne di più, consulta Panoramica dell'ispezione TLS e Abilita l'ispezione TLS.

      name: projects/PROJECT_ID/locations/REGION/gatewaySecurityPolicies/policy1/rules/RULE_NAME
      description: Allow wikipedia.org
      enabled: true
      priority: 1
      basicProfile: ALLOW
      sessionMatcher: host() == 'www.wikipedia.org'
      applicationMatcher: request.path.contains('index.html')
      tlsInspectionEnabled: true
    

    Per saperne di più sulla corrispondenza del traffico TCP, consulta Configura le regole del proxy TCP.

  2. Crea la regola della policy di sicurezza.

    gcloud network-security gateway-security-policies rules import allow-wikipedia-org \
        --source=rule.yaml \
        --location=REGION \
        --gateway-security-policy=policy1
    

Limitazioni

Passaggi successivi