Déploiement d'ensembles de règles gérés
Vous pouvez déployer des ensembles de règles gérées au niveau de la zone ou de l'instance à l'aide de la CLI, de l'API ou de Terraform.
Vous pouvez déployer un ensemble de règles gérées avec un comportement personnalisé (modifications exécutées en plus de la configuration par défaut) en le remplaçant. Pour plus d'informations, voir Remplacer des ensembles de règles gérés.
Flux de travaux de déploiement
Utilisez le flux de travaux suivant pour déployer un ensemble de règles géré dans une phase au niveau de la zone:
- Obtenez votre ID de zone.
- Exécutez l'opération Répertorier les ensembles de règles pour obtenir les ensembles de règles disponibles.
- Trouvez l'ID du jeu de règles géré que vous souhaitez déployer.
- Identifiez la phase dans laquelle vous souhaitez déployer l'ensemble de règles géré. Assurez-vous que l'ensemble de règles géré appartient à la même phase que celle dans laquelle vous souhaitez le déployer.
- Ajouter une règle à l'ensemble de règles de point d'entrée de phase au niveau de la zone qui exécute l'ensemble de règles géré.
Déployer des ensembles de règles gérés dans la console
Pour déployer des jeux de règles gérés dans la console CIS, procédez comme suit :
-
Dans la console CIS, naviguez jusqu'à la section Sécurité.
-
Sélectionnez l'onglet WAF.
-
Cliquez sur Ajouter une exception pour ouvrir le panneau latéral Ajouter une exception.
-
Saisissez un nom pour votre exception de règles gérées.
-
Définissez la condition de correspondance en construisant une expression :
- Choisissez le champ de la demande, sélectionnez un opérateur et fournissez une valeur.
- Vous pouvez également utiliser l'Expression Builder pour écrire manuellement des expressions
- Combinez plusieurs conditions à l'aide des opérateurs And et Or pour créer une logique complexe.
-
Choisissez d'enregistrer ou non les demandes qui correspondent à l'expression.
-
Décider de la manière dont l'ensemble de règles doit se comporter pour les demandes correspondantes :
-
Ignorer toutes les règles restantes, ou
-
Ignorer des règles spécifiques d'un jeu de règles géré
Si vous choisissez d'ignorer des règles spécifiques, cliquez sur Parcourir les règles, sélectionnez un jeu de règles, puis les règles spécifiques à ignorer.
-
-
Cliquez sur Déployer pour activer la configuration.
Après le déploiement, vous pouvez revenir à tout moment pour modifier la configuration de votre jeu de règles géré.
Déploiement d'ensembles de règles gérées à partir de l'interface de ligne de commande
Vous pouvez déployer des ensembles de règles gérés à partir de l'interface de ligne de commande.
Répertorier les ensembles de règles gérés à partir de l'interface de ligne de commande
Pour dresser la liste de tous les jeux de règles gérés par zone à partir de l'interface CLI, procédez comme suit :
-
Configurez votre environnement d'interface de ligne de commande.
-
Connectez-vous à votre compte depuis l'interface CLI. Une fois le mot de passe saisi, le système vous invite à indiquer le compte et la région que vous souhaitez utiliser :
ibmcloud login --sso -
Exécutez la commande suivante pour créer une règle personnalisée :
ibmcloud cis managed-waf rulesets DNS_DOMAIN_ID [-i, --instance INSTANCE] [--output FORMAT]Options de commande
DNS_DOMAIN_ID- L'ID du domaine.
-i, --instance- Nom ou ID de l'instance.
--output- Spécifie le format de sortie; seul le format JSON est pris en charge.
Mise à jour du jeu de règles déployé à partir de l'interface de ligne de commande
Pour mettre à jour un jeu de règles déployé à partir de l'interface de ligne de commande, procédez comme suit :
-
Configurez votre environnement d'interface de ligne de commande.
-
Connectez-vous à votre compte depuis l'interface CLI. Une fois le mot de passe saisi, le système vous invite à indiquer le compte et la région que vous souhaitez utiliser :
ibmcloud login --sso -
Exécutez la commande suivante pour créer une règle personnalisée :
ibmcloud cis managed-waf deployment-add-ruleset DNS_DOMAIN_ID RULESET_ID [--match EXPRESSION] [--enabled true|false] [--override-action ACTION] [--override-status STATUS] [--paranoia-level LEVEL] [--override-rules RULE] [-i, --instance INSTANCE] [--output FORMAT]Options de commande
DNS_DOMAIN_ID- L'ID du domaine.
--match- Les conditions qui doivent être remplies pour que la règle s'applique. Voir Utilisation de champs, de fonctions et d'expressions pour une liste de valeurs à faire correspondre.
--enabled- Indique si la règle est active. La valeur par défaut est
true. --overide-action- Action du jeu de règles de toute redéfinition. Les valeurs valables sont
managed_challenge,block,js_challenge,log,challenge. --paranoia-level- Le niveau de paranoïa de l'OWASP. Les valeurs valides sont
PL1,PL2,PL3,PL4. Cette valeur n'est disponible que pour le siteCIS OWASP Core Ruleset. override-rules- Options pour les règles des substitutions. Par exemple,
--override-rules rule=RULE_ID,action=ACTION,enabled=STATUS. -i, --instance- Nom ou ID de l'instance.
--output- Spécifie le format de sortie; seul le format JSON est pris en charge.
Exemple de commande
Cet exemple montre comment déployer le jeu de règles efb7b8c949ac4650a09736fc376e9aee et comment remplacer la règle présente dans le jeu de règles. Il s'agit également de règles dérogatoires avec la catégorie wordpress.
ibmcloud cis managed-waf deployment-add-ruleset $domain efb7b8c949ac4650a09736fc376e9aee --match "(http.cookie eq \"example.com/contact?page=1234\")" --action execute --enabled false --override-action block --override-status false --override-rules rule=5de7edfa648c4d6891dc3e7f84534ffa,action=log,enabled=true --override-rules action=managed_challenge,rule=e3a567afc347477d9702d9047e97d760
Déploiement d'ensembles de règles gérés avec l'API
Vous pouvez déployer des ensembles de règles gérés à l'aide de l'API.
Obtenir le point d'entrée des règles personnalisées pour l'API
Toutes les opérations de l'API sur les règles personnalisées nécessitent une adresse RULESET_ID de l'ensemble de règles du point d'entrée pour la phase des règles personnalisées. Cet ensemble de règles de point d'entrée peut déjà
exister ou doit être créé s'il n'existe pas.
Procédez comme suit pour obtenir le jeu de règles du point d'entrée personnalisé :
- Configurez l'environnement de votre API avec les variables appropriées.
- Stockez les valeurs suivantes dans les variables destinées à être utilisées dans la commande d'API :
CRN: Le nom complet de la ressource cloud (CRN) de l'instance de service, codé sur URL.
ZONE_ID: L'ID de domaine.
- Lorsque toutes les variables sont initiées, l'ensemble de règles du point d'entrée est obtenu :
curl -X GET "https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets/phases/http_request_firewall_managed/entrypoint" \
--header "X-Auth-User-Token: Bearer <API_TOKEN>" \
--header "Content-Type: application/json"
L'identifiant de l'ensemble de règles figurera dans la réponse à la demande qui a abouti. Si l'appel précédent renvoie une réponse 404 Not Found, utilisez l'API suivante pour créer le jeu de règles d'entrée pour la phase de règles personnalisées :
curl -x POST https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets \
--header "X-Auth-User-Token: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"name": "Zone-level phase entry point",
"kind": "zone",
"description": "WAF managed rule entrypoint ruleset.",
"phase": "http_request_firewall_managed"
}'
Liste des ensembles de règles gérés avec l'API
Procédez comme suit pour répertorier les jeux de règles gérés à l'aide de l'API :
- Configurez l'environnement de votre API avec les variables appropriées.
- Stockez les valeurs suivantes dans les variables destinées à être utilisées dans la commande d'API :
CRN: Le nom complet de la ressource cloud (CRN) de l'instance de service, codé sur URL.
ZONE_ID: L'ID de domaine.
RULESET_ID: L'ID de l'ensemble de règles personnalisées du point d'entrée.
- Lorsque toutes les variables sont lancées, dressez la liste de tous les ensembles de règles gérés par zone :
curl -X GET \
https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets \
-H 'content-type: application/json' \
-H 'accept: application/json' \
-H 'x-auth-user-token: Bearer xxxxxx'
Mise à jour des ensembles de règles des points d'entrée à l'aide de l'API
Procédez comme suit pour mettre à jour un jeu de règles de point d'entrée à l'aide de l'API :
- Configurez l'environnement de votre API avec les variables appropriées.
- Stockez les valeurs suivantes dans les variables destinées à être utilisées dans la commande d'API :
CRN: Le nom complet de la ressource cloud (CRN) de l'instance de service, codé sur URL.
ZONE_ID: L'ID de domaine.
RULESET_ID: L'ID de l'ensemble de règles personnalisées du point d'entrée.
- Lorsque toutes les variables sont initiées, mettre à jour l'ensemble de règles du point d'entrée :
curl -X PUT \
https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets/phases/$RULESET_PHASE/entrypoint \
-H 'content-type: application/json' \
-H 'accept: application/json' \
-H 'x-auth-user-token: Bearer xxxxxx' \
-d '{"rules":[{"action":"execute","action_parameters":{"id":"4814384a9e5d4991b9815dcfc25d2f1f"},"expression":"true","description":"Execute WAF OWASP ruleset"}]}'
Où :
- $RULESET_PHASE est la phase du jeu de règles qui sera déployée. Utilisez
http_request_firewall_managedpour déployer des ensembles de règles WAF gérés. -
- d est l'objet des attributs qui sont nécessaires pour créer le jeu de règles.
- règles est l'ensemble des règles à déployer avec le jeu de règles. Exemple :
- action est l'action que la règle doit effectuer. Pour une description des actions pouvant être utilisées, voir Actions de règles.
- action_parameters est l'objet permettant de définir sur quoi l'action doit fonctionner.
- id est l'ID de l'ensemble de règles à exécuter. Cet ID est extrait de l'opération
list zone rulesets.
- id est l'ID de l'ensemble de règles à exécuter. Cet ID est extrait de l'opération
- expression est la condition sous laquelle la règle s'exécute. L'utilisation de l'instruction «
true» signifie que cette règle est toujours exécutée. - description définit le récapitulatif de ce que votre règle accomplit.
Déployer des ensembles de règles gérés avec Terraform
Lister les jeux de règles gérés avec Terraform
L'exemple suivant répertorie les jeux de règles gérés à l'aide de Terraform :
data "ibm_cis_rulesets" "tests" {
cis_id = ibm_cis.instance.id
domain_id = data.ibm_cis_domain.cis_domain.domain_id
}
Pour plus d'informations sur les arguments et les attributs, voir ibm_cis_rulesets dans
le registre Terraform.
Liste de toutes les règles d'un jeu de règles géré
L'exemple suivant répertorie toutes les règles d'un jeu de règles géré à l'aide de Terraform :
resource "ibm_cis_ruleset" "config" {
cis_id = ibm_cis.instance.id
domain_id = data.ibm_cis_domain.cis_domain.domain_id
ruleset_id = "943c5da120114ea5831dc1edf8b6f769"
}
Pour plus d'informations sur les arguments et les attributs, voir ibm_cis_ruleset dans le registre
Terraform.
Règle dérogatoire
L'exemple suivant remplace une règle en utilisant Terraform :
resource "ibm_cis_ruleset_entrypoint_version" "test" {
cis_id = ibm_cis.instance.id
domain_id = data.ibm_cis_domain.cis_domain.domain_id
phase = "http_request_firewall_managed"
rulesets {
description = "Entrypoint ruleset for managed ruleset"
rules {
action = "execute"
description = "Deploy CIS managed ruleset"
enabled = true
expression = "true"
action_parameters {
id = "efb7b8c949ac4650a09736fc376e9aee"
overrides {
action = "block"
enabled = true
override_rules {
rule_id = "var.overriden_rule.id"
enabled = true
action = "block"
}
categories {
category = "wordpress"
enabled = true
action = "block"
}
}
}
}
}
}
Pour plus d'informations sur les arguments et les attributs, voir ibm_cis_ruleset_entrypoint_version dans le registre Terraform.