Rollen erleichtern das Gewähren und Entziehen von Berechtigungen für Benutzer einer relationalen Datenbank. Anstatt Berechtigungen für jeden Benutzer einzeln zu verwalten, werden Berechtigungen für jede Rolle verwaltet und alle Änderungen gelten für alle Benutzer, die dieser Rolle zugewiesen sind. Organisationen erstellen häufig mehrere Rollen, um ihren einzigartigen Anforderungen gerecht zu werden.
Ausgewählte verwandte Inhalte:
Allerdings kommen die meisten Datenbanken mit einer vordefinierten Rolle namens PUBLIC. In diesem Blog erklären wir, was die Rolle PUBLIC in Oracle bedeutet und die wichtigsten Best Practices für deren Verwendung.
Was ist die PUBLIC-Rolle in Oracle?
Die PUBLIC-Rolle ist eine spezielle Rolle, die jeder Datenbankbenutzer bei seiner Erstellung automatisch erbt. Die Dokumentation zu Oracle 11g besagt, dass die PUBLIC-Rolle für alle Datenbankbenutzer zugänglich ist und daher alle Berechtigungen und Rollen, die der PUBLIC-Rolle gewährt werden, für jeden Benutzer verfügbar sind. Obwohl ein Administrator einen Befehl ausführen kann, um die PUBLIC-Rolle einem bestimmten Benutzer zuzuweisen oder zu entziehen, hat dies keine praktische Auswirkung; der Benutzer verfügt immer über diese Rolle.
Es ist interessant zu bemerken, dass die DBA_ROLES-Ansicht die PUBLIC-Rolle nicht auflistet:
SQL> SELECT * FROM DBA_ROLES WHERE ROLE =’PUBLIC’;
no rows selected
Allerdings zeigt eine Abfrage der SYS.USER$ Tabelle, dass PUBLIC tatsächlich existiert und sein type# Wert von 0 deutet darauf hin, dass es sich um eine Rolle handelt:
SQL> SELECT user#, type#, name FROM SYS.USER$ WHERE type# = 0 ORDER BY 1;
Die implizite Natur der Zuweisung der PUBLIC-Rolle an alle Datenbankbenutzer kann im folgenden Beispiel gesehen werden. Das Gewähren des CONNECT-Privilegs an die PUBLIC-Rolle ermöglicht es, dass es vom neuen Benutzer geerbt wird, ohne dass es ausdrücklich erteilt werden muss.
SQL> CREATE USER bob IDENTIFIED BY MyPassword;
SQL> conn bob/MyPassword;
Best Practices für die PUBLIC-Rolle
Die PUBLIC-Rolle sollte nicht für das Privilegienmanagement von Benutzern verwendet werden. Mit anderen Worten, weisen Sie niemals ein Privileg oder eine Rolle an PUBLIC zu, es sei denn, die Absicht ist, diese Privilegien und Rollen allen aktuellen Datenbankbenutzern und zukünftig erstellten Benutzern zu gewähren.
Tatsächlich wird das direkte Gewähren von Privilegien und Rollen an die PUBLIC-Rolle als finding von der Defense Information Systems Agency (DISA) eingestuft: DISA Security Technical Implementation Guide (STIG) Schwachstellen-ID V-61435 besagt, dass Datenbank- oder Systemprivilegien nicht an PUBLIC vergeben werden sollten, und V-61443 besagt, dass Anwendungsrollenberechtigungen nicht an PUBLIC zugewiesen werden sollten.
Um das zu verstehen, benötigt man etwas Kontext. In einer Container-Datenbank (CDB) oder einer ansteckbaren Datenbank (PDB) gibt es das Konzept von gemeinsamen Rollen und lokalen Rollen. In einer CDB werden gemeinsame Rollen im Root erstellt und sind allen aktuellen und zukünftigen Containern bekannt. In einer PDB-Umgebung sind lokale Rollen nur für eine spezifische PDB lokal; sie können nur innerhalb der PDB verwendet werden, in der sie definiert sind.
Allerdings sind Rollen in einer Oracle Multi-Tenant-Umgebung etwas komplizierter. Standardmäßig werden alle Privilegien, die Oracle der Rolle PUBLIC gewährt, lokal und gemeinsam vergeben. Laut Oracle sollten Privilegien niemals gemeinsam an die Rolle PUBLIC vergeben werden. Mit anderen Worten, man sollte niemals irgendeine Art von Privilegien an die Rolle PUBLIC im Root oder CDB vergeben. Obwohl es möglich ist, die Rolle PUBLIC innerhalb jeder CDB separat zu ändern, wird dies nicht empfohlen, es sei denn, es ist notwendig.
Alle Benutzerrechten, die der PUBLIC-Rolle gewährt wurden, können ohne negative Folgen entzogen werden. Aber Vorsicht ist geboten, wenn standardmäßig gewährte Privilegien der PUBLIC-Rolle, die Teil der Datenbankerstellung sind, entzogen werden, da diese Privilegien in einem zukünftigen Upgrade- oder Patchvorgang erneut gewährt werden könnten.
Um Hilfe beim Auflisten aller Oracle-Rollen und -Privilegien, einschließlich der PUBLIC-Rolle, zu erhalten, sollten Sie in eine Drittanbieterlösung wie Netwrix StealthAUDIT, die detaillierte Berechtigungsberichte direkt zur Verfügung stellen kann, investieren.
Teilen auf
Erfahren Sie mehr
Über den Autor
Kevin Joyce
Direktor für Product Management
Director of Product Management bei Netwrix. Kevin hat eine Leidenschaft für Cybersicherheit, insbesondere das Verständnis der Taktiken und Techniken, die Angreifer nutzen, um Umgebungen von Organisationen auszunutzen. Mit acht Jahren Erfahrung im Produktmanagement, mit Schwerpunkt auf Active Directory und Windows-Sicherheit, hat er diese Leidenschaft genutzt, um Lösungen für Organisationen zu entwickeln, die ihre Identitäten, Infrastruktur und Daten schützen helfen.
Erfahren Sie mehr zu diesem Thema
Datenschutzgesetze der Bundesstaaten: Unterschiedliche Ansätze zum Datenschutz
Beispiel für Risikoanalyse: Wie man Risiken bewertet
Was ist elektronisches Records Management?
Reguläre Ausdrücke für Anfänger: Wie man beginnt, sensible Daten zu entdecken
Externe Freigabe in SharePoint: Tipps für eine kluge Implementierung