Wie gehen Sie mit dem Mangel an Berechtigungen auf Schemaebene in Oracle um? Die Sicherheitsarchitektur von Oracle eignet sich gut für Anwendungen, die nur Berechtigungen auf Objektebene benötigen, und für Datenbankadministratoren, die nur wenige Einschränkungen benötigen. Es scheint jedoch eine große Lücke in der Architektur zu geben, wenn Programmierer mit einer Front-End-Anwendung und PL / SQL in mehreren Schemata entwickeln. Hier sind einige meiner Optionen mit ihren Nachteilen:
Lassen Sie jeden Programmierer in seinem eigenen Schema entwickeln. Der DBA gewährt Programmierern, die sie benötigen, Berechtigungen auf Objektebene. Jede Paketentwicklung muss von einem DBA durchgeführt werden. Der größte Nachteil ist, dass Programmierer die Datenbank wie einen kleinen Eimer zum Nachteil der Datenbankleistung verwenden. Ich möchte, dass sich die Programmierer in der Datenbank entwickeln, aber diese Methode würde sie stark entmutigen.
Geben Sie jedem Programmierer den Benutzernamen / das Kennwort für das etwa ein Dutzend Schemas, in dem er die Entwicklung durchführen muss. Erteilen Sie diesen Anwendungsschemas die Berechtigung zum Erstellen von Prozeduren, Tabellen usw. Einige der Nachteile dieses Ansatzes bestehen darin, dass Programmierer mehrere Anmeldungen verwalten müssen und müssen Selten als sie selbst eingeloggt. Die Entwicklung von Cross-Schemas ist ebenfalls schwierig.
Gewähren Sie den Programmierern Proxy-Authentifizierungsrechte für jedes Schema, für das sie die Entwicklung durchführen müssen. Dadurch bleiben sie als sie selbst angemeldet, ohne ihnen andere Berechtigungen als das Proxy-Privileg erteilen zu müssen. Zu den Nachteilen gehören, dass Programmierer für jedes Schema, für das sie einen Proxy einrichten, separate Verbindungen pflegen müssen, dass die Entwicklung von Cross-Schemas umständlicher ist, da die Verbindungen ständig geändert werden müssen und Pakete, die öffentliche Datenbankverknüpfungen mit übergebener Authentifizierung verwenden, nicht innerhalb von Proxy-Verbindungen kompiliert werden können.
Gewähren Sie jedem Programmierer DBA-Berechtigungen. - Der Nachteil hier ist die Sicherheit. Kein Schema-Programmierer kann von einem Schema ferngehalten werden, und jeder Programmierer kann sich als ein anderer Programmierer (DBA) ausgeben.
Es scheint eine fehlende Option zu geben, um jedem Programmierer SELECT / INSERT / CREATE / etc. Zu gewähren. Berechtigungen für das Schema, in dem sie die Entwicklung durchführen müssen. Sie melden sich als sie selbst an, um ihre Arbeit über eine einzige Verbindung zu erledigen. Neue Objekte im Schema, auf die sie Zugriff haben, sind sofort verfügbar.
Vermisse ich etwas? Wie gehen Sie mit Anwendungsprogrammierern um, die PL / SQL entwickeln?
quelle
Antworten:
In den Tagen, als ich in einem Oracle-Shop arbeitete, hatten wir einen bestimmten Entwicklungsserver, der andere Sicherheitsbeschränkungen hatte als der Produktionsserver. Entwickler konnten alles tun, was sie brauchten, und dann gaben wir die erforderlichen Skripte an den DBA weiter, um sie auf den Produktionsserver anzuwenden.
Bei unseren kritischen Systemen (SCT Banner für die Nachverfolgung von Klassen und Schülern und Oracle Financials) gab es auch Test- und Seed-Server. Der Test diente zum Testen der Benutzerakzeptanz, bevor die Daten von dev auf prod migriert wurden. 'seed' war die Standardinstallation der Software. Sollten wir also einen Fehler finden, können wir überprüfen, ob es sich um etwas handelt, das wir eingeführt haben oder das von SCT oder der Oracle-Software stammt.
quelle
Verwenden Sie Rollen, um Objektgruppen zuzuordnen, und gewähren Sie dann Zugriff auf die Rollen
Die GRANT- Anweisung ermöglicht dem DBA Folgendes:
Da einer Rolle Objektrechte erteilt werden können, ist es relativ einfach, allen Tabellen in einem Schema einen Rollenzugriff zu gewähren:
In Verbindung mit der
GRANT CREATE TABLE
Ausgabe durch den entsprechenden Schema-Benutzer für die Rolle bedeutet dies, dass Entwickler Tabellen auswählen und erstellen können. Es ist nicht perfekt, da für eine erstellte Tabelle die erneute Ausführung des Skripts erforderlich ist. Es wird jedochWITH GRANT OPTION
empfohlen, dass jeder Entwickler der entsprechenden Rolle Zugriff auf die von ihm erstellte Tabelle gewähren kann.Dies deutet darauf hin, dass Sie Trigger auf DDL-Ebene erstellen können, mit denen der entsprechende Gewährungsprozess ausgeführt werden kann. Obwohl natürlich umfangreiche Tests erforderlich sind, sollte es möglich sein, mit der Anweisung create table den entsprechenden Rollen automatisch die entsprechenden Berechtigungen zu erteilen.
Bearbeiten -
Laut GRANT ist das
CREATE TABLE
Privileg:Indem Sie ihnen vom richtigen Benutzer die Option "Tabelle erstellen", "Tabelle ändern" usw. geben , sollten sie auf das Schema dieses Benutzers zugreifen können, als ob sie der richtige Benutzer wären.
quelle