IBM Cloud Docs
Sovrascrivere i set di regole gestiti

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.

  1. Elenca i set di regole disponibili utilizzando l'operazione list rulesets.
  2. Elenca le regole per quel set di regole utilizzando l'operazione get ruleset.
  3. Richiamare l'operazione di aggiornamento della serie di regole sul punto di ingresso fase.
  4. 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 per CIS 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. Utilizzare http_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.