2016-05-09 3 views
-1

Wie begann hier: https://discuss.elastic.co/t/write-only-cluster-index-auditing-porpouse/49494ElasticSearch - auditierbare Lösung mit "nicht modifizierbaren" Dokumenten?

ich nach einem Weg suchen, um die ES-Cluster können nicht geändert werden zu gewährleisten, dass Dokumente geschrieben (oder zumindest ist es Backup mit dem ursprünglichen Inhalt) - Audit-Anforderungen.

Für den Moment kann ich einen Schnappschuss sichern, so hart, dass sogar ich nicht ändern/löschen kann. Aber wie sieht es mit der Zeit vom letzten Schnappschuss bis jetzt aus?

Kennen Sie eine Methode zum Sichern von ES-Snapshots, sodass es sich um einen schreibgeschützten Cluster handelt :)?


Mögliche Lösung ?: Ban die URI: XDELETE, */_ Update, aber was ist 'ganze Dokument aktualisieren', wo _version Nummer ändert?

Antwort

0

Von the documentation:

cluster.blocks.read_only das gesamte Cluster nur gelesen Stellen (Indizes keine Schreiboperationen akzeptieren), wird Metadaten nicht erlaubt modifiziert werden (Erstellen oder Löschen von Indizes).

Und für

zu dieser Einstellung Verlassen Sie sich nicht Änderungen an dem Cluster zu verhindern. Jeder Benutzer mit Zugriff auf die API für Cluster-Update-Einstellungen kann den Cluster erneut lesen und schreiben lassen.

Sie können nur alle Anrufe unter PUT localhost:9200/_cluster/settings sperren.

+0

Danke für die Antwort. Ich kann den Index nicht nur lesen - die Daten werden ständig hochgeladen. Ich möchte die 'Dokumentaktualisierung' Funktion deaktivieren. – sirkubax

1

Eine Möglichkeit, dies zu erreichen, wäre, das offizielle Produkt Shield zu verwenden und read-only privileges für die Indizes zu definieren, die Sie einfrieren möchten. Unten würde readonly die Rolle nur Zugriff auf alle Indizes gelesen haben, während full vollen Zugang hat:

readonly: 
    indices: 
    - names: '*' 
     privileges: 
     - read 
writer: 
    indices: 
    - names: '*' 
     privileges: 
     - read 
     - write 

UPDATE: Das write Privileg erlaubt es dem Benutzer, zu aktualisieren und löschen Dokumente zu erstellen. Es gibt eine feinkörnigere Berechtigung namens create, die nur das Erstellen/Indizieren neuer Dokumente erlaubt, aber weder aktualisiert noch löscht.

Ein andere Möglichkeit wäre die ausgezeichneten read-only REST plugin von @sscarduzio zu verwenden, mit folgenden Konfiguration:

readonly: 
    enable: true 
    response_if_req_forbidden: Sorry, your request is forbidden. 
    access_control_rules: 

    - name: Read-only audit indices 
     type: allow 
     actions: [cluster:*, indices:data/read/*] 
     indices: ["*"] 

writer: 
    enable: true 
    response_if_req_forbidden: Sorry, your request is forbidden. 
    access_control_rules: 

    - name: Indexer process 
     type: allow 
     actions: [cluster:*, indices:data/write/*] 
     indices: ["*"] 

Der Hauptvorteil dieses Ansatzes besteht darin, dass Sie noch eine andere Rolle definieren (zB writer) wer wird Sie können neue Dokumente hinzufügen/indizieren, während andere Rollen (z. B. readonly) schreibgeschützt bleiben.

+0

eine Möglichkeit, die Option 'Dokumentaktualisierung (vor Ort) zu deaktivieren'? – sirkubax

+1

In Shield haben Sie verschiedene Rechte, nämlich das ['create' one] (https://www.elastic.co/guide/en/shield/current/shield-privileges.html # privilegs-list-indices), die nur die Möglichkeit bietet, Dokumente zu erstellen, aber weder zu aktualisieren noch zu löschen. Das ist wahrscheinlich das, wonach du suchst. – Val

Verwandte Themen