Zum Hauptinhalt springen
Version: 3.0.0-alpha (Diátaxis)

ClickHouse-Benutzer und -Profile verwalten

Diese Anleitung erklärt, wie Sie ClickHouse-Benutzer auf Hikube erstellen und verwalten, Nur-Lese-Berechtigungen für Analysten definieren und die Aufbewahrung der Abfragelogs konfigurieren.

Voraussetzungen

  • Eine ClickHouse-Instanz auf Hikube bereitgestellt (siehe Schnellstart)
  • kubectl konfiguriert für die Interaktion mit der Hikube-API
  • Die YAML-Konfigurationsdatei Ihrer ClickHouse-Instanz

Schritte

1. Admin-Benutzer erstellen

Definieren Sie einen Benutzer mit Vollzugriff (Lesen und Schreiben) im Feld users des Manifests:

clickhouse-users.yaml
apiVersion: apps.cozystack.io/v1alpha1
kind: ClickHouse
metadata:
name: my-clickhouse
spec:
replicas: 2
shards: 1
resourcesPreset: small
size: 10Gi
clickhouseKeeper:
enabled: true
replicas: 3
resourcesPreset: micro
size: 1Gi
users:
admin:
password: MeinAdminPasswort2024
Warnung

Verwenden Sie in der Produktion starke Passwörter. Passwörter werden im Manifest im Klartext gespeichert -- stellen Sie sicher, dass der Zugriff auf Ihre YAML-Dateien und die zugehörigen Kubernetes-Secrets geschützt ist.

2. Schreibgeschützten Benutzer erstellen

Fügen Sie einen Benutzer analyst mit dem Flag readonly: true hinzu, um den Zugriff auf Leseabfragen (SELECT) zu beschränken:

clickhouse-users-readonly.yaml
apiVersion: apps.cozystack.io/v1alpha1
kind: ClickHouse
metadata:
name: my-clickhouse
spec:
replicas: 2
shards: 1
resourcesPreset: small
size: 10Gi
clickhouseKeeper:
enabled: true
replicas: 3
resourcesPreset: micro
size: 1Gi
users:
admin:
password: MeinAdminPasswort2024
analyst:
password: AnalystSicher2024
readonly: true
Tipp

Erstellen Sie einen schreibgeschützten Benutzer für Analyse- und Reporting-Tools (Grafana, Metabase, etc.). Dies begrenzt das Risiko versehentlicher Datenänderungen.

3. Abfragelogs konfigurieren

ClickHouse zeichnet ausgeführte Abfragen in den Systemtabellen query_log und query_thread_log auf. Konfigurieren Sie die Speichergröße und Aufbewahrungsdauer der Logs:

clickhouse-users-logs.yaml
apiVersion: apps.cozystack.io/v1alpha1
kind: ClickHouse
metadata:
name: my-clickhouse
spec:
replicas: 2
shards: 1
resourcesPreset: small
size: 10Gi
logStorageSize: 5Gi
logTTL: 30
clickhouseKeeper:
enabled: true
replicas: 3
resourcesPreset: micro
size: 1Gi
users:
admin:
password: MeinAdminPasswort2024
analyst:
password: AnalystSicher2024
readonly: true
  • logStorageSize: Größe des dedizierten persistenten Volumes für Logs (Standard: 2Gi)
  • logTTL: Aufbewahrungsdauer in Tagen für query_log und query_thread_log (Standard: 15)
Hinweis

Passen Sie logTTL an Ihre Audit-Bedürfnisse an. Ein hoher Wert verbraucht mehr Festplattenplatz (logStorageSize). Für eine Entwicklungsumgebung sind 7 Tage in der Regel ausreichend.

4. Änderungen anwenden

kubectl apply -f clickhouse-users-logs.yaml

5. Mit clickhouse-client verbinden

Testen Sie die Verbindung mit jedem Benutzer:

# Verbindung mit dem Admin-Benutzer
kubectl exec -it my-clickhouse-0-0 -- clickhouse-client --user admin --password MeinAdminPasswort2024
# Verbindung mit dem Analyst-Benutzer
kubectl exec -it my-clickhouse-0-0 -- clickhouse-client --user analyst --password AnalystSicher2024

6. Berechtigungen überprüfen

Sobald Sie mit dem Benutzer analyst verbunden sind, überprüfen Sie, dass Schreibvorgänge blockiert sind:

-- Diese Abfrage muss erfolgreich sein (Lesen erlaubt)
SELECT count() FROM system.tables;

-- Diese Abfrage muss fehlschlagen (Schreiben verboten)
CREATE TABLE test_write (id UInt32) ENGINE = Memory;

Der schreibgeschützte Benutzer erhält einen Fehler wie:

Code: 164. DB::Exception: analyst: Not enough privileges.

Überprüfung

Überprüfen Sie, dass die Benutzer korrekt konfiguriert sind:

# ClickHouse-Ressourcenkonfiguration prüfen
kubectl get clickhouse my-clickhouse -o yaml | grep -A 10 users

# Prüfen, ob die Pods den Status Running haben
kubectl get pods -l app.kubernetes.io/instance=my-clickhouse

Verbinden Sie sich als Admin und listen Sie die Benutzer auf:

SELECT name, storage, auth_type FROM system.users;

Weiterführende Informationen