FirebirdSQL logo

Eine Rolle ist ein Datenbankobjekt, das einen Satz von Privilegien verpackt.Rollen implementieren das Konzept der Zugriffskontrolle auf Gruppenebene.Der Rolle werden mehrere Berechtigungen gewährt, und diese Rolle kann dann einem oder mehreren Benutzern gewährt oder entzogen werden.

Ein Benutzer, dem eine Rolle zugewiesen wurde, muss diese Rolle in seinen Anmeldeinformationen angeben, um die zugehörigen Berechtigungen auszuüben.Alle anderen Berechtigungen, die dem Benutzer direkt gewährt werden, sind von seiner Anmeldung mit der Rolle nicht betroffen.Die gleichzeitige Anmeldung mit mehreren Rollen wird nicht unterstützt.

In diesem Abschnitt werden die Aufgaben zum Erstellen und Löschen von Rollen erläutert.

CREATE ROLE

Verwendet für

Erstellen eines neuen ROLE-Objekts

Verfügbar in

DSQL, ESQL

Syntax
CREATE ROLE rolename
  [SET SYSTEM PRIVILEGES TO <sys_privileges>]

<sys_privileges> ::=
  <sys_privilege> [, <sys_privilege> ...]

<sys_privilege> ::=
    USER_MANAGEMENT | READ_RAW_PAGES
  | CREATE_USER_TYPES | USE_NBACKUP_UTILITY
  | CHANGE_SHUTDOWN_MODE | TRACE_ANY_ATTACHMENT
  | MONITOR_ANY_ATTACHMENT | ACCESS_SHUTDOWN_DATABASE
  | CREATE_DATABASE | DROP_DATABASE
  | USE_GBAK_UTILITY | USE_GSTAT_UTILITY
  | USE_GFIX_UTILITY | IGNORE_DB_TRIGGERS
  | CHANGE_HEADER_SETTINGS
  | SELECT_ANY_OBJECT_IN_DATABASE
  | ACCESS_ANY_OBJECT_IN_DATABASE
  | MODIFY_ANY_OBJECT_IN_DATABASE
  | CHANGE_MAPPING_RULES | USE_GRANTED_BY_CLAUSE
  | GRANT_REVOKE_ON_ANY_OBJECT
  | GRANT_REVOKE_ANY_DDL_RIGHT
  | CREATE_PRIVILEGED_ROLES | GET_DBCRYPT_INFO
  | MODIFY_EXT_CONN_POOL | REPLICATE_INTO_DATABASE
Table 1. CREATE ROLE-Anweisungsparameter
Parameter Beschreibung

rolename

RollennameDie maximale Länge beträgt 63 Zeichen

sys_privilege

Zu erteilende Systemberechtigung

Die Anweisung CREATE ROLE erzeugt ein neues Rollenobjekt, dem nachträglich ein oder mehrere Privilegien erteilt werden können.Der Name einer Rolle muss unter den Rollennamen in der aktuellen Datenbank eindeutig sein.

Warning

Es ist ratsam, den Namen einer Rolle auch unter den Benutzernamen eindeutig zu machen.Das System verhindert nicht die Erstellung einer Rolle, deren Name mit einem bestehenden Benutzernamen kollidiert, aber in diesem Fall kann der Benutzer keine Verbindung zur Datenbank herstellen.

docnext count = 8

Wer kann eine Rolle erstellen?

Die CREATE ROLE-Anweisung kann ausgeführt werden durch:

  • Administratoren

  • Benutzer mit dem Privileg CREATE ROLE, mit den folgenden Einschränkungen

    • Das Setzen von Systemprivilegien erfordert auch das Systemprivileg CREATE_PRIVILEGED_ROLES

Der Benutzer, der die CREATE ROLE-Anweisung ausführt, wird Eigentümer der Rolle.

CREATE ROLE-Beispiele

Erstellen einer Rolle namens SELLERS
CREATE ROLE SELLERS;
Erstellen einer Rolle SELECT_ALL mit dem Systemprivileg, aus einem beliebigen auswählbaren Objekt auszuwählen
CREATE ROLE SELECT_ALL
  SET SYSTEM PRIVILEGES TO SELECT_ANY_OBJECT_IN_DATABASE;

ALTER ROLE

Verwendet für

Ändern einer Rolle

Verfügbar in

DSQL

Syntax
ALTER ROLE rolename
 { SET SYSTEM PRIVILEGES TO <sys_privileges>
 | DROP SYSTEM PRIVILEGES
 | {SET | DROP} AUTO ADMIN MAPPING }

<sys_privileges> ::=
  !! Siehe auch [fblangref40-security-role-create-de] !!
Table 1. ALTER ROLE-Anweisungsparameter
Parameter Beschreibung

rolename

Rollenname;die Angabe von etwas anderem als RDB$ADMIN schlägt fehl

sys_privilege

Zu erteilendes Systemprivileg

ALTER ROLE kann verwendet werden, um einer Rolle Systemberechtigungen zu erteilen oder zu entziehen, oder die Fähigkeit für Windows-Administratoren zu aktivieren und zu deaktivieren, administrator-privilegien beim Anmelden automatisch anzunehmen.

Diese letzte Fähigkeit kann nur eine Rolle betreffen: die vom System generierte Rolle RDB$ADMIN, die in jeder Datenbank von ODS 11.2 oder höher vorhanden ist.

Einzelheiten zur automatischen Administratorzuordnung finden Sie unter AUTO ADMIN MAPPING.

Es ist nicht möglich, Systemprivilegien selektiv zu erteilen oder zu entziehen.Nur die Berechtigungen, die in der SET SYSTEM PRIVILEGES-Klausel aufgelistet sind, stehen der Rolle nach dem Commit zur Verfügung, und DROP SYSTEM PRIVILEGES entfernt alle Systemberechtigungen von dieser Rolle.

Wer kann eine Rolle ändern?

Die ALTER ROLE-Anweisung kann ausgeführt werden durch:

  • Administratoren

  • Benutzer mit dem Privileg ALTER ANY ROLE, mit den folgenden Einschränkungen

    • Das Setzen oder Löschen von Systemprivilegien erfordert auch das Systemprivileg CREATE_PRIVILEGED_ROLES

    • Das Setzen oder Löschen der automatischen Admin-Zuordnung erfordert auch das Systemprivileg CHANGE_MAPPING_RULES

ALTER ROLE-Beispiele

Löschen Sie alle Systemberechtigungen einer Rolle namens SELECT_ALL
ALTER ROLE SELLERS
  DROP SYSTEM PRIVILEGES;
Gewähren Sie einer Rolle SELECT_ALL das Systemprivileg, um aus einem beliebigen auswählbaren Objekt auszuwählen
ALTER ROLE SELECT_ALL
  SET SYSTEM PRIVILEGES TO SELECT_ANY_OBJECT_IN_DATABASE;

DROP ROLE

Verwendet für

Eine Rolle löschen

Verfügbar in

DSQL, ESQL

Syntax
DROP ROLE rolename

Die Anweisung DROP ROLE löscht eine bestehende Rolle.Es braucht nur ein einziges Argument, den Namen der Rolle.Nachdem die Rolle gelöscht wurde, wird allen Benutzern und Objekten, denen die Rolle gewährt wurde, der gesamte Satz von Berechtigungen entzogen.

Wer kann eine Rolle löschen?

Die DROP ROLE-Anweisung kann ausgeführt werden durch:

  • Administratoren

  • Der Besitzer der Rolle

  • Benutzer mit dem DROP ANY ROLE-Privileg

DROP ROLE-Beispiele

Löschen der Rolle SELLERS
DROP ROLE SELLERS;