Crea e gestisci profili di sicurezza con filtro degli URL

I profili di sicurezza del filtro degli URL sono strutture di policy di livello 7 che utilizzano filtri URL per definire le policy di sicurezza per gli endpoint firewall. Questi profili valutano i nomi di dominio nel traffico di rete per applicare azioni di autorizzazione o negazione in base a stringhe di corrispondenza e priorità specifiche.

Questa pagina spiega come creare e gestire i profili di sicurezza con filtro degli URL.

Prima di iniziare

Ruoli

Per ottenere le autorizzazioni necessarie per creare, visualizzare, aggiornare o eliminare i profili di sicurezza, chiedi all'amministratore di concederti i ruoli IAM (Identity and Access Management) necessari nella tua organizzazione. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

Crea un profilo di sicurezza con filtro degli URL

Per creare un profilo di sicurezza url-filtering, specifica un nome come stringa o come identificatore URL univoco.

Console

  1. Nella console Google Cloud , vai alla pagina Profili di sicurezza.

    Vai a Profili di sicurezza

  2. Nel menu del selettore dei progetti, seleziona l'organizzazione o il progetto in cui vuoi creare il profilo di sicurezza.

  3. Seleziona la scheda Profili di sicurezza.

  4. Fai clic su Crea profilo.

  5. Inserisci un nome nel campo Nome.

  6. (Facoltativo) Inserisci una descrizione nel campo Descrizione.

  7. Per creare un profilo di sicurezza Cloud Next Generation Firewall Enterprise, seleziona Cloud NGFW Enterprise nella sezione Scopo.

  8. Per creare un profilo di sicurezza con filtro degli URL, nella sezione Tipo, seleziona Filtro degli URL.

  9. Nella sezione Filtri URL, fai clic sul pulsante Crea filtro URL.

  10. Nel riquadro Crea un filtro URL, specifica i seguenti dettagli:

    • Priorità: specifica la priorità del filtro URL.
    • Azione: specifica l'azione che Cloud NGFW esegue sul traffico.
      • Consenti: consente le connessioni che corrispondono a un URL.
      • Nega: nega le connessioni che corrispondono a un URL.
    • Elenco di URL: specifica un elenco di URL o stringhe di corrispondenza. Ogni voce di URL o stringa di corrispondenza deve apparire su una riga separata senza spazi o delimitatori. Ogni voce può essere costituita solo da un dominio. Per saperne di più sulle stringhe del matcher, vedi Stringhe del matcher per gli URL.
  11. Fai clic su Crea.

gcloud

  1. Crea un file YAML con i seguenti contenuti:

    name: NAME
    type: url-filtering
    urlFilteringProfile:
      urlFilters:
        - filteringAction: ACTION
          priority: PRIORITY
          urls: [URL,URL,...]
    

    Sostituisci quanto segue:

    • NAME: il nome del profilo di sicurezza del filtro degli URL; puoi specificare il nome come stringa o come identificatore URL univoco.

    • ACTION: specifica una delle seguenti azioni:

      • ALLOW: consente le connessioni che corrispondono a un URL
      • DENY: nega le connessioni che corrispondono a un URL
    • PRIORITY: priorità di un filtro URL compresa tra 0 e 2147483647.

    • URLs: un elenco separato da virgole di stringhe di corrispondenza. Ad esempio, www.example.com e www.examplepetstore.com.

  2. Per creare il profilo di sicurezza con filtro degli URL, esegui il comando gcloud network-security security-profiles import:

    gcloud network-security security-profiles import NAME \
      --source FILE_NAME \
      [ --organization ORGANIZATION_ID | --project PROJECT_ID ] \
      --location global
    

    In alternativa, puoi creare un profilo di sicurezza con filtro degli URL senza un file YAML utilizzando il comando gcloud network-security security-profiles url-filtering create:

    gcloud network-security security-profiles url-filtering create NAME \
        [ --organization ORGANIZATION_ID | --project PROJECT_ID ] \
        --description DESCRIPTION \
        --location global
    

    Sostituisci quanto segue:

    • NAME: il nome del profilo di sicurezza del filtro degli URL.

      Se non utilizzi il formato dell'identificatore URL univoco per il nome, devi specificare l'organizzazione o il nome del progetto e la località.

    • FILE_NAME: il nome del file YAML. Ad esempio, url-filtering-sp.yaml.

    • ORGANIZATION_ID: l'ID organizzazione. Utilizza questo flag per creare un profilo di sicurezza a livello di organizzazione.

    • PROJECT_ID: l'ID progetto Utilizza questo flag per creare un profilo di sicurezza a livello di progetto.

    • DESCRIPTION: una descrizione facoltativa per il profilo di sicurezza del filtro URL.

    Ad esempio, il seguente snippet di codice mostra un esempio di profilo di sicurezza con filtro URL che consente le richieste a www.example.com e www.examplepetstore.com, ma nega le richieste a tutti gli altri domini:

    urlFilteringProfile:
      urlFilters:
        - filteringAction: ALLOW
          priority: 1000
          urls: ['www.example.com', 'www.examplepetstore.com']
        # the following URL filter is implicit and will be processed last
        - filteringAction: DENY
          priority: 2147483647
          urls: ['*']
    

Filtro URL di negazione implicita

Il profilo di sicurezza del filtro degli URL include sempre un filtro URL predefinito con la priorità più bassa (2147483647), che nega tutte le connessioni che non corrispondono ai filtri URL con priorità più elevata. Il seguente snippet di codice mostra un esempio del filtro URL di negazione implicita:

  urlFilteringProfile:
    urlFilters:
      # user-specified URL filters
      - filteringAction: DENY
        priority: 1000
        urls: ['www.example.com','www.examplepetstore.com']
      - filteringAction: ALLOW
        priority: 2000
        urls: ['www.example.org','www.example.net']
      # implicit deny URL filter that will be processed last
      - filteringAction: DENY
        priority: 2147483647
        urls: ['*']
  

Puoi visualizzare il filtro degli URL di negazione implicita quando visualizzi o esporti un profilo di sicurezza di filtraggio degli URL. Non puoi modificare o rimuovere il filtro implicito. Ad esempio, se vuoi modificare l'azione predefinita di un profilo da DENY (applicata dal filtro implicito) a ALLOW, devi aggiungere un filtro esplicito che Cloud NGFW elabora prima del filtro implicito.

  urlFilteringProfile:
    urlFilters:
      # user-specified filters
      - filteringAction: DENY
        priority: 1000
        urls: ['www.example.com','www.examplepetstore.com']
      # explicit allow URL filter that you can add
      - filteringAction: ALLOW
        priority: 2000
        urls: ['*']
      # implicit deny URL filter that will be processed last
      - filteringAction: DENY
        priority: 2147483647
        urls: ['*']
  

Stringhe di corrispondenza per gli URL

Le stringhe di corrispondenza sono i valori che specifichi nel campo urls di un filtro URL. Puoi specificare una o più stringhe di corrispondenza all'interno di un filtro URL.

Caratteri jolly

Ogni stringa di corrispondenza in un elenco di URL supporta un carattere jolly (*) in modo limitato.

  • Ogni stringa di corrispondenza può supportare un solo asterisco (*), che deve essere il primo o l'unico carattere.
  • L'asterisco (*) può avere le seguenti interpretazioni:

    • Un asterisco (*) prima di un punto (.) indica tutti i sottodomini del dominio.

      Ad esempio, la stringa di corrispondenza *.example.com corrisponde a a.example.com e a.b.c.example.com, ma non a example.com.

      urlFilteringProfile:
        urlFilters:
          # user-specified filters
          - filteringAction: ALLOW
            priority: 1000
            urls: ['*.example.com']
          # implicit deny URL filter that will be processed last
          - filteringAction: DENY
            priority: 2147483647
            urls: ['*']
      

      Nell'esempio precedente, Cloud NGFW consente il traffico verso i sottodomini di example.com, ma nega il resto del traffico in uscita.

    • Un asterisco (*) prima di un'etichetta indica il dominio e tutti i sottodomini.

      Ad esempio, la stringa di corrispondenza *example.com corrisponde a a.example.com, a.b.c.example.com e example.com.

      urlFilteringProfile:
        urlFilters:
          # user-specified filters
          - filteringAction: ALLOW
            priority: 1000
            urls: ['*example.com']
          # implicit deny URL filter that will be processed last
          - filteringAction: DENY
            priority: 2147483647
            urls: ['*']
      

      Nell'esempio precedente, Cloud NGFW consente il traffico verso example.com e i sottodomini di example.com, ma nega il resto del traffico in uscita.

    • Un asterisco (*) prima di un'estensione di dominio (ad esempio .com) indica tutti i domini (e i relativi sottodomini) che utilizzano l'estensione di dominio.

      Ad esempio, la stringa di corrispondenza *.com corrisponde a example.com e examplepetstore.com e a tutti i relativi sottodomini.

      Lo snippet di codice seguente mostra come consentire tutti i domini (e i relativi sottodomini) che terminano con .com, ma negare il traffico rimanente.

      urlFilteringProfile:
        urlFilters:
          # Allow all domains (and their subdomains) that end in '.com'
          - filteringAction: ALLOW
            priority: 2000
            urls: ['*.com']
          # implicit deny URL filter that will be processed last
          - filteringAction: DENY
            priority: 2147483647
            urls: ['*']
      

      Lo snippet di codice seguente mostra come negare tutti i sottodomini di example.com e examplepetstore.com, ma consentire questi domini e tutti gli altri domini (e i relativi sottodomini) che terminano con .com.

      urlFilteringProfile:
        urlFilters:
          # Deny all subdomains of example.com
          - filteringAction: DENY
            priority: 1000
            urls: ['*.example.com']
          # Deny all subdomains of examplepetstore.com
          - filteringAction: DENY
            priority: 1500
            urls: ['*.examplepetstore.com']
          # Allow all domains (and their subdomains) that end in '.com'
          - filteringAction: ALLOW
            priority: 2000
            urls: ['*.com']
          # implicit deny URL filter that will be processed last
          - filteringAction: DENY
            priority: 2147483647
            urls: ['*']
      
    • Cloud NGFW non interpreta l'asterisco (*) come carattere jolly di un'espressione regolare.

      Ad esempio, *example.test non corrisponde a newexample.test o a.newexample.test. ma corrisponde solo a example.test e ai sottodomini di example.test.

    • Un singolo asterisco (*) senza altri caratteri indica una corrispondenza per tutte le richieste.

      Ad esempio, la stringa di corrispondenza nel filtro URL di autorizzazione esplicita con priorità più bassa contiene solo un asterisco (*) e ha un'azione ALLOW che esegue l'override dell'azione predefinita DENY. Ciò accade perché il filtro URL di negazione implicita applica il valore predefinito DENY a qualsiasi richiesta che non corrisponde ai filtri URL con priorità più elevata.

      Il filtro URL con la priorità più alta, ovvero un ALLOW esplicito o un DENY implicito, determina se Cloud NGFW consente o nega le connessioni quando mancano informazioni SNI o di dominio. Ciò può accadere con il traffico HTTP non criptato o quando l'ispezione TLS è disattivata per le intestazioni dei messaggi criptate.

      urlFilteringProfile:
        urlFilters:
          # user-specified filters
          - filteringAction: DENY
            priority: 1000
            urls: ['www.example.com','www.examplepetstore.com']
          # explicit allow URL filter that you can add
          - filteringAction: ALLOW
            priority: 2000
            urls: ['*']
          # implicit deny URL filter that will be processed last
          - filteringAction: DENY
            priority: 2147483647
            urls: ['*']
      

Limitazioni

  • Le stringhe di corrispondenza rappresentano domini o sottodomini.
  • Le stringhe di corrispondenza non supportano il carattere della barra (/), ad esempio www.example.com/images.
  • Le stringhe di corrispondenza non supportano schemi o nomi di protocolli. Ad esempio: http://www.example.com.
  • Le stringhe di corrispondenza non supportano i numeri di porta. Ad esempio: www.example.com:80.
  • Le stringhe di corrispondenza supportano solo lettere ASCII, numeri e caratteri speciali: trattino (-), punto (.) e asterisco (*).

Devi utilizzare Punycode per convertire i nomi di dominio che contengono caratteri diversi da lettere ASCII, numeri, trattini (-), punti (.) o asterischi (*). Punycode è uno standard di codifica che trasforma i nomi di dominio Unicode in un formato compatibile con ASCII.

  • Se hai due o più etichette, utilizza i punti (.) per separarle. Un'etichetta può contenere uno o più trattini (-), ma non deve iniziare o terminare con un trattino. Ogni etichetta può includere un massimo di 63 caratteri.

  • Un filtro URL non supporta l'utilizzo di un punto all'inizio di un nome di dominio o di punti consecutivi all'interno di una stringa di corrispondenza. Un filtro URL consente punti finali, ma Cloud NGFW li rimuove prima di salvare un filtro URL.

  • Cloud NGFW converte le stringhe di corrispondenza in minuscolo prima di salvare il filtro URL. Cloud NGFW non esegue altre normalizzazioni.

  • Ogni nome di dominio può includere un massimo di 255 caratteri.

Filtri URL per sottodomini multilivello

Puoi utilizzare i filtri URL con priorità e azioni diverse per controllare il traffico di rete verso i sottodomini multilivello. Puoi anche utilizzare il carattere jolly (*) nelle stringhe di corrispondenza per specificare domini e sottodomini.

Ad esempio, considera uno scenario in cui implementi il seguente comportamento:

  • Consenti a.b.c.example.com
  • Nega *.b.c.example.com (nega tutti gli altri sottodomini di b.c.example.com)
  • Consenti *.c.example.com (consenti tutti gli altri sottodomini di c.example.com)
  • Nega *.example.com (nega tutti gli altri sottodomini di example.com)
  • Consenti example.com
  • Consenti tutto il resto

Il seguente snippet di codice implementa questo scenario:

  urlFilteringProfile:
    urlFilters:
      # Allow 'a.b.c.example.com'
      - filteringAction: ALLOW
        priority: 1000
        urls: ['a.b.c.example.com']
      # Deny all subdomains of 'b.c.example.com'
      - filteringAction: DENY
        priority: 2000
        urls: ['*.b.c.example.com']
      # Allow all subdomains of 'c.example.com'
      - filteringAction: ALLOW
        priority: 3000
        urls: ['*.c.example.com']
      # Deny all subdomains of 'example.com'
      - filteringAction: DENY
        priority: 4000
        urls: ['*.example.com']
      # explicit allow URL filter
      - filteringAction: ALLOW
        priority: 5000
        urls: ['*']
      # implicit deny URL filter that will be processed last
      - filteringAction: DENY
        priority: 2147483647
        urls: ['*']
  

Elenca e visualizza i dettagli di un profilo di sicurezza con filtro degli URL

Puoi elencare i profili di sicurezza con filtro degli URL creati in un'organizzazione o in un progetto. Puoi anche visualizzare i dettagli del profilo, come tipo, scopo e descrizione.

Console

  1. Nella console Google Cloud , vai alla pagina Profili di sicurezza.

    Vai a Profili di sicurezza

  2. Seleziona la scheda Profili di sicurezza per visualizzare un elenco dei profili di sicurezza configurati.

  3. Per filtrare in base ai profili di sicurezza del filtro degli URL, nel campo Filtro, specifica Tipo di profilo come Filtro degli URL.

    La scheda mostra un elenco di profili di sicurezza con filtro degli URL.

  4. Per visualizzare i dettagli del profilo, fai clic su un profilo di sicurezza con filtro degli URL.

gcloud

Per elencare tutti i profili di sicurezza con filtro degli URL, utilizza il comando gcloud network-security security-profiles url-filtering list:

gcloud network-security security-profiles url-filtering list \
    [ --organization ORGANIZATION_ID | --project PROJECT_ID ] \
    [--billing-project QUOTA_PROJECT_ID]
    --location global

Per visualizzare i dettagli di un profilo di sicurezza con filtro degli URL, esegui il comando gcloud network-security security-profiles url-filtering describe:

gcloud network-security security-profiles url-filtering describe NAME \
    [ --organization ORGANIZATION_ID | --project PROJECT_ID ] \
    [--billing-project QUOTA_PROJECT_ID]
    --location global

Sostituisci quanto segue:

  • NAME: il nome del profilo di sicurezza.

    Se non utilizzi il formato dell'identificatore URL univoco per il nome, devi specificare l'organizzazione o il nome del progetto e la località.

  • ORGANIZATION_ID: l'ID dell'organizzazione in cui esiste il profilo di sicurezza.

  • PROJECT_ID: l'ID progetto in cui esiste il profilo di sicurezza.

  • QUOTA_PROJECT_ID: il tuo ID progetto quota. Utilizza questo flag solo per i profili di sicurezza a livello di organizzazione.

Elimina un profilo di sicurezza con filtro degli URL

Puoi eliminare un profilo di sicurezza per il filtro degli URL specificandone il nome, la posizione e l'organizzazione o il progetto. Se un profilo di sicurezza viene a cui fa riferimento un gruppo di profili di sicurezza, non puoi eliminarlo.

Per eliminare un profilo di sicurezza del filtro degli URL, utilizza la console Google Cloud o gcloud CLI. Tuttavia, se un profilo di sicurezza viene referenziato da un gruppo di profili di sicurezza, non può essere eliminato.

Console

  1. Nella console Google Cloud , vai alla pagina Profili di sicurezza.

    Vai a Profili di sicurezza

  2. Seleziona la scheda Profili di sicurezza. La scheda mostra un elenco di profili di sicurezza configurati.

  3. Seleziona il profilo di sicurezza che vuoi eliminare, quindi fai clic su Elimina.

  4. Fai di nuovo clic su Elimina per confermare.

gcloud

Per eliminare un profilo di sicurezza del filtro degli URL, utilizza il comando gcloud network-security security-profiles url-filtering delete:

gcloud network-security security-profiles url-filtering delete NAME \
    [ --organization ORGANIZATION_ID | --project PROJECT_ID ] \
    --location global

Sostituisci quanto segue:

  • NAME: il nome del profilo di sicurezza.

    Se non specifichi il nome nel formato dell'identificatore URL univoco, devi specificare l'organizzazione o il nome del progetto e la località.

  • ORGANIZATION_ID: l'ID organizzazione. Utilizza questo flag per un profilo di sicurezza a livello di organizzazione.

  • PROJECT_ID: il tuo ID progetto. Utilizza questo flag per un profilo di sicurezza a livello di progetto.

  • QUOTA_PROJECT_ID: il tuo ID progetto quota. Utilizza questo flag solo per i profili di sicurezza a livello di organizzazione.

Importare un profilo di sicurezza con filtro degli URL

Puoi importare un profilo di sicurezza con filtro degli URL (creato personalizzato o esportato in precedenza) da un file YAML. Quando importi un profilo di sicurezza del filtro degli URL, se esiste già un profilo con lo stesso nome, Cloud NGFW aggiorna il profilo esistente.

Per importare un profilo di sicurezza del filtro degli URL da un file YAML, utilizza gcloud CLI. Se esiste già un profilo con lo stesso nome quando lo importi, Cloud NGFW lo aggiorna.

gcloud

Per importare un profilo di sicurezza del filtro degli URL da un file YAML, utilizza il comando gcloud network-security security-profiles import:

gcloud network-security security-profiles import NAME \
    [ --organization ORGANIZATION_ID | --project PROJECT_ID ] \
    --location global \
    --source FILE_NAME

Sostituisci quanto segue:

  • NAME: il nome del profilo di sicurezza di tipo url-filtering che vuoi importare; puoi specificare il nome come stringa o come identificatore URL univoco.

  • ORGANIZATION_ID: l'ID organizzazione. Utilizza questo flag per un profilo di sicurezza a livello di organizzazione.

  • PROJECT_ID: l'ID progetto Utilizza questo flag per un profilo di sicurezza a livello di progetto.

  • FILE_NAME: il percorso del file YAML contenente i dati di esportazione della configurazione.

Esporta un profilo di sicurezza con filtro degli URL

Puoi esportare un profilo di sicurezza con filtro URL in un file YAML. Ad esempio, invece di utilizzare l'interfaccia utente per modificare un profilo di sicurezza di grandi dimensioni, puoi utilizzare questa funzionalità per esportare il profilo di sicurezza, modificarlo rapidamente e importarlo di nuovo.

Per esportare un profilo di sicurezza del filtro degli URL in un file YAML, utilizza gcloud CLI.

gcloud

Per esportare un profilo di sicurezza del filtro degli URL in un file YAML, utilizza il comando gcloud network-security security-profiles export:

gcloud network-security security-profiles export NAME \
    [ --organization ORGANIZATION_ID | --project PROJECT_ID ] \
    --location global \
    --destination FILE_NAME

Sostituisci quanto segue:

  • NAME: il nome del profilo di sicurezza di tipo url-filtering che vuoi esportare. Puoi specificare il nome come stringa o come identificatore URL univoco.

  • ORGANIZATION_ID: l'ID organizzazione. Utilizza questo flag per un profilo di sicurezza a livello di organizzazione.

  • PROJECT_ID: l'ID progetto Utilizza questo flag per un profilo di sicurezza a livello di progetto.

  • FILE_NAME: il percorso del file YAML in cui Cloud NGFW esporterà la configurazione.

Passaggi successivi