Aller au contenu

Event-Filter

L'API Event-Filter permet de consulter, créer et supprimer des règles d'enrichissement.

Pour plus d'informations sur ce qu'est une règle d'enrichissement, consulter la documentation du moteur engine-che.

Note

Un changement important est apparu dans cette API à partir de Canopsis 3.48.0 : la liste des patterns (au pluriel) peut maintenant contenir plusieurs règles à la fois. Avant Canopsis 3.48.0, il s'agissait d'un champ pattern (au singulier) ne pouvant contenir qu'une seule règle.

Avant Canopsis 3.48.0 :

"pattern": {
    "component": "192.168.0.1", "resource": "foobar"
},

À partir de Canopsis 3.48.0 :

"patterns": [
    {"component": "192.168.0.1", "resource": "foobar"},
    {"resource": "other"}
],

Les exemples suivants utilisent uniquement la nouvelle syntaxe.

Création d'une règle

Crée une nouvelle règle à partir du corps de la requête.

URL : /api/v2/eventfilter/rules

Méthode : POST

Authentification requise : Oui

Permissions requises : Aucune

Exemple de corps de requête :

{
    "type": "enrichment",
    "patterns": [
        {"component": "192.168.0.1"}
    ],
    "actions": [
        {
            "type": "set_field",
            "name": "Component",
            "value": "example.com"
        }
    ],
    "priority": 101,
    "on_success": "pass",
    "on_failure": "pass"
}

Exemple de requête curl pour utilisateur root avec mot de passe root qui veut ajouter le JSON ci-dessus :

curl -X POST -u root:root -H "Content-Type: application/json" -d '{
    "type": "enrichment",
    "patterns": [
        {"component": "192.168.0.1"}
    ],
    "actions": [
        {
            "type": "set_field",
            "name": "Component",
            "value": "example.com"
        }
    ],
    "priority": 101,
    "on_success": "pass",
    "on_failure": "pass"
}' 'http://localhost:8082/api/v2/eventfilter/rules'

Réponse en cas de réussite

Condition : la règle est créée

Code : 200 OK

Exemple du corps de la réponse :

{
    "_id": "6dacc239-59e8-4ba9-b1d0-e9c08ab8eacd"
}

Réponse en cas d'erreur

Condition : Si le corps de la requête n'est pas valide.

Code : 400 BAD REQUEST

Exemple du corps de la réponse :

{
    "name": "",
    "description": "Malformed JSON: Extra data: line 1 column 66 - line 1 column 275 (char 65 - 274)"
}

Condition : Si une règle portant un _id similaire existe déjà en base.

Code : 400 BAD REQUEST

Exemple du corps de la réponse :

{
    "name": "",
    "description": "Operation failure while doing insert: E11000 duplicate key error collection: canopsis.eventfilter index: _id_ dup key: { : \"6dacc239-59e8-4ba9-b1d0-e9c08ab8eacd\" }"
}

Modification de Règle

Modifie une règle à partir du corps de la requête.

URL : /api/v2/eventfilter/rules/<rule_id>

Méthode : PUT

Authentification requise : Oui

Permissions requises : Aucune

Exemple de corps de requête :

{
    "type": "enrichment",
    "patterns": [
        {"component": "192.168.0.8"}
    ],
    "actions": [
        {
            "type": "set_field",
            "name": "Component",
            "value": "example.net"
        }
    ],
    "priority": 101,
    "on_success": "pass",
    "on_failure": "pass"
}

Exemple de requête curl pour utilisateur root avec mot de passe root qui veut envoyer le JSON ci-dessus pour modifier la règle dont l'_id vaut 6dacc239-59e8-4ba9-b1d0-e9c08ab8eacd :

curl -X PUT -u root:root -H "Content-Type: application/json" -d '{
    "type": "enrichment",
    "patterns": [
        {"component": "192.168.0.8"}
    ],
    "actions": [
        {
            "type": "set_field",
            "name": "Component",
            "value": "example.net"
        }
    ],
    "priority": 101,
    "on_success": "pass",
    "on_failure": "pass"
}' 'http://localhost:8082/api/v2/eventfilter/rules/6dacc239-59e8-4ba9-b1d0-e9c08ab8eacd'

Réponse en cas de réussite

Condition : la règle est modifiée

Code : 200 OK

Exemple du corps de la réponse :

{
}

Suppression de Règle

Supprime une règle en fonction de son id.

URL : /api/v2/eventfilter/rules/<rule_id>

Méthode : DELETE

Authentification requise : Oui

Permissions requises : Aucune

Exemple de requête curl pour utilisateur root avec mot de passe root qui veut supprimer la règle avec l'id 6dacc239-59e8-4ba9-b1d0-e9c08ab8eacd :

curl -X DELETE -u root:root 'http://localhost:8082/api/v2/eventfilter/rules/6dacc239-59e8-4ba9-b1d0-e9c08ab8eacd'

Réponse en cas de réussite

Condition : La suppression de la règle a réussi.

Code : 200 OK

Exemple du corps de la réponse :

{
}

Réponse en cas d'erreur

Condition : En cas d'absence de règle avec l'_id dans la base de données.

Code : 400 BAD REQUEST

Exemple du corps de la réponse :

{
    "name": "",
    "description": "No rule with id: 6dacc239-59e8-4ba9-b1d0-e9c08ab8eacd"
}

Récupération des règles

Récupère une ou plusieurs règles créées en base.

Récupération d'une règle par id

URL : /api/v2/eventfilter/rules/<rule_id>

Méthode : GET

Authentification requise : Oui

Permissions requises : Aucune

Exemple de requête curl pour utilisateur root avec mot de passe root pour récupérer la règle avec l'id 6dacc239-59e8-4ba9-b1d0-e9c08ab8eacd :

curl -X GET -u root:root 'http://localhost:8082/api/v2/eventfilter/rules/6dacc239-59e8-4ba9-b1d0-e9c08ab8eacd'
Réponse en cas de réussite

Condition : Une règle correspondant à l'id est trouvée.

Code : 200 OK

Exemple du corps de la réponse :

{
    "patterns": [
        {"component": "192.168.0.1"}
    ],
    "actions": [{
        "type": "set_field",
        "name": "Component",
        "value": "example.com"
    }],
    "priority": 101,
    "on_failure": "pass",
    "_id": "6dacc239-59e8-4ba9-b1d0-e9c08ab8eacd",
    "type": "enrichment",
    "on_success": "pass"
}
Réponse en cas d'erreur

Condition : Aucune règle correspondant à l'id n'est trouvée.

Code : 404 NOT FOUND

Exemple du corps de la réponse :

{
    "name": "",
    "description": "No rule with id: 6dacc239-59e8-4ba9-b1d0-e9c08ab8ea444cd"
}

Récupération de toutes les règles en base de données

Récupère toutes les règles stockées en base

URL : /api/v2/eventfilter/rules

Méthode : GET

Authentification requise : Oui

Permissions requises : Aucune

Exemple de requête curl pour utilisateur root avec mot de passe root pour récupérer toutes les règles :

curl -X GET -u root:root 'http://localhost:8082/api/v2/eventfilter/rules'
Réponse en cas de réussite

Condition : aucune.

Code : 200 OK

Exemple du corps de la réponse :

[{
    "patterns": [
        {"component": "192.168.0.1"}
    ],
    "actions": [{
        "type": "set_field",
        "name": "Component",
        "value": "example.com"
    }],
    "priority": 101,
    "on_failure": "pass",
    "_id": "4da620cd-5883-4952-8eac-b61f597fa622",
    "type": "enrichment",
    "on_success": "pass"
}, {
    "patterns": [
        {"component": "192.168.0.2"}
    ],
    "actions": [{
        "type": "set_field",
        "name": "Component",
        "value": "example2.com"
    }],
    "priority": 101,
    "on_failure": "pass",
    "_id": "f62b37c5-e301-4bfc-ba52-8ff2454cc0aa",
    "type": "enrichment",
    "on_success": "pass"
}]

Dernière mise à jour: 2020-12-02