Criar e gerenciar perfis de segurança de filtragem de URL

Os perfis de segurança de filtragem de URL são estruturas de política da camada 7 que usam filtros de URL para definir políticas de segurança para endpoints de firewall. Esses perfis avaliam nomes de domínio no tráfego de rede para aplicar ações de permissão ou negação com base em strings e prioridades de correspondência específicas.

Nesta página, explicamos como criar e gerenciar perfis de segurança de filtragem de URL.

Antes de começar

Papéis

Para receber as permissões necessárias de criação, visualização, atualização ou exclusão de perfis de segurança, solicite ao administrador que conceda a você os papéis do Identity and Access Management (IAM) necessários na sua organização. Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.

Criar um perfil de segurança de filtragem de URL

Para criar um perfil de segurança url-filtering, especifique um nome como uma string ou um identificador de URL exclusivo.

Console

  1. No console do Google Cloud , acesse a página Perfis de segurança.

    Acessar Perfis de segurança

  2. No menu do seletor de projetos, selecione a organização ou o projeto em que você quer criar o perfil de segurança.

  3. Selecione a guia Perfis de segurança.

  4. Clique em Criar perfil.

  5. Digite um nome no campo Nome.

    .

  6. Opcional: insira uma descrição no campo Descrição.

  7. Para criar um perfil de segurança do Cloud Next Generation Firewall Enterprise, na seção Finalidade, selecione Cloud NGFW Enterprise.

  8. Para criar um perfil de segurança de filtragem de URL, na seção Tipo, selecione Filtragem de URL.

  9. Na seção Filtros de URL, clique no botão Criar filtro de URL.

  10. No painel Criar um filtro de URL, especifique os seguintes detalhes:

    • Prioridade: especifique a prioridade do filtro de URL.
    • Ação: especifique a ação que o Cloud NGFW executa no tráfego.
      • Permitir: permite as conexões que correspondem a um URL.
      • Negar: nega as conexões que correspondem a um URL.
    • Lista de URLs: especifique uma lista de URLs ou strings de correspondência. Cada URL ou entrada de string de correspondência precisa aparecer na própria linha sem espaços ou delimitadores. Cada entrada pode consistir em apenas um domínio. Para mais informações sobre as strings de correspondência, consulte Strings de correspondência para URLs.
  11. Clique em Criar.

gcloud

  1. Crie um arquivo YAML com o seguinte conteúdo:

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

    Substitua:

    • NAME: o nome do perfil de segurança de filtragem de URL; é possível especificar o nome como uma string ou um identificador de URL exclusivo.

      .
    • ACTION: especifique uma das seguintes ações:

      • ALLOW: permite conexões que correspondem a um URL
      • DENY: nega conexões que correspondem a um URL
    • PRIORITY: prioridade de um filtro de URL, que varia de 0 a 2147483647.

    • URLs: uma lista separada por vírgulas de strings de correspondência. Por exemplo, www.example.com e www.examplepetstore.com.

  2. Para criar o perfil de segurança de filtragem de URL, execute o 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
    

    Como alternativa, é possível criar um perfil de segurança de filtragem de URL sem um arquivo YAML usando o 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
    

    Substitua:

    • NAME: o nome do perfil de segurança de filtragem de URL.

      Se você não usar o formato de identificador de URL exclusivo para o nome, especifique a organização ou o nome do projeto e o local.

      .
    • FILE_NAME: o nome do arquivo YAML. Por exemplo, url-filtering-sp.yaml.

    • ORGANIZATION_ID: o ID da organização. Use esta flag para criar um perfil de segurança no nível da organização.

    • PROJECT_ID: o ID do projeto; Use essa flag para criar um perfil de segurança para envolvidos no projeto.

    • DESCRIPTION: uma descrição opcional para o perfil de segurança de filtragem de URL.

    Por exemplo, o snippet de código a seguir mostra um exemplo de perfil de segurança de filtragem de URL que permite solicitações para www.example.com e www.examplepetstore.com, mas nega solicitações para todos os outros domínios:

    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 de URL de negação implícita

O perfil de segurança de filtragem de URL sempre inclui um filtro de URL padrão com a menor prioridade (2147483647) que nega todas as conexões que não correspondem aos filtros de URL de maior prioridade. O snippet de código a seguir mostra um exemplo do filtro de URL de negação implícita:

  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: ['*']
  

É possível ver o filtro de URL de negação implícita ao visualizar ou exportar um perfil de segurança de filtragem de URL. Não é possível modificar ou remover o filtro implícito. Por exemplo, se você quiser mudar a ação padrão de um perfil de DENY (aplicada por um filtro implícito) para ALLOW, adicione um filtro explícito que o Cloud NGFW processe antes do filtro implícito.

  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: ['*']
  

Strings de correspondência para URLs

As strings de correspondência são os valores especificados no campo urls de um filtro de URL. É possível especificar uma ou mais strings de correspondência em um filtro de URL.

Caracteres curinga

Cada string de correspondência de uma lista de URLs aceita um caractere curinga (*) de forma limitada.

  • Cada string de correspondência pode aceitar apenas um asterisco (*), que pode ser o primeiro ou o único caractere.
  • O asterisco (*) pode ter as seguintes interpretações:

    • Um asterisco (*) antes de um ponto (.) indica todos os subdomínios do domínio.

      Por exemplo, a string de correspondência *.example.com corresponde a a.example.com e a.b.c.example.com, mas não 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: ['*']
      

      No exemplo anterior, o Cloud NGFW permite o tráfego para os subdomínios de example.com, mas nega o restante do tráfego de saída.

    • Um asterisco (*) antes de um rótulo indica o domínio e todos os subdomínios.

      Por exemplo, a string de correspondência *example.com corresponde 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: ['*']
      

      No exemplo anterior, o Cloud NGFW permite o tráfego para example.com e os subdomínios de example.com, mas nega o restante do tráfego de saída.

    • Um asterisco (*) antes de uma extensão de domínio (como .com) indica todos os domínios (e subdomínios) que usam a extensão.

      Por exemplo, a string de correspondência *.com corresponde a example.com e examplepetstore.com e todos os subdomínios deles.

      O snippet de código a seguir demonstra como permitir todos os domínios (e subdomínios) que terminam em .com, mas negar o restante do tráfego.

      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: ['*']
      

      O snippet de código a seguir demonstra como negar todos os subdomínios de example.com e examplepetstore.com, mas permitir esses domínios e todos os outros domínios (e subdomínios) que terminam em .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: ['*']
      
    • O Cloud NGFW não interpreta o asterisco (*) como um caractere curinga de expressão regular.

      Por exemplo, *example.test não corresponde a newexample.test ou a.newexample.test. Ela só corresponde a example.test e aos subdomínios de example.test.

    • Um único asterisco (*) sem outros caracteres indica uma correspondência para todas as solicitações.

      Por exemplo, a string de correspondência no filtro de permissão explícita de URL de menor prioridade contém apenas um asterisco (*) e tem uma ação ALLOW que substitui a ação padrão de DENY. Isso acontece porque o filtro de URL de negação implícita aplica o DENY padrão a todas as solicitações que não correspondem a filtros de URL de maior prioridade.

      O filtro de URL de maior prioridade, que é um ALLOW explícito ou um DENY implícito, determina se o Cloud NGFW permite ou nega conexões quando não tem informações de SNI ou domínio. Isso pode acontecer com tráfego HTTP não criptografado ou quando a inspeção TLS está desativada para cabeçalhos de mensagens criptografadas.

      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: ['*']
      

Limitações

  • As strings de correspondência representam domínios ou subdomínios.
  • As strings de correspondência não são compatíveis com o caractere de barra (/). Por exemplo: www.example.com/images.
  • As strings de correspondência não são compatíveis com esquemas ou nomes de protocolo. Por exemplo, http://www.example.com.
  • As strings de correspondência não aceitam números de porta. Por exemplo, www.example.com:80.
  • As strings de correspondência aceitam apenas letras ASCII, números e caracteres especiais: hífen (-), ponto (.) e asterisco (*).

Use o Punycode para converter nomes de domínio que contenham caracteres diferentes de letras ASCII, números, hifens (-), pontos (.) ou asteriscos (*). O Punycode é um padrão de codificação que transforma nomes de domínio Unicode em um formato compatível com ASCII.

  • Se você tiver dois ou mais rótulos, use pontos (.) para separá-los. Um rótulo pode conter um ou mais hífens (-), mas não pode começar ou terminar com um hífen. Cada rótulo pode incluir no máximo 63 caracteres.

  • Um filtro de URL não aceita o uso de um ponto no início de um nome de domínio ou pontos consecutivos em uma string de correspondência. Um filtro de URL permite pontos finais, mas o Cloud NGFW os remove antes de salvar um filtro de URL.

  • O Cloud NGFW converte as strings de correspondência em letras minúsculas antes de salvar o filtro de URL. O Cloud NGFW não realiza nenhuma outra normalização.

  • Cada nome de domínio pode incluir no máximo 255 caracteres.

Filtros de URL para subdomínios de vários níveis

É possível usar filtros de URL com diferentes prioridades e ações para controlar o tráfego de rede para subdomínios de vários níveis. Você também pode usar o caractere curinga (*) em strings de correspondência para especificar domínios e subdomínios.

Por exemplo, considere um cenário em que você implementa o seguinte comportamento:

  • Permitir a.b.c.example.com
  • Negar *.b.c.example.com (negar todos os outros subdomínios de b.c.example.com)
  • Permitir *.c.example.com (permitir todos os outros subdomínios de c.example.com)
  • Negar *.example.com (negar todos os outros subdomínios de example.com)
  • Permitir example.com
  • Permitir todo o restante

O snippet de código a seguir implementa esse cenário:

  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: ['*']
  

Listar e conferir detalhes de um perfil de segurança de filtragem de URL

É possível listar os perfis de segurança de filtragem de URL criados em uma organização ou um projeto. Também é possível conferir os detalhes do perfil, como tipo, finalidade e descrição.

Console

  1. No console do Google Cloud , acesse a página Perfis de segurança.

    Acessar Perfis de segurança

  2. Selecione a guia Perfis de segurança para ver uma lista de perfis de segurança configurados.

  3. Para filtrar perfis de segurança de filtragem de URL, no campo Filtro, especifique Tipo de perfil como Filtragem de URL.

    A guia mostra uma lista de perfis de segurança de filtragem de URL.

  4. Para conferir os detalhes do perfil, clique em um perfil de segurança de filtragem de URL.

gcloud

Para listar todos os perfis de segurança de filtragem de URL, use o 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

Para ver detalhes de um perfil de segurança de filtragem de URL, execute o 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

Substitua:

  • NAME: o nome do perfil de segurança.

    Se você não usar o formato de identificador de URL exclusivo para o nome, especifique a organização ou o nome do projeto e o local.

  • ORGANIZATION_ID: o ID da organização em que o perfil de segurança existe.

  • PROJECT_ID: o ID do projeto em que o perfil de segurança existe.

  • QUOTA_PROJECT_ID: o ID do projeto de cota. Use essa flag apenas para perfis de segurança no nível da organização.

Excluir um perfil de segurança de filtragem de URL

É possível excluir um perfil de segurança de filtragem de URL especificando o nome, o local e a organização ou o projeto dele. Se um perfil de segurança for referenciado por um grupo de perfis de segurança, não será possível excluí-lo.

Para excluir um perfil de segurança de filtragem de URL, use o console do Google Cloud ou a CLI gcloud. No entanto, se um perfil de segurança for referenciado por um grupo de perfis de segurança, ele não poderá ser excluído.

Console

  1. No console do Google Cloud , acesse a página Perfis de segurança.

    Acessar Perfis de segurança

  2. Selecione a guia Perfis de segurança. A guia mostra uma lista de perfis de segurança configurados.

  3. Selecione o perfil de segurança que você quer excluir e clique em Excluir.

  4. Clique em Excluir novamente para confirmar.

gcloud

Para excluir um perfil de segurança de filtragem de URL, use o 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

Substitua:

  • NAME: o nome do perfil de segurança.

    Se você não especificar o nome no formato de identificador de URL exclusivo, especifique a organização ou o nome do projeto e o local.

  • ORGANIZATION_ID: o ID da organização. Use esta flag para um perfil de segurança no nível da organização.

  • PROJECT_ID: o ID do projeto. Use esta flag para um perfil de segurança para envolvidos no projeto.

  • QUOTA_PROJECT_ID: o ID do projeto de cota. Use essa flag apenas para perfis de segurança no nível da organização.

Importar um perfil de segurança de filtragem de URL

É possível importar um perfil de segurança de filtragem de URL (criado de forma personalizada ou exportado anteriormente) de um arquivo YAML. Ao importar um perfil de segurança de filtragem de URL, se já existir um perfil com o mesmo nome, o Cloud NGFW vai atualizar o perfil atual.

Para importar um perfil de segurança de filtragem de URL de um arquivo YAML, use a CLI gcloud. Se já existir um perfil com o mesmo nome quando você o importar, o Cloud NGFW vai atualizar esse perfil.

gcloud

Para importar um perfil de segurança de filtragem de URL de um arquivo YAML, use o 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

Substitua:

  • NAME: o nome do perfil de segurança do tipo url-filtering que você quer importar. É possível especificar o nome como uma string ou um identificador de URL exclusivo.

  • ORGANIZATION_ID: o ID da organização. Use esta flag para um perfil de segurança no nível da organização.

  • PROJECT_ID: o ID do projeto; Use esta flag para um perfil de segurança para envolvidos no projeto.

  • FILE_NAME: o caminho para o arquivo YAML que contém os dados de exportação da configuração.

Exportar um perfil de segurança de filtragem de URL

É possível exportar um perfil de segurança de filtragem de URL para um arquivo YAML. Por exemplo, em vez de usar a interface do usuário para modificar um perfil de segurança grande, é possível usar essa funcionalidade para exportar, modificar rapidamente e importar de volta o perfil.

Para exportar um perfil de segurança de filtragem de URL para um arquivo YAML, use a CLI gcloud.

gcloud

Para exportar um perfil de segurança de filtragem de URL para um arquivo YAML, use o 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

Substitua:

  • NAME: o nome do perfil de segurança do tipo url-filtering que você quer exportar. É possível especificar o nome como uma string ou um identificador de URL exclusivo.

  • ORGANIZATION_ID: o ID da organização. Use esta flag para um perfil de segurança no nível da organização.

  • PROJECT_ID: o ID do projeto; Use essa flag para um perfil de segurança para envolvidos no projeto.

  • FILE_NAME: o caminho para o arquivo YAML em que o Cloud NGFW vai exportar a configuração.

A seguir