Sovrascrivere i set di regole gestiti
Per personalizzare il comportamento di un set di regole gestito, sovrascriverlo al momento della distribuzione. Quando si sovrascrive una serie di regole, si specificano le modifiche da eseguire in aggiunta alla configurazione predefinita.
È possibile ignorare un insieme di regole gestite ai seguenti livelli:
- Le sovrascritture della serie di regole sono valide per tutte le regole nella serie di regole eseguita.
- Le sovrascritture di tag si applicano a tutte le regole con un tag specifico. Ad esempio, utilizza una sovrascrittura di tag per personalizzare la serie di regole gestita CIS in modo che tutte le regole con la tag wordpress siano impostate su Block. Se più tag hanno sovrascritture e se una regola ha più di una di queste tag, l'ordine di sovrascritture determina il comportamento. Per le regole contrassegnate con più tag sovrascritti, si applicano le sovrascritture dell'ultima tag.
- Le sovrascritture di regola si applicano alle regole specifiche in una serie di regole gestita, a cui fa riferimento il relativo ID regola.
Le sovrascritture specifiche hanno la precedenza su quelle più generali e le sovrascritture di regole hanno la precedenza sulle sovrascritture di tag, che hanno la precedenza sulle sovrascritture di serie di regole.
Le sovrascritture di serie di regole e le sovrascritture di tag si applicano alle regole esistenti e future nella serie di regole gestita. Se si desidera sovrascrivere solo le regole esistenti, è necessario utilizzare le sovrascritture di regole.
Sovrascrittura del workflow
Per applicare una sovrascrittura per una serie di regole gestita, effettuare le seguenti operazioni.
- Elenca i set di regole disponibili utilizzando l'operazione list rulesets.
- Elenca le regole per quel set di regole utilizzando l'operazione get ruleset.
- Richiamare l'operazione di aggiornamento della serie di regole sul punto di ingresso fase.
- Specificare le sovrascritture nel
action_parameters
della regola che esegue la serie di regole gestita.
"action_parameters": {
"id": "<RULESET_ID>",
"overrides": {
// ruleset overrides
"property-to-modify": "value",
"property-to-modify": "value",
// tag overrides
"categories": [
{
"category": "<TAG_NAME>",
"property-to-modify": "value",
"property-to-modify": "value"
}
],
// rule overrides
"rules": [
{
"id": "<RULE_ID>",
"property-to-modify": "value",
"property-to-modify": "value"
}
]
}
}
È possibile sovrascrivere le seguenti proprietà della regola.
- "azione"
- "abilitato"
Alcune serie di regole gestite possono avere requisiti di sovrascrittura aggiuntivi oppure potrebbero sovrascrivere altre proprietà della regola.
Non è efficace abilitare tutte le regole in una serie di regole gestita a livello di istanza utilizzando una sovrascrittura. Questa modifica può influire su tutte le zone nella tua istanza. Alcune regole sono disabilitate per impostazione predefinita perché alla fine influenzano il traffico legittimo. Non abilitare queste regole tra le zone senza precedenti considerazioni.
Sovrascrivere i set di regole gestiti dalla CLI
È possibile ignorare i set di regole dalla CLI.
Elencare i set di regole gestiti dalla CLI
Per elencare tutti i set di regole di zona dalla CLI, eseguire il seguente comando:
ibmcloud cis managed-waf rulesets DNS_DOMAIN_ID [-i, --instance INSTANCE] [--output FORMAT]
Dove:
DNS_DOMAIN_ID
è l'ID del dominio.-i, --instance value
è il nome o l'ID dell'istanza.--output value
specifica il formato di output; è supportato solo JSON.
Elencare le regole in un insieme di regole di zona dal CLI
Per elencare le regole in un set di regole di zona dal CLI, eseguire il seguente comando:
ibmcloud cis managed-waf ruleset DNS_DOMAIN_ID RULESET_ID [-i, --instance INSTANCE] [--output FORMAT]
Dove:
DNS_DOMAIN_ID
è l'ID del dominio.RULESET_ID
è l'ID della serie di regole per le regole da elencare.-i, --instance value
è il nome o l'ID dell'istanza.--output value
specifica il formato di output; è supportato solo JSON.
Sovrascrivere i set di regole gestiti dalla CLI
Per sovrascrivere una serie di regole WAF gestita dalla CLI, esegui questo comando:
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]
Dove:
DNS_DOMAIN_ID
è l'ID del dominio.--match value
è la condizione che deve essere soddisfatta per l'esecuzione della regola. Vedere Uso di campi, funzioni ed espressioni per un elenco di valori da abbinare.--enabled value
indica se la regola è attiva. Il valore predefinito è "true".--override-action value
è l'azione della serie di regole di tutte le sovrascritture. I valori validi sono "managed_challenge", "block", "js_challenge", "log", "challenge".--paranoia-level value
è il livello di paranoia OWASP. I valori validi sonoPL1","PL2","PL3","PL4" ed è disponibile solo perCIS OWASP Core Ruleset
.--override-rules value
sono le opzioni delle regole delle sovrascritture. Ad esempio,--override-rules rule=RULE_ID,action=ACTION,enabled=STATUS
.-i, --instance value
è il nome o l'ID dell'istanza.--output value
specifica il formato di output; è supportato solo JSON.
Sovrascrivere i set di regole gestiti con l'API
È possibile ignorare i set di regole dall'API.
Elencare i set di regole delle zone dall'API
Per elencare tutti i set di regole di zona dall'API, eseguire il seguente comando:
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'
Elencare tutte le regole per un insieme di regole dall'API
Per elencare tutte le regole per un set di regole specifico, eseguire il seguente comando:
curl -X GET \
https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets/$RULESET_ID \
-H 'content-type: application/json' \
-H 'accept: application/json' \
-H 'x-auth-user-token: Bearer xxxxxx'
Dove:
$RULESET_ID
è l'ID della serie di regole gestita per cui sono riportate le regole.
Sovrascrivere un set di regole di un punto di ingresso dall'API
Per aggiornare il set di regole del punto di ingresso dall'API con una sostituzione, eseguire il seguente comando:
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 '{"description":"Deploy managed ruleset, enabling a specific rule with log action","rules":[{"action":"execute","expression":"true","action_parameters":{"id":"<MANAGED_RULESET_ID>","overrides":{"rules":[{"id":"<RULE_ID>","enabled":true,"action":"log"}]}}}]}'
Dove:
$RULESET_PHASE
è la fase del set di regole che viene implementata. Utilizzarehttp_request_firewall_managed
per ignorare i set di regole WAF gestiti.-d
è l'oggetto degli attributi necessari per creare il set di regole.description
definisce il proprio riassunto di ciò che un insieme di regole sta realizzando.rules
è l'insieme di regole da implementare con il set di regole.action
è l'azione da intraprendere per la regola. Vedere le azioni del set di regole WAF per una descrizione delle azioni disponibili.action_parameters
è l'oggetto per la definizione del funzionamento dell'azione.id
è l'ID della serie di regole da eseguire. Questo ID viene richiamato dall'operazione di elenco delle serie di regole della zona.overrides
è l'oggetto delle sostituzioni da impostare sul set di regole selezionato.rules
è l'elenco di regole sovrascritte con le proprietà selezionate.id
è l'ID della regola da sovrascrivere. Questo ID viene richiamato dall'operazione delle regole della serie di regole della zona di elenco.enabled
sovrascrive anche quando la regola è abilitata.action
specifica l'azione sovrascritta eseguita dalla regola.
expression
è la condizione in cui viene eseguita la regola. L'utilizzo di "true" significa che questa regola viene sempre eseguita.description
definisce il proprio riepilogo di ciò che la regola sta realizzando.
Sovrascrivere i set di regole gestite con Terraform
È possibile sovrascrivere i set di regole utilizzando Terraform.
Elencare i set di regole gestiti con Terraform
L'esempio seguente elenca tutti i set di regole gestiti utilizzando Terraform:
data "ibm_cis_rulesets" "tests" {
cis_id = ibm_cis.instance.id
domain_id = data.ibm_cis_domain.cis_domain.domain_id
}
Per ulteriori informazioni sugli argomenti e gli attributi, vedere ibm_cis_rulesets
nel
registro di Terraform.
Elencare tutte le regole di un ruleset gestito con Terraform
L'esempio seguente elenca tutte le regole di un ruleset gestito utilizzando 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"
}
Per ulteriori informazioni sugli argomenti e gli attributi, vedere ibm_cis_ruleset
nel registro
di Terraform.
Sovrascrivere una regola con Terraform
Questo esempio mostra come distribuire il ruleset gestito CIS con varie sovrascritture. In primo luogo, abilita e blocca il traffico per tutte le regole. Quindi, abilita e blocca il traffico per una regola specifica. Infine, abilita e blocca
il traffico per tutte le regole della categoria wordpress
. In sostanza, questo esempio illustra i diversi metodi per sovrascrivere le regole distribuite (globali, specifiche, per categoria).
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"
}
}
}
}
}
}
Per ulteriori informazioni sugli argomenti e gli attributi, vedere ibm_cis_ruleset_entrypoint_version
nel registro di Terraform.