DOAG Datenbank Kolumne: Schema-Only-Accounts – User ohne Password

  • Erstellt von Markus Flechtner
  • Datenbank Kolumne, Oracle, Datenbank

In anderen Datenbanken sind "Benutzer" und "Schemata" getrennte Namensräume, bei Oracle gilt: "Ein Schema ist ein Benutzer mit Objekten“.

Grundsätzlich sollen Anwendungen auch mit diesen Schema-Benutzern arbeiten. Und wenn man daher verhindern will, dass sich Anwender als dieser "Schema-Benutzer" anmeldet, dann wird dieser Benutzer gerne gesperrt. Seit Oracle Database 18c geht das auch einfacher, mit den "Schema-Only-Accounts".

Vereinfacht gesagt sind "Schema-Only-Accounts" Benutzer ohne Password. Das wird deutlich wenn man einen derartigen Account anlegt:

SQL> create user doag_schema no authentication;

User created.

In der Dictionary-View DBA_USERS kann man diese Accounts anhand der Spalte AUTHENTICATION_TYPE erkennen:

SQL> select username,authentication_type 

  2 from dba_users where username like 'DOAG%';

USERNAME                 AUTHENTI

-------------------        ------------

DOAG_SCHEMA          NONE

DOAG_USER              PASSWORD

Direkte Anmeldungen unter diesem Account sind nicht möglich. Die Anmeldung als dieser Account erfolgt über einen Proxy-Benutzer. Dazu muss allerdings der Schema-Only-Account das Create-Session-Recht haben:

SQL> grant create session to doag_schema;

Grant succeeded.

Weiterhin braucht der Schema-Only-Account auch die üblichen Rechte, die nötig sind, um Objekte anzulegen (CREATE-Rechte, Quotas auf Tablespaces etc.). Und natürlich muss der User, den man für die Verbindung nutzen möchte, das Recht haben, sich als Proxy-Benutzer für dieses Schema anzumelden:

SQL> ALTER USER doag_schema GRANT CONNECT THROUGH doag_user;

User altered.

Anschließend kann sich der Benutzer DOAG_USER mit seinem Password als DOAG_SCHEMA anmelden:

SQL> Connect doag_user[doag_schema]/doag@playpdb

Connected.

 

SQL> show user

USER is “DOAG_SCHEMA”

Und dann muss man die üblichen Sachen machen, die unter einem solche Schema bei Installationen oder Applikations-Upgrades erforderlich sind: Tabellen anlegen oder ändern, Prozeduren anlegen usw.

Wenn man einen vorhandenen Benutzer zum "Schema-Only-Account" machen möchte, kann man dem Benutzer einfach das Password entziehen:

SQL> ALTER USER BEISPIEL NO AUTHENTICATION;

User altered.

Und andersherum kann man aus einem "Schema-Only-Account" einen normalen Benutzer machen, indem man ein Password vergibt:

SQL> ALTER USER BEISPIEL IDENTIFIED BY geheim;

User altered.

Das Feature ist seit Oracle Database 18c verfügbar. Seit Oracle Database 19c sind auch alle administrativen Oracle-Accounts außer SYS und SYSTEM Schema-Only-Accounts um direkte Anmeldungen zu verhindern. Früher hatten diese Accounts oft Standard-Passworte und das war ein Sicherheitsrisiko. 

Insgesamt bieten die Schema-Only-Accounts eine einfache Möglichkeit, Daten besser abzusichern, in dem sie für eine bessere Trennung zwischen Daten und Anwendungsbenutzern sorgen.

 

Markus Flechtner

DOAG Themenverantwortlicher Open Source

 

© Pixabay