30 Authentifizierung mit cephx
#
Das Authentifizierungssystem cephx
von Ceph dient dazu, Clients zu identifizieren und sie gegen Man-in-the-Middle-Angriffe zu schützen. Clients in diesem Kontext sind entweder Benutzer (wie zum Beispiel Administratoren) oder auf Ceph bezogene Services/Daemons (beispielsweise OSDs, Monitors oder Object Gateways).
Das cephx
-Protokoll befasst sich nicht mit der Datenverschlüsselung bei der Übertragung, wie zum Beispiel TLS/SSL.
30.1 Authentifizierungsarchitektur #
cephx
verwendet gemeinsame geheime Schlüssel zur Authentifizierung. Dies bedeutet, dass sowohl der Client als auch die Ceph Monitors eine Kopie des geheimen Schlüssels des Clients besitzen. Anhand des Authentifizierungsprotokolls weisen beide Parteien nach, dass sie eine Kopie des Schlüssels besitzen, ohne ihn tatsächlich anzuzeigen. Dies sorgt für gegenseitige Authentifizierung, was bedeutet, der Cluster ist sicher, dass der Benutzer einen geheimen Schlüssel besitzt, und der Benutzer ist sicher, dass der Cluster ebenfalls über eine Kopie des geheimen Schlüssels verfügt.
Eine wichtige Skalierbarkeitsfunktion von Ceph besteht darin, eine zentralisierte Schnittstelle zum Ceph-Objektspeicher zu vermeiden. Dies bedeutet, dass Ceph-Clients direkt mit OSDs interagieren. Zum Schutz der Daten steht das Authentifizierungssystem cephx
von Ceph zur Verfügung, das die Ceph-Clients authentifiziert.
Jeder Monitor kann Clients authentifizieren und Schlüssel verteilen. Daher gibt es bei der Verwendung von cephx
keinen Single-Point-of-Failure oder Engpass. Der Monitor gibt eine Authentifizierungsdatenstruktur zurück, die einen Sitzungsschlüssel enthält, mit dem Ceph Services abgerufen werden. Dieser Sitzungsschlüssel wird wiederum mit dem permanenten geheimen Schlüssel des Clients verschlüsselt. Dadurch ist es nur dem Client möglich, Services von den Ceph Monitors anzufordern. Der Client fordert dann mit dem Sitzungsschlüssel die gewünschten Services vom Monitor ab und der Monitor stellt dem Client ein Ticket aus. Dieses Ticket authentifiziert den Client bei den OSDs, die tatsächlich die Daten verarbeiten. Ceph Monitors und OSDs haben ein gemeinsames Geheimnis, sodass der Client das Ticket vom Monitor für jeden OSD oder Metadata Server im Cluster verwenden kann. cephx
-Tickets laufen ab, sodass ein abgelaufenes Ticket oder ein Sitzungsschlüssel einem Angreifer, der es sich widerrechtlich angeeignet hat, nichts nützt.
Für cephx
muss ein Administrator zunächst Clients/Benutzer einrichten. In der folgenden Grafik ruft der client.admin
das Kommando ceph auth get-or-create-key
in der Kommandozeile auf, um einen Benutzernamen und einen geheimen Schlüssel zu generieren. Das Teilsystem auth
von Ceph generiert den Benutzernamen und Schlüssel, speichert eine Kopie bei den Monitors und überträgt das Geheimnis des Benutzers zurück an den client.admin
-Benutzer. Dies bedeutet, dass der Client und der Monitor über einen gemeinsamen geheimen Schlüssel verfügen.
cephx
-Basisauthentifizierung #Zur Authentifizierung beim Monitor gibt der Client den Benutzernamen an den Monitor weiter. Der Monitor generiert einen Sitzungsschlüssel und verschlüsselt diesen mit dem geheimen Schlüssel, der mit dem Benutzernamen verknüpft ist. Danach überträgt er das verschlüsselte Ticket zurück an den Client. Der Client entschlüsselt dann die Daten mit dem gemeinsamen geheimen Schlüssel, um den Sitzungsschlüssel abzurufen. Der Sitzungsschlüssel identifiziert den Benutzer für die aktuelle Sitzung. Der Client fordert dann ein Ticket an, das sich auf den Benutzer bezieht. Dieses Ticket wird durch den Sitzungsschlüssel signiert. Der Monitor generiert ein Ticket, verschlüsselt es mit dem geheimen Schlüssel des Benutzers und überträgt es zurück an den Client. Der Client entschlüsselt das Ticket und signiert damit Anforderungen an OSDs und Metadata Server im gesamten Cluster.
cephx
#
Das cephx
-Protokoll authentifiziert die fortlaufende Kommunikation zwischen dem Client-Rechner und den Ceph Servern. Jede nach der ersten Authentifizierung zwischen einem Client und einem Server gesendete Nachricht wird mit einem Ticket signiert, das die Monitors, OSDs und Metadata Server mit ihrem gemeinsamen geheimen Schlüssel verifizieren können.
cephx
– MDS und OSD #Der durch diese Authentifizierung erreichte Schutz besteht zwischen dem Ceph-Client und den Ceph-Cluster-Hosts. Die Authentifizierung wird nicht über den Ceph-Client hinaus erweitert. Wenn der Benutzer von einem Remote-Host aus auf den Ceph-Client zugreift, wird die Ceph-Authentifizierung nicht auf die Verbindung zwischen dem Host des Benutzers und dem Client-Host angewendet.
30.2 Schlüsselverwaltungsbereiche #
In diesem Abschnitt werden die Ceph-Client-Benutzer und deren Authentifizierung und Autorisierung beim Ceph Storage Cluster erläutert. Benutzer sind entweder Einzelpersonen oder Systemaktoren wie Anwendungen, die Ceph-Clients für die Interaktion mit den Ceph Storage Cluster Daemons nutzen.
Wenn Ceph mit aktivierter Authentifizierung und Autorisierung ausgeführt wird (standardmäßig aktiviert), dann müssen Sie einen Benutzernamen angeben und einen Schlüsselbund, der den geheimen Schlüssel des angegebenen Benutzers enthält (normalerweise über die Kommandozeile). Wenn Sie keinen Benutzernamen angeben, verwendet Ceph client.admin
als standardmäßigen Benutzernamen. Wenn Sie keinen Schlüsselbund angeben, sucht Ceph nach einem Schlüsselbund über die Schlüsselbundeinstellung in der Ceph-Konfigurationsdatei. Wenn Sie beispielsweise das Kommando ceph health
ausführen, ohne einen Benutzernamen oder Schlüsselbund anzugeben, dann interpretiert Ceph das Kommando folgendermaßen:
cephuser@adm >
ceph -n client.admin --keyring=/etc/ceph/ceph.client.admin.keyring health
Alternativ können Sie mit der CEPH_ARGS
-Umgebungsvariable die wiederholte Eingabe von Benutzername und Geheimnis vermeiden.
30.2.1 Hintergrundinformation #
Ungeachtet des Typs des Ceph-Clients (beispielsweise Blockgerät, Objektspeicher, Dateisystem, systemeigene API) speichert Ceph alle Daten als Objekte in Pools. Ceph-Benutzer benötigen zum Lesen und Schreiben von Daten Zugriff auf die Pools. Außerdem müssen Ceph-Benutzer über Ausführungsberechtigungen verfügen, um die Verwaltungskommandos von Ceph zu verwenden. Die Ceph-Benutzerverwaltung verstehen Sie am besten anhand der folgenden Konzepte.
30.2.1.1 Benutzer #
Ein Benutzer ist entweder eine Einzelperson oder ein Systemaktor wie eine Anwendung. Durch die Erstellung von Benutzern steuern Sie, wer (oder was) auf Ihren Ceph Storage Cluster, dessen Pools und die Daten in den Pools Zugriff hat.
Ceph verwendet Typen von Benutzern. Zum Zweck der Benutzerverwaltung lautet der Typ immer client
. Ceph kennzeichnet Benutzer durch (.) getrennt und bestehend aus Benutzertyp und Benutzer-ID. Beispiel: TYPE.ID
, client.admin
oder client.user1
. Der Grund dafür besteht darin, dass Ceph Monitors, OSDs und Metadata Server ebenfalls das cephx-Protokoll verwenden, jedoch keine „clients“ sind. Durch unterschiedliche Benutzertypen wird zwischen Client-Benutzern und anderen Benutzern unterschieden, was die Zugriffskontrolle, die Benutzerüberwachung und Nachverfolgbarkeit verbessert.
Der Benutzertyp von Ceph kann unter Umständen verwirrend erscheinen, da Sie in der Ceph-Kommandozeile einen Benutzer mit oder ohne Typ angeben können, je nach Ihrer Nutzung der Kommandozeile. Bei --user
oder --id
können Sie den Typ weglassen. client.user1
kann also einfach als user1
eingegeben werden. Bei --name
oder -n
müssen Sie den Typ und den Namen angeben, z. B. client.user1
. Als optimales Verfahren wird empfohlen, nach Möglichkeit stets den Typ und den Namen anzugeben.
Ein Ceph Storage Cluster-Benutzer ist nicht dasselbe wie ein Ceph Object Storage-Benutzer oder ein Ceph-Dateisystembenutzer. Das Ceph Object Gateway nutzt einen Ceph Storage Cluster-Benutzer für die Kommunikation zwischen dem Gateway Daemon und dem Storage Cluster, doch das Gateway verfügt über eine eigene Benutzerverwaltungsfunktion für Endbenutzer. Das Ceph-Dateisystem verwendet die POSIX-Semantik. Der damit verknüpfte Benutzerbereich entspricht nicht einem Ceph Storage Cluster-Benutzer.
30.2.1.2 Autorisierung und Befähigungen #
Mit dem Begriff „Capabilities“ (Caps) beschreibt Ceph die Autorisierung eines authentifizierten Benutzers zur Ausführung der Funktionalität der Monitors, OSDs und Metadata Servers. Die „Capabilities“ können außerdem den Zugriff auf Daten in einem Pool oder Pool-Namespace einschränken. Ein verwaltungsbefugter Benutzer von Ceph legt die Capabilities eines Benutzers bei dessen Erstellung oder Aktualisierung fest.
Die Syntax der Capabilities entspricht der folgenden Form:
daemon-type 'allow capability' [...]
Hier sehen Sie eine Liste der Capabilities für die einzelnen Service-Typen:
- Monitor-Capabilities
sind
r
,w
,x
undallow profile cap
.mon 'allow rwx' mon 'allow profile osd'
- OSD-Capabilities
sind
r
,w
,x
,class-read
,class-write
undprofile osd
. Außerdem sind bei OSD-Capabilities auch Pool- und Namespace-Einstellungen möglich.osd 'allow capability' [pool=poolname] [namespace=namespace-name]
- MDS-Capability
Dafür ist nur
allow
erforderlich oder es erfolgt kein Eintrag.mds 'allow'
Die folgenden Einträge beschreiben die einzelnen Capabilities:
- allow
Geht den Zugriffseinstellungen für einen Daemon voran. Schließt
rw
nur für MDS ein.- r
Gewährt Benutzern Lesezugriff. Erforderlich bei Monitors zum Abrufen der CRUSH Map.
- w
Gewährt Benutzern Schreibzugriff auf Objekte.
- x
Gewährt Benutzern die Capability zum Aufrufen von Klassenmethoden (Lesen und Schreiben) und zur Ausführung von
auth
-Operationen an Monitors.- class-read
Gewährt Benutzern die Capability zum Aufrufen von Methoden zum Lesen für Klassen. Teilmenge von
x
.- class-write
Gewährt Benutzern die Capability zum Aufrufen von Methoden zum Schreiben für Klassen. Teilmenge von
x
.- *
Gewährt Benutzern Lese-, Schreib- und Ausführungsberechtigungen für einen bestimmten Daemon/Pool sowie die Möglichkeit zum Ausführen von Admin-Kommandos.
- profile osd
Gewährt Benutzern Berechtigungen zum Herstellen einer Verbindung als OSD mit anderen OSDs oder Monitors. Wird OSDs gewährt, um OSDs die Verarbeitung von Heartbeat-Datenverkehr und Statusberichterstellung für Reproduktionen zu ermöglichen.
- profile mds
Gewährt Benutzern Berechtigungen zum Herstellen einer Verbindung als MDS mit anderen MDSs oder Monitors.
- profile bootstrap-osd
Gewährt Benutzern Berechtigungen für OSD-Bootstraps. Übertragen an Bereitstellungswerkzeuge, damit diese berechtigt sind, beim Bootstrapping eines OSDs Schlüssel hinzuzufügen.
- profile bootstrap-mds
Gewährt Benutzern Berechtigungen für Metadata Server-Bootstraps. Übertragen an Bereitstellungswerkzeuge, damit diese berechtigt sind, beim Bootstrapping eines Metadata Servers Schlüssel hinzuzufügen.
30.2.1.3 Pools #
Ein Pool ist eine logische Partition, in der Benutzer Daten speichern. Bei Ceph-Bereitstellungen ist es üblich, einen Pool als logische Partition für ähnliche Datentypen zu erstellen. Wenn beispielsweise Ceph als Back-End für OpenStack bereitgestellt wird, dann würde eine typische Bereitstellung Pools für Volumes, Images, Sicherungen und virtuelle Maschinen umfassen sowie Benutzer wie client.glance
oder client.cinder
.
30.2.2 Benutzer verwalten #
Die Benutzerverwaltungsfunktion ermöglicht es Ceph-Cluster-Administratoren, Benutzer direkt im Ceph-Cluster zu erstellen, zu aktualisieren und zu löschen.
Wenn Sie Benutzer im Ceph-Cluster erstellen oder löschen, müssen Sie möglicherweise Schlüssel an Clients verteilen, damit diese zu Schlüsselbunden hinzugefügt werden können. Ausführliche Informationen finden Sie unter Abschnitt 30.2.3, „Verwalten von Schlüsselbunden“.
30.2.2.1 Auflisten von Benutzern #
Führen Sie folgendes Kommando aus, um die Benutzer in Ihrem Cluster aufzulisten:
cephuser@adm >
ceph auth list
Ceph listet alle Benutzer in Ihrem Cluster auf. In einem Cluster mit zwei Knoten beispielsweise sieht die Ausgabe von ceph auth list
folgendermaßen aus:
installed auth entries: osd.0 key: AQCvCbtToC6MDhAATtuT70Sl+DymPCfDSsyV4w== caps: [mon] allow profile osd caps: [osd] allow * osd.1 key: AQC4CbtTCFJBChAAVq5spj0ff4eHZICxIOVZeA== caps: [mon] allow profile osd caps: [osd] allow * client.admin key: AQBHCbtT6APDHhAA5W00cBchwkQjh3dkKsyPjw== caps: [mds] allow caps: [mon] allow * caps: [osd] allow * client.bootstrap-mds key: AQBICbtTOK9uGBAAdbe5zcIGHZL3T/u2g6EBww== caps: [mon] allow profile bootstrap-mds client.bootstrap-osd key: AQBHCbtT4GxqORAADE5u7RkpCN/oo4e5W0uBtw== caps: [mon] allow profile bootstrap-osd
Beachten Sie, dass die Schreibweise TYPE.ID
für Benutzer so angewendet wird, dass osd.0
einen Benutzer vom Typ osd
und dessen ID 0
bezeichnet. client.admin
ist ein Benutzer vom Typ client
und seine ID lautet admin
. Beachten Sie auch, dass sich jeder Eintrag aus einem Eintrag key: value
und einem oder mehreren Einträgen caps:
zusammensetzt.
Speichern Sie die Ausgabe mit der Option -o filename
und ceph auth list
in eine Datei.
30.2.2.2 Abrufen von Informationen zu Benutzern #
Führen Sie folgendes Kommando aus, um einen bestimmten Benutzer, Schlüssel und Capabilities abzurufen:
cephuser@adm >
ceph auth get TYPE.ID
Beispiel:
cephuser@adm >
ceph auth get client.admin
exported keyring for client.admin
[client.admin]
key = AQA19uZUqIwkHxAAFuUwvq0eJD4S173oFRxe0g==
caps mds = "allow"
caps mon = "allow *"
caps osd = "allow *"
Entwickler können auch Folgendes ausführen:
cephuser@adm >
ceph auth export TYPE.ID
Das Kommando auth export
entspricht auth get
und gibt außerdem die interne Authentifizierungs-ID aus.
30.2.2.3 Hinzufügen von Benutzern #
Durch Hinzufügen eines Benutzers wird ein Benutzername (TYPE.ID
) erstellt sowie ein geheimer Schlüssel und die Capabilities, die im Kommando enthalten sind, mit dem sie den Benutzer erstellen.
Benutzerschlüssel ermöglichen es Benutzern, sich beim Ceph Storage Cluster zu authentifizieren. Durch ihre Capabilities sind Benutzer autorisiert, an Ceph Monitors (mon), Ceph OSDs (osd) oder Ceph Metadata Server (mds) zu lesen, zu schreiben und Vorgänge auszuführen.
Zum Hinzufügen von Benutzern stehen einige Kommandos zur Verfügung:
ceph auth add
Dieses Kommando ist die herkömmliche Methode zum Hinzufügen von Benutzern. Es erstellt den Benutzer, generiert einen Schlüssel und fügt beliebige angegebene Capabilities hinzu.
ceph auth get-or-create
Dieses Kommando ist oft die bequemste Methode zum Erstellen eines Benutzers, weil es ein Schlüsseldateiformat mit dem Benutzernamen (in Klammern) und dem Schlüssel zurückgibt. Wenn der Benutzer bereits vorhanden ist, gibt dieses Kommando einfach den Benutzernamen und den Schlüssel im Schlüsseldateiformat zurück. Speichern Sie die Ausgabe mit der Option
-o filename
in eine Datei.ceph auth get-or-create-key
Dieses Kommando ist eine bequeme Methode zum Erstellen eines Benutzers. Es gibt (nur) den Schlüssel des Benutzers zurück. Dies ist nützlich für Clients, die nur den Schlüssel benötigen (beispielsweise
libvirt
). Wenn der Benutzer bereits vorhanden ist, gibt dieses Kommando einfach den Schlüssel zurück. Speichern Sie die Ausgabe mit der Option-o filename
in eine Datei.
Beim Erstellen von Client-Benutzern können Sie auch einen Benutzer ohne Capabilities erstellen. Ein Benutzer ohne Capabilities kann nichts anderes als authentifizieren. Ein derartiger Client kann nicht die Cluster-Zuordnung vom Monitor abrufen. Es ist jedoch möglich, einen Benutzer ohne Capabilities zu erstellen, wenn Sie später Capabilities mit dem Kommando ceph auth caps
hinzufügen möchten.
Ein normaler Benutzer verfügt zumindest über Lese-Capabilities für den Ceph Monitor und Lese- und Schreib-Capabilities für Ceph OSDs. Außerdem sind die OSD-Berechtigungen eines Benutzers oft auf den Zugriff auf einen bestimmten Pool beschränkt.
cephuser@adm >
ceph auth add client.john mon 'allow r' osd \ 'allow rw pool=liverpool'cephuser@adm >
ceph auth get-or-create client.paul mon 'allow r' osd \ 'allow rw pool=liverpool'cephuser@adm >
ceph auth get-or-create client.george mon 'allow r' osd \ 'allow rw pool=liverpool' -o george.keyringcephuser@adm >
ceph auth get-or-create-key client.ringo mon 'allow r' osd \ 'allow rw pool=liverpool' -o ringo.key
Wenn Sie einem Benutzer die Capabilities für OSDs gewähren, aber nicht den Zugriff auf bestimmte Pools beschränken, dann hat der Benutzer Zugriff auf alle Pools im Cluster.
30.2.2.4 Bearbeiten der Befähigungen für Benutzer #
Mit dem Kommando ceph auth caps
können Sie einen Benutzer angeben und die Capabilities dieses Benutzers ändern. Wenn Sie neue Capabilities festlegen, werden die aktuellen damit überschrieben. Führen Sie das Kommando ceph auth get USERTYPE aus, um die aktuellen Capabilities anzuzeigen.BENUTZER-ID
. Zum Hinzufügen von Capabilities müssen Sie auch die bestehenden Capabilities angeben, wenn Sie folgende Form verwenden:
cephuser@adm >
ceph auth caps USERTYPE.USERID daemon 'allow [r|w|x|*|...] \
[pool=pool-name] [namespace=namespace-name]' [daemon 'allow [r|w|x|*|...] \
[pool=pool-name] [namespace=namespace-name]']
Beispiel:
cephuser@adm >
ceph auth get client.johncephuser@adm >
ceph auth caps client.john mon 'allow r' osd 'allow rw pool=prague'cephuser@adm >
ceph auth caps client.paul mon 'allow rw' osd 'allow r pool=prague'cephuser@adm >
ceph auth caps client.brian-manager mon 'allow *' osd 'allow *'
Zum Entfernen einer Capability können Sie diese zurücksetzen. Wenn der Benutzer auf einen bestimmten Daemon, auf den er vorher zugreifen konnte, keinen Zugriff mehr haben soll, geben Sie eine leere Zeichenkette an:
cephuser@adm >
ceph auth caps client.ringo mon ' ' osd ' '
30.2.2.5 Löschen von Benutzern #
Einen Benutzer löschen Sie mit ceph auth del
:
cephuser@adm >
ceph auth del TYPE.ID
Dabei steht TYPE für client
, osd
, mon
oder mds
und ID ist der Benutzername oder die ID des Daemon.
Wenn Sie Benutzer mit Berechtigungen genau für einen Pool erstellt haben, der nicht mehr vorhanden ist, sollten Sie diese Benutzer ebenfalls löschen.
30.2.2.6 Ausgabe des Benutzerschlüssels #
Führen Sie folgendes Kommando aus, um die Authentifizierungsschlüssel eines Benutzers in der Standardausgabe auszugeben:
cephuser@adm >
ceph auth print-key TYPE.ID
Dabei steht TYPE für client
, osd
, mon
oder mds
und ID ist der Benutzername oder die ID des Daemon.
Die Ausgabe eines Benutzerschlüssels ist nützlich, wenn Sie in einer Client-Software einen Benutzerschlüssel (wie zum Beispiel libvirt
) angeben müssen. Beispiel:
#
mount -t ceph host:/ mount_point \
-o name=client.user,secret=`ceph auth print-key client.user`
30.2.2.7 Importieren von Benutzern #
Importieren Sie einen oder mehrere Benutzer mit ceph auth import
und geben Sie einen Schlüsselbund an:
cephuser@adm >
ceph auth import -i /etc/ceph/ceph.keyring
Der Ceph Storage Cluster fügt neue Benutzer, deren Schlüssel und Capabilities hinzu und aktualisiert bestehende Benutzer, deren Schlüssel und Capabilities.
30.2.3 Verwalten von Schlüsselbunden #
Wenn Sie über einen Ceph-Client auf Ceph zugreifen, sucht der Cient nach einem lokalen Schlüsselbund. Ceph legt standardmäßig in der Schlüsselbundeinstellung vorab die folgenden vier Schlüsselbundnamen fest. Sie müssen diese daher nicht in der Ceph-Konfigurationsdatei festlegen, es sei denn, Sie möchten die Standardwerte überschreiben:
/etc/ceph/cluster.name.keyring /etc/ceph/cluster.keyring /etc/ceph/keyring /etc/ceph/keyring.bin
Die Metavariable cluster ist Ihr Ceph-Cluster-Name, der durch den Namen in der Ceph-Konfigurationsdatei definiert ist. ceph.conf
bedeutet, dass der Cluster-Name ceph
lautet, was ceph.keyring
ergibt. Die Metavariable name ist der Benutzertyp und die Benutzer-ID, wie zum Beispiel client.admin
, was ceph.client.admin.keyring
ergibt.
Nach Erstellung eines Benutzers (zum Beispiel client.ringo
) müssen Sie den Schlüssel abrufen und diesen zu einem Schlüsselbund auf einem Ceph-Client hinzufügen, sodass der Benutzer Zugriff auf den Ceph Storage Cluster hat.
In Abschnitt 30.2, „Schlüsselverwaltungsbereiche“ finden Sie detaillierte Informationen zum Auflisten, Abrufen, Hinzufügen, Bearbeiten und Löschen von Benutzern direkt im Ceph Storage Cluster. Ceph stellt jedoch auch das ceph-authtool
-Dienstprogramm zur Verfügung, mit dem Schlüsselbunde von einem Ceph-Client aus verwaltet werden.
30.2.3.1 Erstellen eines Schlüsselbunds #
Wenn Sie zum Erstellen von Benutzern wie in Abschnitt 30.2, „Schlüsselverwaltungsbereiche“ beschrieben vorgehen, dann müssen Sie den Ceph-Clients Benutzerschlüssel zur Verfügung stellen. Die Clients rufen den Schlüssel für den angegebenen Benutzer ab und authentifizieren diesen im Ceph Storage Cluster. Ceph-Clients greifen auf Schlüsselbunde zu, um einen Benutzernamen zu ermitteln und den Schlüssel des Benutzer abzurufen:
cephuser@adm >
ceph-authtool --create-keyring /path/to/keyring
Wir empfehlen, beim Erstellen eines Schlüsselbunds mit mehreren Benutzern den Cluster-Namen (beispielsweise cluster.keyring) als Schlüsselbunddateinamen zu verwenden und diesen im Verzeichnis /etc/ceph
zu speichern. Die Standardeinstellung der Schlüsselbundkonfiguration übernimmt den Dateinamen, ohne dass Sie diesen in der lokalen Kopie Ihrer Ceph-Konfigurationsdatei angeben müssen. Erstellen Sie beispielsweise ceph.keyring
mit dem folgenden Kommando:
cephuser@adm >
ceph-authtool -C /etc/ceph/ceph.keyring
Wir empfehlen, beim Erstellen eines Schlüsselbunds für einen einzelnen Benutzer den Cluster-Namen, den Benutzertyp und Benutzernamen zu verwenden und im Verzeichnis /etc/ceph
zu speichern, beispielsweise ceph.client.admin.keyring
für den client.admin
-Benutzer.
30.2.3.2 Hinzufügen eines Benutzers zu einem Schlüsselbund #
Beim Hinzufügen eines Benutzers zum Ceph Storage Cluster (weitere Informationen hierzu finden Sie in Abschnitt 30.2.2.3, „Hinzufügen von Benutzern“) können Sie den Benutzer, den Schlüssel und die Capabilities abrufen und den Benutzer in einem Schlüsselbund speichern.
Wenn Sie nur einen Benutzer pro Schlüsselbund verwenden möchten, dann speichern Sie die Ausgabe im Schlüsselbunddateiformat mit dem Kommando ceph auth get
und der Option -o
. Führen Sie beispielsweise zum Erstellen eines Schlüsselbunds für den client.admin
-Benutzer folgendes Kommando aus:
cephuser@adm >
ceph auth get client.admin -o /etc/ceph/ceph.client.admin.keyring
Wenn Sie Benutzer in einen Schlüsselbund importieren möchten, dann geben Sie mit ceph-authtool
den Ziel-Schlüsselbund und den Ursprungs-Schlüsselbund an:
cephuser@adm >
ceph-authtool /etc/ceph/ceph.keyring \
--import-keyring /etc/ceph/ceph.client.admin.keyring
Wenn Ihr Schlüsselbund beschädigt ist, löschen Sie Ihren Schlüssel aus dem Verzeichnis /etc/ceph
und erstellen Sie einen neuen Schlüssel mit denselben Anweisungen aus Abschnitt 30.2.3.1, „Erstellen eines Schlüsselbunds“.
30.2.3.3 Erstellen eines Benutzers #
Ceph stellt das Kommando ceph auth add
zum Erstellen eines Benutzers direkt im Ceph Storage Cluster zur Verfügung. Sie können jedoch auch einen Benutzer, die Schlüssel und Capabilities direkt im Ceph-Client-Schlüsselbund erstellen. Danach importieren Sie den Benutzer im Ceph Storage Cluster:
cephuser@adm >
ceph-authtool -n client.ringo --cap osd 'allow rwx' \
--cap mon 'allow rwx' /etc/ceph/ceph.keyring
Es ist auch möglich, einen Schlüsselbund zu erstellen und gleichzeitig einen neuen Benutzer zum Schlüsselbund hinzuzufügen:
cephuser@adm >
ceph-authtool -C /etc/ceph/ceph.keyring -n client.ringo \
--cap osd 'allow rwx' --cap mon 'allow rwx' --gen-key
In den obigen Szenarien ist der neue Benutzer client.ringo
nur im Schlüsselbund vorhanden. Zum Hinzufügen des neuen Benutzers zum Ceph Storage Cluster müssen Sie den neuen Benutzer noch zum Cluster hinzufügen:
cephuser@adm >
ceph auth add client.ringo -i /etc/ceph/ceph.keyring
30.2.3.4 Bearbeiten von Benutzern #
Geben Sie zum Bearbeiten der Capabilities eines Benutzerdatensatzes in einem Schlüsselbund den Schlüsselbund und den Benutzer gefolgt von den Capabilities an:
cephuser@adm >
ceph-authtool /etc/ceph/ceph.keyring -n client.ringo \
--cap osd 'allow rwx' --cap mon 'allow rwx'
Zum Aktualisieren des bearbeiteten Benutzers in der Ceph-Cluster-Umgebung müssen Sie die Änderungen aus dem Schlüsselbund in den Benutzereintrag im Ceph-Cluster importieren:
cephuser@adm >
ceph auth import -i /etc/ceph/ceph.keyring
Detaillierte Informationen zum Aktualisieren eines Benutzers im Ceph Storage Cluster von einem Schlüsselbund aus finden Sie in Abschnitt 30.2.2.7, „Importieren von Benutzern“.
30.2.4 Verwendung der Kommandozeile #
Das Kommando ceph
unterstützt die folgenden Optionen in Bezug auf die Bearbeitung von Benutzername und Geheimnis:
--id
oder--user
Ceph kennzeichnet Benutzer mit einem Typ und einer ID (TYPE.ID, wie
client.admin
oderclient.user1
). Mit den Optionenid
,name
und-n
geben Sie den ID-Teil des Benutzernamens an (beispielsweiseadmin
oderuser1
). Sie können den Benutzer mit ‑‑id angeben und den Typ auslassen. Geben Sie beispielsweise zum Angeben des Benutzers „client.foo“ Folgendes ein:cephuser@adm >
ceph --id foo --keyring /path/to/keyring healthcephuser@adm >
ceph --user foo --keyring /path/to/keyring health--name
oder-n
Ceph kennzeichnet Benutzer mit einem Typ und einer ID (TYPE.ID, wie
client.admin
oderclient.user1
). Die Optionen--name
und-n
ermöglichen es Ihnen, den vollständigen Benutzernamen anzugeben. Sie müssen den Benutzertyp angeben (normalerweiseclient
) mit der Benutzer-ID:cephuser@adm >
ceph --name client.foo --keyring /path/to/keyring healthcephuser@adm >
ceph -n client.foo --keyring /path/to/keyring health--keyring
Der Pfad zum Schlüsselbund mit einem oder mehreren Benutzernamen und Geheimnissen. Die Option
--secret
hat zwar dieselbe Funktion, funktioniert jedoch nicht bei Object Gateway, weil dort--secret
einem anderen Zweck dient. Es ist möglich, einen Schlüsselbund mitceph auth get-or-create
abzurufen und ihn lokal zu speichern. Diese Vorgehensweise wird bevorzugt, weil Sie Benutzernamen wechseln können, ohne den Schlüsselbundpfad zu ändern:cephuser@adm >
rbd map --id foo --keyring /path/to/keyring mypool/myimage