Los perfiles de seguridad de filtrado de URLs son estructuras de políticas de capa 7 que usan filtros de URLs para definir políticas de seguridad para los extremos de firewall. Estos perfiles evalúan los nombres de dominio en el tráfico de red para aplicar acciones de permitir o denegar según cadenas de coincidencia y prioridades específicas.
En esta página, se explica cómo crear y administrar perfiles de seguridad de filtrado de URLs.
Antes de comenzar
- Debes habilitar la API de Network Security en tu proyecto.
- Instala la Google Cloud CLI si deseas ejecutar los ejemplos de la línea de comandos de
gcloudde esta guía.
Funciones
Para obtener los permisos que necesitas a fin de crear, ver, actualizar o borrar perfiles de seguridad, pídele a tu administrador que te otorgue los roles de Identity and Access Management (IAM) necesarios en tu organización. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso.
Crea un perfil de seguridad de filtrado de URL
Para crear un perfil de seguridad url-filtering, especifica un nombre como una cadena o como un identificador de URL único.
Console
En la consola de Google Cloud , ve a la página Perfiles de seguridad.
En el menú de selección de proyectos, selecciona tu organización o el proyecto en el que deseas crear el perfil de seguridad.
Selecciona la pestaña Perfiles de seguridad.
Haga clic en Crear perfil.
Escribe un nombre en el campo Nombre.
Escribe una descripción en el campo Descripción (opcional).
Para crear un perfil de seguridad de Cloud Next Generation Firewall Enterprise, en la sección Propósito, selecciona Cloud NGFW Enterprise.
Para crear un perfil de seguridad de filtrado de URLs, en la sección Tipo, selecciona Filtrado de URLs.
En la sección Filtros de URL, haz clic en el botón Crear filtro de URL.
En el panel Crear un filtro de URL, especifica los siguientes detalles:
- Prioridad: Especifica la prioridad del filtro de URL.
- Acción: Especifica la acción que Cloud NGFW realiza en el tráfico.
- Permitir: Permite las conexiones que coinciden con una URL.
- Rechazar: Rechaza las conexiones que coinciden con una URL.
- Lista de URLs: Especifica una lista de URLs o cadenas de comparador. Cada entrada de URL o cadena de coincidencia debe aparecer en su propia línea, sin espacios ni delimitadores. Cada entrada puede consistir en un dominio solamente. Para obtener más información sobre las cadenas de coincidencia, consulta Cadenas de coincidencia para URLs.
Haz clic en Crear.
gcloud
Crea un archivo YAML con el siguiente contenido:
name: NAME type: url-filtering urlFilteringProfile: urlFilters: - filteringAction: ACTION priority: PRIORITY urls: [URL,URL,...]Reemplaza lo siguiente:
NAME: Es el nombre del perfil de seguridad de filtrado de URLs. Puedes especificar el nombre como una cadena o como un identificador de URL único.ACTION: Especifica una de las siguientes acciones:ALLOW: Permite las conexiones que coinciden con una URL.DENY: Rechaza las conexiones que coinciden con una URL.
PRIORITY: Es la prioridad de un filtro de URL, que va de 0 a 2147483647.URLs: Es una lista separada por comas de cadenas de coincidencia. Por ejemplo,www.example.comywww.examplepetstore.com.
Para crear el perfil de seguridad de filtrado de URL, ejecuta el 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, puedes crear un perfil de seguridad de filtrado de URL sin un archivo YAML con el 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 globalReemplaza lo siguiente:
NAME: Es el nombre del perfil de seguridad de filtrado de URL.Si no usas el formato de identificador de URL único para el nombre, debes especificar la organización o el nombre del proyecto, y la ubicación.
FILE_NAME: Es el nombre del archivo YAML. Por ejemplo,url-filtering-sp.yaml.ORGANIZATION_ID: El ID de la organización. Usa esta marca para crear un perfil de seguridad a nivel de la organización.PROJECT_ID: Es el ID del proyecto. Usa esta marca para crear un perfil de seguridad a nivel del proyecto.DESCRIPTION: Es una descripción opcional para el perfil de seguridad de filtrado de URL.
Por ejemplo, el siguiente fragmento de código muestra un ejemplo de un perfil de seguridad de filtrado de URLs que permite solicitudes a
www.example.comywww.examplepetstore.com, pero rechaza solicitudes a todos los demás dominios: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 rechazo implícito
El perfil de seguridad de filtrado de URLs siempre incluye un filtro de URL predeterminado con la prioridad más baja (2147483647) que rechaza todas las conexiones que no coinciden con los filtros de URL de mayor prioridad. En el siguiente fragmento de código, se muestra un ejemplo del filtro de URLs de rechazo implícito:
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: ['*']
Puedes ver el filtro de URL de denegación implícita cuando ves o exportas un perfil de seguridad de filtrado de URLs. No puedes modificar ni quitar el filtro implícito.
Por ejemplo, si deseas cambiar la acción predeterminada de un perfil de DENY (aplicada por un filtro implícito) a ALLOW, debes agregar un filtro explícito que Cloud NGFW procese antes del 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: ['*']
Cadenas de coincidencia para URLs
Las cadenas de coincidencia son los valores que especificas en el campo urls de un filtro de URL. Puedes especificar una o más cadenas de comparador dentro de un filtro de URL.
Comodines
Cada cadena de comparador en una lista de URLs admite un carácter comodín (*) de forma limitada.
- Cada cadena de comparador solo puede admitir un asterisco (*) de modo que el asterisco sea el primer o el único carácter.
El asterisco (*) puede tener las siguientes interpretaciones:
Un asterisco (*) antes de un punto (.) indica todos los subdominios del dominio.
Por ejemplo, la cadena de comparador
*.example.comcoincide cona.example.comya.b.c.example.com, pero no conexample.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: ['*']En el ejemplo anterior, Cloud NGFW permite el tráfico hacia los subdominios de
example.com, pero rechaza el resto del tráfico saliente.Un asterisco (*) antes de una etiqueta indica el dominio y todos los subdominios.
Por ejemplo, la cadena del comparador
*example.comcoincide cona.example.com,a.b.c.example.comyexample.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: ['*']En el ejemplo anterior, Cloud NGFW permite el tráfico hacia
example.comy los subdominios deexample.com, pero deniega el resto del tráfico saliente.Un asterisco (*) antes de una extensión de dominio (como
.com) indica todos los dominios (y sus subdominios) que usan la extensión de dominio.Por ejemplo, la cadena de comparador
*.comcoincide conexample.comyexamplepetstore.com, y todos sus subdominios.En el siguiente fragmento de código, se muestra cómo permitir todos los dominios (y sus subdominios) que terminan en
.com, pero rechazar el resto del tráfico.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: ['*']En el siguiente fragmento de código, se muestra cómo rechazar todos los subdominios de
example.comyexamplepetstore.com, pero permitir estos dominios y todos los demás dominios (y sus subdominios) que terminan en.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 no interpreta el asterisco (*) como un comodín de expresión regular.
Por ejemplo,
*example.testno coincide connewexample.testnia.newexample.test. Solo coincide conexample.testy los subdominios deexample.test.Un asterisco (*) sin otros caracteres indica una coincidencia para todas las solicitudes.
Por ejemplo, la cadena de comparador en el filtro de URL de permiso explícito de menor prioridad contiene solo un asterisco (*) y tiene una acción
ALLOWque anula la acción predeterminada deDENY. Esto sucede porque el filtro de URL de denegación implícita aplica elDENYpredeterminado para las solicitudes que no coinciden con los filtros de URL de mayor prioridad.El filtro de URL de mayor prioridad, que es un
ALLOWexplícito o unDENYimplícito, determina si Cloud NGFW permite o rechaza las conexiones cuando no tiene información de SNI o de dominio. Esto puede ocurrir con el tráfico HTTP sin encriptar o cuando la inspección de TLS está inhabilitada para los encabezados de mensajes encriptados.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: ['*']
Limitaciones
- Las cadenas de coincidencia representan dominios o subdominios.
- Las cadenas de comparador no admiten el carácter de barra diagonal (/). Por ejemplo:
www.example.com/images. - Las cadenas de comparador no admiten esquemas ni nombres de protocolos. Por ejemplo:
http://www.example.com. - Las cadenas de comparador no admiten números de puerto. Por ejemplo:
www.example.com:80. - Las cadenas de comparador solo admiten letras, números y caracteres especiales ASCII: guion (-), punto (.) y asterisco (*).
Debes usar Punycode para convertir los nombres de dominio que contengan caracteres distintos de letras, números, guiones (-), puntos (.) o asteriscos (*) ASCII. Punycode es un estándar de codificación que transforma los nombres de dominio Unicode en un formato compatible con ASCII.
Si tienes dos o más etiquetas, usa puntos (.) para separarlas. Una etiqueta puede contener uno o más guiones (-); sin embargo, no debe comenzar ni terminar con un guion. Cada etiqueta puede incluir un máximo de 63 caracteres.
Un filtro de URL no admite el uso de un punto al comienzo de un nombre de dominio ni puntos consecutivos dentro de una cadena de comparador. Un filtro de URL permite puntos finales, pero Cloud NGFW los quita antes de guardar un filtro de URL.
Cloud NGFW convierte las cadenas de comparador a minúsculas antes de guardar el filtro de URL. Cloud NGFW no realiza ninguna otra normalización.
Cada nombre de dominio puede incluir un máximo de 255 caracteres.
Filtros de URL para subdominios de varios niveles
Puedes usar filtros de URL con diferentes prioridades y acciones para controlar el tráfico de red hacia subdominios de varios niveles. También puedes usar el carácter comodín (*) en las cadenas de coincidencia para especificar dominios y subdominios.
Por ejemplo, considera una situación en la que implementas el siguiente comportamiento:
- Permitir
a.b.c.example.com - Denegar
*.b.c.example.com(rechazar todos los demás subdominios deb.c.example.com) - Permitir
*.c.example.com(permitir todos los demás subdominios dec.example.com) - Denegar
*.example.com(rechazar todos los demás subdominios deexample.com) - Permitir
example.com - Permitir todo lo demás
En el siguiente fragmento de código, se implementa esta situación:
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: ['*']
Cómo ver y enumerar los detalles de un perfil de seguridad de filtrado de URL
Puedes enumerar los perfiles de seguridad de filtrado de URL creados en una organización o un proyecto. También puedes ver los detalles del perfil, como el tipo, el propósito y la descripción.
Console
En la consola de Google Cloud , ve a la página Perfiles de seguridad.
Selecciona la pestaña Perfiles de seguridad para ver una lista de los perfiles de seguridad configurados.
Para filtrar los perfiles de seguridad de filtrado de URLs, en el campo Filtro, especifica Tipo de perfil como Filtrado de URLs.
En la pestaña, se muestra una lista de los perfiles de seguridad de filtrado de URL.
Para ver los detalles del perfil, haz clic en un perfil de seguridad de filtrado de URLs.
gcloud
Para enumerar todos los perfiles de seguridad de filtrado de URL, usa el 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 los detalles de un perfil de seguridad de filtrado de URL, ejecuta el 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
Reemplaza lo siguiente:
NAME: Es el nombre del perfil de seguridad.Si no usas el formato de identificador de URL único para el nombre, debes especificar la organización o el nombre del proyecto, y la ubicación.
ORGANIZATION_ID: Es el ID de la organización en la que existe el perfil de seguridad.PROJECT_ID: Es el ID del proyecto en el que existe el perfil de seguridad.QUOTA_PROJECT_ID: Es el ID de tu proyecto de cuota. Usa esta marca solo para los perfiles de seguridad a nivel de la organización.
Borra un perfil de seguridad de filtrado de URLs
Puedes borrar un perfil de seguridad de filtrado de URL si especificas su nombre, ubicación y organización o proyecto. Si un grupo de perfiles de seguridad hace referencia a un perfil de seguridad, no puedes borrarlo.
Para borrar un perfil de seguridad de filtrado de URLs, usa la consola de Google Cloud o gcloud CLI. Sin embargo, si un grupo de perfiles de seguridad hace referencia a un perfil de seguridad, ese perfil no se puede borrar.
Console
En la consola de Google Cloud , ve a la página Perfiles de seguridad.
Selecciona la pestaña Perfiles de seguridad. En la pestaña, se muestra una lista de los perfiles de seguridad configurados.
Selecciona el perfil de seguridad que deseas borrar y, luego, haz clic en Borrar.
Haga clic en Borrar nuevamente para confirmar.
gcloud
Para borrar un perfil de seguridad de filtrado de URL, usa el
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
Reemplaza lo siguiente:
NAME: Es el nombre del perfil de seguridad.Si no especificas el nombre en el formato de identificador de URL único, debes especificar la organización o el nombre del proyecto, y la ubicación.
ORGANIZATION_ID: El ID de la organización. Usa esta marca para un perfil de seguridad a nivel de la organización.PROJECT_ID: el ID de tu proyecto Usa esta marca para un perfil de seguridad a nivel del proyecto.QUOTA_PROJECT_ID: Es el ID de tu proyecto de cuota. Usa esta marca solo para los perfiles de seguridad a nivel de la organización.
Cómo importar un perfil de seguridad de filtrado de URLs
Puedes importar un perfil de seguridad de filtrado de URL (creado de forma personalizada o exportado anteriormente) desde un archivo YAML. Cuando se importa un perfil de seguridad de filtrado de URLs, si ya existe un perfil con el mismo nombre, Cloud NGFW actualiza el perfil existente.
Para importar un perfil de seguridad de filtrado de URLs desde un archivo YAML, usa gcloud CLI. Si ya existe un perfil con el mismo nombre cuando lo importas, Cloud NGFW actualiza ese perfil.
gcloud
Para importar un perfil de seguridad de filtrado de URLs desde un archivo YAML, usa el 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
Reemplaza lo siguiente:
NAME: Es el nombre del perfil de seguridad de tipourl-filteringque deseas importar. Puedes especificar el nombre como una cadena o como un identificador de URL único.ORGANIZATION_ID: El ID de la organización. Usa esta marca para un perfil de seguridad a nivel de la organización.PROJECT_ID: Es el ID del proyecto. Usa esta marca para un perfil de seguridad a nivel del proyecto.FILE_NAME: Es la ruta de acceso al archivo YAML que contiene los datos de exportación de la configuración.
Cómo exportar un perfil de seguridad de filtrado de URLs
Puedes exportar un perfil de seguridad de filtrado de URL a un archivo YAML. Por ejemplo, en lugar de usar la interfaz de usuario para modificar un perfil de seguridad grande, puedes usar esta función para exportar el perfil de seguridad, modificarlo rápidamente y volver a importarlo.
Para exportar un perfil de seguridad de filtrado de URLs a un archivo YAML, usa gcloud CLI.
gcloud
Para exportar un perfil de seguridad de filtrado de URLs a un archivo YAML, usa el 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
Reemplaza lo siguiente:
NAME: Es el nombre del perfil de seguridad de tipourl-filteringque deseas exportar. Puedes especificar el nombre como una cadena o como un identificador de URL único.ORGANIZATION_ID: El ID de la organización. Usa esta marca para un perfil de seguridad a nivel de la organización.PROJECT_ID: Es el ID del proyecto. Usa esta marca para un perfil de seguridad a nivel del proyecto.FILE_NAME: Es la ruta de acceso al archivo YAML en el que Cloud NGFW exportará la configuración.