Les profils de sécurité de filtrage des URL sont des structures de règles de couche 7 qui utilisent des filtres d'URL pour définir des règles de sécurité pour les points de terminaison de pare-feu. Ces profils évaluent les noms de domaine dans le trafic réseau pour appliquer des actions d'autorisation ou de refus en fonction de chaînes de correspondance et de priorités spécifiques.
Cette page explique comment créer et gérer des profils de sécurité de filtrage d'URL.
Avant de commencer
- Vous devez activer l'API Network Security dans votre projet.
- Installez la Google Cloud CLI si vous souhaitez exécuter les exemples de ligne de commande
gcloudde ce guide.
Rôles
Pour obtenir les autorisations nécessaires pour créer, afficher, mettre à jour ou supprimer des profils de sécurité, demandez à votre administrateur de vous accorder les rôles IAM (Identity and Access Management) nécessaires sur votre organisation. Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.
Créer un profil de sécurité de filtrage des URL
Pour créer un profil de sécurité url-filtering, spécifiez un nom sous forme de chaîne ou d'identifiant d'URL unique.
Console
Dans la console Google Cloud , accédez à la page Profils de sécurité.
Dans le menu de sélection du projet, sélectionnez l'organisation ou le projet dans lequel vous souhaitez créer le profil de sécurité.
Sélectionnez l'onglet Profils de sécurité.
Cliquez sur Créer un profil.
Saisissez un nom dans le champ Nom.
Facultatif : saisissez une description dans le champ Description.
Pour créer un profil de sécurité Cloud Next Generation Firewall Enterprise, sélectionnez Cloud NGFW Enterprise dans la section Objectif.
Pour créer un profil de sécurité de filtrage des URL, sélectionnez Filtrage des URL dans la section Type.
Dans la section Filtres d'URL, cliquez sur le bouton Créer un filtre d'URL.
Dans le volet Créer un filtre d'URL, spécifiez les détails suivants :
- Priorité : spécifiez la priorité du filtre d'URL.
- Action : spécifiez l'action que Cloud NGFW effectue sur le trafic.
- Autoriser : autorise les connexions correspondant à une URL.
- Refuser : refuse les connexions correspondant à une URL.
- Liste d'URL : spécifiez une liste d'URL ou de chaînes de correspondance. Chaque entrée d'URL ou de chaîne de correspondance doit apparaître sur une ligne distincte, sans espaces ni délimiteurs. Chaque entrée ne peut être constituée que d'un domaine. Pour en savoir plus sur les chaînes de correspondance, consultez Chaînes de correspondance pour les URL.
Cliquez sur Créer.
gcloud
Créez un fichier YAML avec le contenu suivant :
name: NAME type: url-filtering urlFilteringProfile: urlFilters: - filteringAction: ACTION priority: PRIORITY urls: [URL,URL,...]Remplacez les éléments suivants :
NAME: nom du profil de sécurité de filtrage des URL. Vous pouvez spécifier le nom en tant que chaîne ou en tant qu'identifiant d'URL unique.ACTION: spécifiez l'une des actions suivantes :ALLOW: autorise les connexions correspondant à une URL.DENY: refuse les connexions correspondant à une URL.
PRIORITY: priorité d'un filtre d'URL, comprise entre 0 et 2147483647.URLs: liste de chaînes de correspondance séparées par des virgules. Par exemple,www.example.cometwww.examplepetstore.com.
Pour créer le profil de sécurité de filtrage d'URL, exécutez la commande
gcloud network-security security-profiles import:gcloud network-security security-profiles import NAME \ --source FILE_NAME \ [ --organization ORGANIZATION_ID | --project PROJECT_ID ] \ --location global
Vous pouvez également créer un profil de sécurité de filtrage d'URL sans fichier YAML à l'aide de la commande
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 globalRemplacez les éléments suivants :
NAME: nom du profil de sécurité de filtrage d'URL.Si vous n'utilisez pas le format d'identifiant d'URL unique pour le nom, vous devez spécifier le nom de l'organisation ou du projet, ainsi que l'emplacement.
FILE_NAME: nom du fichier YAML. Exemple :url-filtering-sp.yaml.ORGANIZATION_ID: ID de l'organisation. Utilisez cet indicateur pour créer un profil de sécurité au niveau de l'organisation.PROJECT_ID: ID du projet. Utilisez cet indicateur pour créer un profil de sécurité au niveau du projet.DESCRIPTION: description facultative pour le profil de sécurité du filtrage d'URL.
Par exemple, l'extrait de code suivant montre un exemple de profil de sécurité de filtrage d'URL qui autorise les requêtes vers
www.example.cometwww.examplepetstore.com, mais refuse les requêtes vers tous les autres domaines :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: ['*']
Filtre d'URL avec refus implicite
Le profil de sécurité de filtrage des URL inclut toujours un filtre d'URL par défaut avec la priorité la plus basse (2147483647), qui refuse toutes les connexions ne correspondant pas aux filtres d'URL de priorité plus élevée. L'extrait de code suivant présente un exemple de filtre d'URL de refus implicite :
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: ['*']
Vous pouvez voir le filtre d'URL de refus implicite lorsque vous consultez ou exportez un profil de sécurité de filtrage d'URL. Vous ne pouvez pas modifier ni supprimer le filtre implicite.
Par exemple, si vous souhaitez modifier l'action par défaut d'un profil de DENY (appliquée par un filtre implicite) à ALLOW, vous devez ajouter un filtre explicite que Cloud NGFW traite avant le filtre implicite.
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: ['*']
Chaînes de correspondance pour les URL
Les chaînes de correspondance sont les valeurs que vous spécifiez dans le champ urls d'un filtre d'URL. Vous pouvez spécifier une ou plusieurs chaînes de correspondance dans un filtre d'URL.
Caractères génériques
Chaque chaîne de correspondance dans une liste d'URL accepte les caractères génériques (*) de manière limitée.
- Chaque chaîne de correspondance ne peut accepter qu'un seul astérisque (*), qui doit être le premier ou le seul caractère.
L'astérisque (*) peut avoir les interprétations suivantes :
Un astérisque (*) avant un point (.) indique tous les sous-domaines du domaine.
Par exemple, la chaîne de correspondance
*.example.comcorrespond àa.example.cometa.b.c.example.com, mais pas à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: ['*']Dans l'exemple précédent, Cloud NGFW autorise le trafic vers les sous-domaines de
example.com, mais refuse le reste du trafic sortant.Un astérisque (*) avant une étiquette indique le domaine et tous les sous-domaines.
Par exemple, la chaîne de correspondance
*example.comcorrespond àa.example.com,a.b.c.example.cometexample.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: ['*']Dans l'exemple précédent, Cloud NGFW autorise le trafic vers
example.comainsi que les sous-domaines deexample.com, mais refuse le reste du trafic sortant.Un astérisque (*) avant une extension de domaine (telle que
.com) indique tous les domaines (et leurs sous-domaines) qui utilisent cette extension.Par exemple, la chaîne de correspondance
*.comcorrespond àexample.cometexamplepetstore.com, ainsi qu'à tous leurs sous-domaines.L'extrait de code suivant montre comment autoriser tous les domaines (et leurs sous-domaines) se terminant par
.com, mais refuser le trafic restant.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: ['*']L'extrait de code suivant montre comment refuser tous les sous-domaines de
example.cometexamplepetstore.com, mais autoriser ces domaines et tous les autres domaines (et leurs sous-domaines) se terminant par.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 n'interprète pas l'astérisque (*) comme un caractère générique d'expression régulière.
Par exemple,
*example.testne correspond pas ànewexample.testni àa.newexample.test. Il ne correspond qu'àexample.testet aux sous-domaines deexample.test.Un astérisque unique (*) sans aucun autre caractère indique une correspondance pour toutes les requêtes.
Par exemple, la chaîne de correspondance dans le filtre d'URL d'autorisation explicite de priorité la plus faible ne contient qu'un astérisque (*) et comporte une action
ALLOWqui remplace l'action par défautDENY. Cela se produit, car le filtre d'URL de refus implicite applique la valeur par défautDENYà toutes les requêtes qui ne correspondent pas aux filtres d'URL de priorité supérieure.Le filtre d'URL de priorité la plus élevée (
ALLOWexplicite ouDENYimplicite) détermine si Cloud NGFW autorise ou refuse les connexions lorsqu'il manque des informations SNI ou de domaine. Cela peut se produire avec le trafic HTTP non chiffré ou lorsque l'inspection TLS est désactivée pour les en-têtes de messages chiffrés.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: ['*']
Limites
- Les chaînes de correspondance représentent des domaines ou des sous-domaines.
- Les chaînes de correspondance ne sont pas compatibles avec la barre oblique (/). Par exemple :
www.example.com/images. - Les chaînes de correspondance ne sont pas compatibles avec les schémas ni les noms de protocoles. Exemple :
http://www.example.com. - Les chaînes de correspondance ne sont pas compatibles avec les numéros de port. Exemple :
www.example.com:80. - Les chaînes de correspondance n'acceptent que les lettres ASCII, les chiffres et les caractères spéciaux : trait d'union (-), point (.) et astérisque (*).
Vous devez utiliser Punycode pour convertir les noms de domaine qui contiennent des caractères autres que des lettres ASCII, des chiffres, des traits d'union (-), des points (.) ou des astérisques (*). Punycode est une norme d'encodage qui transforme les noms de domaine Unicode en un format compatible avec ASCII.
Si vous avez plusieurs libellés, séparez-les par des points (.). Une étiquette peut contenir un ou plusieurs traits d'union (-), mais ne doit pas commencer ni se terminer par un trait d'union. Chaque étiquette peut inclure un maximum de 63 caractères.
Un filtre d'URL n'accepte pas les points au début d'un nom de domaine ni les points consécutifs dans une chaîne de correspondance. Un filtre d'URL autorise les points finaux, mais Cloud NGFW les supprime avant d'enregistrer un filtre d'URL.
Cloud NGFW convertit les chaînes de correspondance en minuscules avant d'enregistrer le filtre d'URL. Cloud NGFW n'effectue aucune autre normalisation.
Chaque nom de domaine peut comporter 255 caractères au maximum.
Filtres d'URL pour les sous-domaines multiniveaux
Vous pouvez utiliser des filtres d'URL avec différentes priorités et actions pour contrôler le trafic réseau vers des sous-domaines à plusieurs niveaux. Vous pouvez également utiliser le caractère générique (*) dans les chaînes de correspondance pour spécifier des domaines et des sous-domaines.
Prenons l'exemple d'un scénario dans lequel vous implémentez le comportement suivant :
- Autoriser
a.b.c.example.com - Refuser
*.b.c.example.com(refuser tous les autres sous-domaines deb.c.example.com) - Autoriser
*.c.example.com(autoriser tous les autres sous-domaines dec.example.com) - Refuser
*.example.com(refuser tous les autres sous-domaines deexample.com) - Autoriser
example.com - Autoriser tout le reste
L'extrait de code suivant implémente ce scénario :
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: ['*']
Lister et afficher les détails d'un profil de sécurité de filtrage des URL
Vous pouvez lister les profils de sécurité de filtrage d'URL créés dans une organisation ou un projet. Vous pouvez également afficher les détails du profil, tels que le type, l'objectif et la description.
Console
Dans la console Google Cloud , accédez à la page Profils de sécurité.
Sélectionnez l'onglet Profils de sécurité pour afficher la liste des profils de sécurité configurés.
Pour filtrer les profils de sécurité de filtrage des URL, spécifiez Type de profil comme Filtrage des URL dans le champ Filtre.
L'onglet affiche une liste des profils de sécurité de filtrage d'URL.
Pour afficher les détails d'un profil, cliquez sur un profil de sécurité Filtrage d'URL.
gcloud
Pour répertorier tous les profils de sécurité de filtrage d'URL, exécutez la commande 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
Pour afficher les détails d'un profil de sécurité de filtrage d'URL, exécutez la commande 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
Remplacez les éléments suivants :
NAME: nom du profil de sécurité.Si vous n'utilisez pas le format d'identifiant d'URL unique pour le nom, vous devez spécifier le nom de l'organisation ou du projet, ainsi que l'emplacement.
ORGANIZATION_ID: ID de l'organisation dans laquelle le profil de sécurité existe.PROJECT_ID: ID du projet dans lequel existe le profil de sécurité.QUOTA_PROJECT_ID: ID de votre projet de quota. N'utilisez ce flag que pour les profils de sécurité au niveau de l'organisation.
Supprimer un profil de sécurité de filtrage des URL
Vous pouvez supprimer un profil de sécurité de filtrage d'URL en spécifiant son nom, son emplacement, son organisation ou son projet. Si un profil de sécurité est référencé par un groupe de profils de sécurité, vous ne pouvez pas le supprimer.
Pour supprimer un profil de sécurité de filtrage des URL, utilisez la console Google Cloud ou gcloud CLI. Toutefois, si un profil de sécurité est référencé par un groupe de profils de sécurité, il ne peut pas être supprimé.
Console
Dans la console Google Cloud , accédez à la page Profils de sécurité.
Sélectionnez l'onglet Profils de sécurité. L'onglet affiche une liste des profils de sécurité configurés.
Sélectionnez le profil de sécurité que vous souhaitez supprimer, puis cliquez sur Supprimer.
Cliquez à nouveau sur Supprimer pour confirmer votre choix.
gcloud
Pour supprimer un profil de sécurité de filtrage d'URL, exécutez la commande 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
Remplacez les éléments suivants :
NAME: nom du profil de sécurité.Si vous ne spécifiez pas le nom au format d'identifiant d'URL unique, vous devez spécifier l'organisation ou le nom du projet, ainsi que l'emplacement.
ORGANIZATION_ID: ID de l'organisation. Utilisez cet indicateur pour un profil de sécurité au niveau de l'organisation.PROJECT_ID: ID de votre projet. Utilisez cet indicateur pour un profil de sécurité au niveau du projet.QUOTA_PROJECT_ID: ID de votre projet de quota. N'utilisez ce flag que pour les profils de sécurité au niveau de l'organisation.
Importer un profil de sécurité de filtrage des URL
Vous pouvez importer un profil de sécurité de filtrage d'URL (créé sur mesure ou exporté précédemment) à partir d'un fichier YAML. Lorsque vous importez un profil de sécurité de filtrage des URL, si un profil portant le même nom existe déjà, Cloud NGFW met à jour le profil existant.
Pour importer un profil de sécurité de filtrage des URL à partir d'un fichier YAML, utilisez la gcloud CLI. Si un profil portant le même nom existe déjà lorsque vous l'importez, Cloud NGFW le met à jour.
gcloud
Pour importer un profil de sécurité de filtrage des URL à partir d'un fichier YAML, utilisez la commande gcloud network-security security-profiles import :
gcloud network-security security-profiles import NAME \
[ --organization ORGANIZATION_ID | --project PROJECT_ID ] \
--location global \
--source FILE_NAME
Remplacez les éléments suivants :
NAME: nom du profil de sécurité de typeurl-filteringque vous souhaitez importer. Vous pouvez spécifier le nom en tant que chaîne ou en tant qu'identifiant d'URL unique.ORGANIZATION_ID: ID de l'organisation. Utilisez cet indicateur pour un profil de sécurité au niveau de l'organisation.PROJECT_ID: ID du projet. Utilisez cet indicateur pour un profil de sécurité au niveau du projet.FILE_NAME: chemin d'accès au fichier YAML contenant les données de configuration exportées.
Exporter un profil de sécurité de filtrage des URL
Vous pouvez exporter un profil de sécurité de filtrage d'URL vers un fichier YAML. Par exemple, au lieu d'utiliser l'interface utilisateur pour modifier un profil de sécurité volumineux, vous pouvez utiliser cette fonctionnalité pour exporter le profil de sécurité, le modifier rapidement et l'importer à nouveau.
Pour exporter un profil de sécurité de filtrage des URL vers un fichier YAML, utilisez la gcloud CLI.
gcloud
Pour exporter un profil de sécurité de filtrage d'URL vers un fichier YAML, utilisez la commande gcloud network-security security-profiles export :
gcloud network-security security-profiles export NAME \
[ --organization ORGANIZATION_ID | --project PROJECT_ID ] \
--location global \
--destination FILE_NAME
Remplacez les éléments suivants :
NAME: nom du profil de sécurité de typeurl-filteringque vous souhaitez exporter. Vous pouvez spécifier le nom sous forme de chaîne ou d'identifiant d'URL unique.ORGANIZATION_ID: ID de l'organisation. Utilisez cet indicateur pour un profil de sécurité au niveau de l'organisation.PROJECT_ID: ID du projet. Utilisez cet indicateur pour un profil de sécurité au niveau du projet.FILE_NAME: chemin d'accès au fichier YAML dans lequel Cloud NGFW exportera la configuration.
Étapes suivantes
- Créer et gérer des groupes de profils de sécurité
- Créer et gérer des points de terminaison de pare-feu