Verwaltung von RabbitMQ-Benutzern und -Berechtigungen: Eine Befehlszeilen-Anleitung

Meistern Sie die `rabbitmqctl`-Befehle für eine robuste Benutzer- und Berechtigungsverwaltung in RabbitMQ. Diese umfassende Anleitung bietet Schritt-für-Schritt-Anweisungen zum Erstellen neuer Benutzer, Zuweisen von Administrator- oder Anwendungsrollen mithilfe von Tags, Festlegen detaillierter Virtual-Host-Berechtigungen (Lesen/Schreiben/Konfigurieren) und zum sicheren Widerrufen des Zugriffs, wodurch eine kontrollierte Verwaltung über die Befehlszeile gewährleistet wird.

48 Aufrufe

RabbitMQ-Benutzer und -Berechtigungen verwalten: Ein Befehlszeilen-Handbuch

Die Verwaltung von Benutzern und die Definition von Zugriffsrechten sind ein grundlegender Aspekt für die Sicherung jeder Message-Broker-Infrastruktur. RabbitMQ, ein leistungsstarker Message-Broker, bietet robuste Mechanismen für die Benutzerauthentifizierung und -autorisierung, die hauptsächlich über das Befehlszeilendienstprogramm rabbitmqctl verwaltet werden. Dieser Leitfaden konzentriert sich ausschließlich auf die Verwendung von rabbitmqctl, um die Benutzerverwaltung zu beherrschen. Er behandelt alles von der Erstellung und Rollenzuweisung bis hin zur detaillierten Berechtigungseinstellung über virtuelle Hosts hinweg.

Ordnungsgemäß konfigurierte Berechtigungen stellen sicher, dass Anwendungen und Administratoren nur dort mit dem Broker interagieren, wo es notwendig ist, wodurch Sicherheitsrisiken und operative Verwirrung minimiert werden. Durch die Nutzung dieser Befehlszeilentools können Sie komplexe Sicherheitseinrichtungen effizient skripten und automatisieren.

Voraussetzungen

Bevor Sie fortfahren, stellen Sie sicher, dass Sie Folgendes haben:

  1. RabbitMQ-Server installiert: Der Broker muss laufen.
  2. rabbitmqctl-Zugriff: Sie müssen über die notwendigen Berechtigungen (in der Regel Administratorrechte) verfügen, um Befehle gegen die laufende RabbitMQ-Instanz auszuführen. Befehle werden typischerweise von der Maschine ausgeführt, auf der der RabbitMQ-Server gehostet wird.

Benutzer mit rabbitmqctl verwalten

Das Tool rabbitmqctl verwendet die Befehlsfamilie user_* für alle benutzerbezogenen Operationen. Es ist entscheidend zu verstehen, dass RabbitMQ-Benutzer sich von Betriebssystembenutzern unterscheiden.

1. Bestehende Benutzer auflisten

Um zu sehen, wer derzeit Zugriff auf den Broker hat, verwenden Sie den Befehl list_users:

rabbitmqctl list_users

Beispielausgabe:

Listing users ...
user: guest   tags: [administrator]
user: app_prod tags: [policymaker]

2. Einen neuen Benutzer erstellen

Beim Einrichten eines neuen Dienstkontos oder Administrators müssen Sie den Benutzer erstellen und ein Anfangspasswort zuweisen.

Um einen Benutzer namens api_user mit dem Passwort securepass zu erstellen:

rabbitmqctl add_user api_user securepass

3. Benutzer-Tags (Rollen) ändern

Benutzer-Tags definieren vordefinierte Rollen, die spezifische administrative Fähigkeiten verleihen. Die gängigsten Tags sind administrator, policymaker und management.

  • administrator: Kann Benutzer, Berechtigungen, vhosts ändern und Cluster-Parameter setzen.
  • policymaker: Kann Richtlinien (z.B. für Hochverfügbarkeit oder Nachrichten-TTL) festlegen.
  • management: Kann die Oberfläche des Management Plugins verwenden (falls installiert).

Aktuelle Tags anzeigen

Verwenden Sie list_user_tags, um aktuelle Rollen anzuzeigen:

rabbitmqctl list_user_tags api_user

Tags setzen oder überschreiben

Um api_user den management-Tag zuzuweisen:

rabbitmqctl set_user_tags api_user management

Um den policymaker-Tag zusätzlich zu bestehenden Tags hinzuzufügen, verwenden Sie den add_tag-Befehl:

rabbitmqctl set_user_tags api_user administrator policymaker

Tags entfernen

Um einen spezifischen Tag zu entfernen:

rabbitmqctl clear_user_tags api_user policymaker

4. Das Passwort eines Benutzers ändern

Wenn Anmeldeinformationen rotiert werden müssen, verwenden Sie den Befehl change_password:

rabbitmqctl change_password api_user newsecurepass123

5. Einen Benutzer löschen

Um einen Benutzer vollständig zu entfernen und alle zugehörigen Zugriffe zu widerrufen:

rabbitmqctl delete_user api_user

Warnung: Das Löschen des guest-Benutzers wird in Produktionsumgebungen aus Sicherheitsgründen im Allgemeinen empfohlen, erfordert jedoch zunächst die Erstellung eines neuen administrativen Benutzers.

Berechtigungen für virtuelle Hosts verwalten

Berechtigungen in RabbitMQ werden pro virtuellem Host (vhost) definiert. Ein vhost fungiert als Namespace für Warteschlangen, Exchanges und Bindings. Standardmäßig hat RabbitMQ einen Root-Vhost namens /.

1. Vhosts auflisten

Identifizieren Sie zunächst die verfügbaren Vhosts:

rabbitmqctl list_vhosts

2. Berechtigungen für einen Benutzer auf einem VHost festlegen

Der Befehl set_permissions ist für die Anwendungssicherheit am kritischsten. Er gewährt einem Benutzer Rechte zum Konfigurieren, Lesen oder Schreiben von Ressourcen innerhalb eines spezifischen Vhosts.

Syntax: set_permissions <vhost> <user> <conf> <read> <write>

Berechtigungswerte sind reguläre Ausdrücke (.* bedeutet alle Ressourcen).

Beispiel: Vollständigen Zugriff auf einen spezifischen VHost gewähren

Wenn wir möchten, dass app_prod vollständigen CRUD-Zugriff (Konfigurieren, Lesen, Schreiben) nur auf den /prod_vhost hat:

rabbitmqctl set_permissions -p /prod_vhost app_prod "^.*" "^.*" "^.*" 
Berechtigung Bedeutung (Regex) Beschreibung
Konfigurieren (conf) .* Kann Exchanges, Warteschlangen, Bindings erstellen/löschen und Vhost-Parameter setzen.
Lesen (read) .* Kann Nachrichten konsumieren und den Status von Warteschlangen/Exchanges abrufen.
Schreiben (write) .* Kann Nachrichten veröffentlichen und Bindings erstellen.

Beispiel: Einen Benutzer auf das Veröffentlichen beschränken

Ein gängiges Muster für Firehose-Produzenten ist die Beschränkung auf das reine Schreiben:

# Benutzer 'publisher' kann Nachrichten im /analytics_vhost schreiben, aber nicht konfigurieren oder lesen
rabbitmqctl set_permissions -p /analytics_vhost publisher "^$" "^$" "^.*$"

3. Berechtigungen löschen

Um alle Berechtigungen, die ein Benutzer auf einem spezifischen Vhost hat, vollständig zu entfernen, verwenden Sie clear_permissions:

rabbitmqctl clear_permissions -p /prod_vhost app_prod

4. Benutzerberechtigungen auflisten

Um die einem spezifischen Benutzer auf einem Vhost gewährten Berechtigungen zu überprüfen:

rabbitmqctl list_permissions -p /prod_vhost app_prod

Best Practices für die Benutzerverwaltung

  • Prinzip der geringsten Rechte (PoLP): Gewähren Sie immer die minimal notwendigen Berechtigungen, damit die Anwendung oder der Benutzer funktionieren kann. Vermeiden Sie die Verwendung des administrator-Tags, es sei denn, dies ist absolut erforderlich.
  • Dedizierte Vhosts: Verwenden Sie verschiedene virtuelle Hosts für verschiedene Umgebungen (z.B. dev, staging, prod) und kontrollieren Sie den Zugriff zwischen ihnen streng.
  • Gastbenutzer vermeiden: Aus Sicherheitsgründen sollte der standardmäßige guest-Benutzer deaktiviert oder eingeschränkt werden (er hat standardmäßig nur Zugriff auf localhost).
  • Skripting: Da alle diese Befehle idempotent und Befehlszeilen-basiert sind, sollten Sie Benutzer-Setup- und Teardown-Routinen für eine konsistente Bereitstellung skripten.

Durch die Beherrschung dieser rabbitmqctl-Befehle erhalten Sie eine granulare, skriptbare Kontrolle darüber, wer auf Ihre Message-Broker-Ressourcen zugreifen kann, was zu einer sichereren und besser verwaltbaren RabbitMQ-Bereitstellung führt.