Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 (Deutsch) » SQL Anywhere Server - Datenbankadministration » Benutzer- und Datenbanksicherheit » Benutzersicherheit (Rollen und Privilegien) » Praktische Einführung: Rollen und Privilegien erteilen (SQL)

 

Lektion 5: Rollen und Privilegien für UserB anzeigen (SQL)

Sie können die Rollen, Systemprivilegien und Privilegien auf Objektebene eines Benutzers anzeigen, einschließlich derjenigen, die der Benutzer durch Mitgliedschaft in anderen Rollen erbt.

Voraussetzungen

In dieser Lektion wird davon ausgegangen, dass Sie alle vorherigen Lektionen in dieser praktischen Einführung abgeschlossen haben. Siehe Lektion 4: UserA in eine benutzererweiterte Rolle konvertieren und diese Rolle UserB erteilen (SQL).

 Aufgabe
  1. Führen Sie in Interactive SQL die folgende Anweisung aus, um die Rollen und Privilegien von userB, einschließlich dazugehöriger Administrationsrechte, anzuzeigen:

    CALL sp_displayroles ( 'UserB', 'expand_down' );
    role_name parent_role_name grant_type role_level
    UserA (NULL) NO ADMIN 1
    PUBLIC (NULL) NO ADMIN 1
    dbo PUBLIC NO ADMIN 2
    PUBLIC UserA NO ADMIN 2
    DebugAndFix UserA ADMIN 2
    BACKUP DATABASE UserA NO ADMIN 2
    VALIDATE ANY OBJECT UserA NO ADMIN 2
    ALTER ANY OBJECT DebugAndFix NO ADMIN 3
    DEBUG ANY PROCEDURE DebugAndFix NO ADMIN 3
    dbo PUBLIC NO ADMIN 3

    Betrachten Sie den role_level-Wert als eine Ebene in einer Vererbungshierarchie, wobei UserB Ebene 1 ist:

    • Den Zeilen mit role_level-Wert 1 können Sie entnehmen, dass die Rolle UserA direkt UserB erteilt wurde. Außerdem sehen Sie, dass die PUBLIC-Rolle direkt UserB erteilt wurde. Die PUBLIC-Rolle wird neuen Benutzern automatisch erteilt.

    • Den Zeilen mit role_level-Wert 2 können Sie entnehmen, dass UserB die Rollen dbo und PUBLIC von UserA erbt. UserB erbt außerdem die DebugAndFix-Rolle, die UserA erteilt wurde, einschließlich der Administrationsrechte für die Rolle. Schließlich erbt UserB die Systemprivilegien BACKUP DATABASE und VALIDATE ANY OBJECT, die UserA erteilt wurden.

    • Den Zeilen mit role_level-Wert 3 können Sie entnehmen, dass UserB die Systemprivilegien ALTER ANY OBJECT und DEBUG ANY PROCEDURE von UserA erbt, der sie wiederum aus der DebugAndFix-Rolle geerbt hat. UserB erbt außerdem dbo nochmals, diesmal aus der PUBLIC-Rolle, die der DebugAndFix-Rolle beim Erstellen automatisch erteilt wurde.

  2. Führen Sie die folgende Anweisung aus, um die Privilegien von UserB auf Objektebene anzuzeigen.

    CALL sp_objectpermission ( 'UserB' );
    grantor grantee object_name owner object_type column_name permission grantable
    ... ... ... ... ... ... ... ...
    DBA UserA Employees GROUPO TABLE (NULL) SELECT J
    DBA UserA Employees GROUPO TABLE (NULL) UPDATE J
    SYS PUBLIC spt_collation_map dbo TABLE (NULL) SELECT N
    ... ... ... ... ... ... ... ...

    Die Ergebnismenge ist recht lang, weil die Benutzer vieles durch ihre Mitgliedschaft in der PUBLIC-Rolle erben. Die relevanten Zeilen sind jedoch die zweite und dritte Zeile in der Tabelle, da diese zeigen, dass UserB die Privilegien SELECT und UPDATE für die Tabelle "Employees" erbt. Außerdem sehen Sie hier, dass diese beiden Privilegien vom Benutzer DBA erteilt wurden.

  3. Administrationsrechte für Privilegien auf Objektebene können nicht vererbt werden. Deshalb kann UserB nicht die Administrationsrechte für die Privilegien SELECT und UPDATE in der Tabelle "Employees" erben, obwohl DBA UserA das Recht zum Erteilen dieser Privilegien erteilt hat. Das "J" in der grantable-Spalte für diese Zeilen gibt an, dass UserA Administrationsrechte für die Privilegien hat.

Ergebnisse

Sie haben die Rollen und Privilegien überprüft, die UserB erteilt und vererbt wurden.

 Siehe auch