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
- É necessário ativar a API Network Security no projeto.
- Instale a Google Cloud CLI se quiser executar os exemplos de linha de comando
gcloudneste guia.
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
No console do Google Cloud , acesse a página Perfis de segurança.
No menu do seletor de projetos, selecione a organização ou o projeto em que você quer criar o perfil de segurança.
Selecione a guia Perfis de segurança.
Clique em Criar perfil.
Digite um nome no campo Nome.
.Opcional: insira uma descrição no campo Descrição.
Para criar um perfil de segurança do Cloud Next Generation Firewall Enterprise, na seção Finalidade, selecione Cloud NGFW Enterprise.
Para criar um perfil de segurança de filtragem de URL, na seção Tipo, selecione Filtragem de URL.
Na seção Filtros de URL, clique no botão Criar filtro de URL.
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.
Clique em Criar.
gcloud
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 URLDENY: 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.comewww.examplepetstore.com.
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 globalSubstitua:
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.comewww.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.comcorresponde aa.example.comea.b.c.example.com, mas não aexample.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.comcorresponde aa.example.com,a.b.c.example.comeexample.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.come os subdomínios deexample.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
*.comcorresponde aexample.comeexamplepetstore.come 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.comeexamplepetstore.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.testnão corresponde anewexample.testoua.newexample.test. Ela só corresponde aexample.teste aos subdomínios deexample.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
ALLOWque substitui a ação padrão deDENY. Isso acontece porque o filtro de URL de negação implícita aplica oDENYpadrã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
ALLOWexplícito ou umDENYimplí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 deb.c.example.com) - Permitir
*.c.example.com(permitir todos os outros subdomínios dec.example.com) - Negar
*.example.com(negar todos os outros subdomínios deexample.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
No console do Google Cloud , acesse a página Perfis de segurança.
Selecione a guia Perfis de segurança para ver uma lista de perfis de segurança configurados.
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.
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
No console do Google Cloud , acesse a página Perfis de segurança.
Selecione a guia Perfis de segurança. A guia mostra uma lista de perfis de segurança configurados.
Selecione o perfil de segurança que você quer excluir e clique em Excluir.
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 tipourl-filteringque 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 tipourl-filteringque 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.