milvus-logo
LFAI
Home
  • Leitfaden für die Verwaltung

RBAC aktivieren

Wenn Sie RBAC aktivieren, können Sie den Zugriff auf bestimmte Milvus-Ressourcen (z. B. eine Sammlung oder eine Partition) oder Berechtigungen auf der Grundlage von Benutzerrollen und Privilegien steuern. Derzeit ist diese Funktion nur in Python und Java verfügbar.

Dieses Thema beschreibt, wie man RBAC aktiviert und Benutzer und Rollen verwaltet.

Die Codeschnipsel auf dieser Seite verwenden den neuen MilvusClient (Python) zur Interaktion mit Milvus. Neue MilvusClient SDKs für andere Sprachen werden in zukünftigen Updates veröffentlicht.

1. Initiieren Sie einen Milvus-Client, um eine Verbindung herzustellen

Nachdem Sie die Benutzerauthentifizierung aktiviert haben, verbinden Sie sich mit Ihrer Milvus-Instanz über token, das aus einem Benutzernamen und einem Passwort besteht. Standardmäßig verwendet Milvus den Benutzer root mit dem Passwort Milvus.

from pymilvus import MilvusClient

client = MilvusClient(
    uri='http://localhost:19530', # replace with your own Milvus server address
    token='root:Milvus' # replace with your own Milvus server token
)

2. Erstellen Sie einen Benutzer

Erstellen Sie einen Benutzer mit dem Namen user_1 und dem Passwort P@ssw0rd:

client.create_user(
    user_name='user_1',
    password='P@ssw0rd'
)

Nachdem Sie einen Benutzer angelegt haben, können Sie:

  • Ein Benutzerpasswort aktualisieren. Sie müssen sowohl das ursprüngliche als auch das neue Kennwort angeben.
client.update_password(
    user_name='user_1',
    old_password='P@ssw0rd',
    new_password='P@ssw0rd123'
)
  • Alle Benutzer auflisten.
client.list_users()

# output:
# ['root', 'user_1']
  • Die Rolle eines bestimmten Benutzers überprüfen.
client.describe_user(user_name='user_1')

# output:
# {'user_name': 'user_1', 'roles': ()}

3. Erstellen Sie eine Rolle

Im folgenden Beispiel wird eine Rolle mit dem Namen roleA erstellt.

client.create_role(
    role_name="roleA",
)

Nachdem Sie eine Rolle erstellt haben, können Sie:

  • Alle Rollen auflisten.
client.list_roles()

# output:
# ['admin', 'public', 'roleA']

4. Einer Rolle ein Privileg erteilen

Das folgende Beispiel zeigt, wie Sie der Rolle roleA das Recht erteilen, alle Sammlungen zu durchsuchen.

Die object_type gibt den Objekttyp an, der auch als Ressourcentyp verstanden werden kann. Derzeit sind die Werte Sammlung/Benutzer/Global usw. gültig, wobei Global bedeutet, dass es keinen spezifischen Ressourcentyp gibt. Die object_name ist der Name der Ressource. Wenn objecttypeCollection ist, kann sich der Objektname auf einen bestimmten Sammlungsnamen beziehen, oder Sie können * verwenden, um alle Sammlungen anzugeben. Wenn objecttypeGlobal ist, kann der Objektname nur mit * angegeben werden. Unter Benutzer und Rollen finden Sie weitere Arten von Berechtigungen, die Sie vergeben können.

Vergewissern Sie sich vor der Verwaltung von Rollenberechtigungen, dass Sie die Benutzerauthentifizierung aktiviert haben. Andernfalls kann ein Fehler auftreten. Informationen zur Aktivierung der Benutzerauthentifizierung finden Sie unter Authentifizierung des Benutzerzugriffs.

# grant privilege to a role

client.grant_privilege(
    role_name='roleA',
    object_type='User',  # value here can be Global, Collection or User, object type also depends on the API defined in privilegeName
    object_name='user_1',  # value here can be * or a specific user name if object type is 'User'
    privilege='SelectUser'
)

Nachdem Sie einer Rolle eine Berechtigung gewährt haben, können Sie:

  • Die einer Rolle gewährten Berechtigungen anzeigen.
client.describe_role(
    role_name='roleA'
)

# output:
# {'role': 'roleA',
#  'privileges': [{'object_type': 'User',
#    'object_name': 'user_1',
#    'db_name': 'default',
#    'role_name': 'roleA',
#    'privilege': 'SelectUser',
#    'grantor_name': 'root'}]}

5. Einem Benutzer eine Rolle gewähren

Die Rolle einem Benutzer gewähren, so dass dieser Benutzer alle Privilegien der Rolle erben kann.

# grant a role to a user

client.grant_role(
    user_name='user_1',
    role_name='roleA'
)

Überprüfen Sie nach der Vergabe der Rolle, ob sie vergeben wurde:

client.describe_user(
    user_name='user_1'
)

# output:
# {'user_name': 'user_1', 'roles': ('roleA')}

6. Entziehen von Privilegien

Seien Sie vorsichtig, wenn Sie die folgenden Operationen durchführen, da diese Operationen nicht rückgängig gemacht werden können.

  • Entziehen Sie ein Privileg aus einer Rolle. Wenn Sie ein Privileg entziehen, das der Rolle nicht gewährt wurde, tritt ein Fehler auf.
client.revoke_privilege(
    role_name='roleA',
    object_type='User',  # value here can be Global, Collection or User, object type also depends on the API defined in privilegeName
    object_name='user_1',  # value here can be * or a specific user name if object type is 'User'
    privilege='SelectUser'
)
  • Entfernen Sie einen Benutzer aus einer Rolle. Wenn Sie eine Rolle widerrufen, die dem Benutzer nicht gewährt wurde, tritt ein Fehler auf.
client.revoke_role(
    user_name='user_1',
    role_name='roleA'
)
  • Eine Rolle löschen.
client.drop_role(role_name='roleA')
  • Löschen eines Benutzers.
client.drop_user(user_name='user_1')

Was kommt als nächstes?

Übersetzt vonDeepLogo

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
Feedback

War diese Seite hilfreich?