Experten-Tipp: Oracle Fine-Grained Access Control für Netzwerk-Dienste konfigurieren

Datenbank-Administratoren sollten Oracle Fine-Grained Access Control für Netzwerk-Dienste kennen, um die Security des Systems garantieren zu können.

Dieser Artikel behandelt

Datenbankwartung

ÄHNLICHE THEMEN

In den vergangenen Jahren hat sich Oracle darauf konzentriert, die Sicherheit zu verbessern. Gerade Oracle Database...

11g wurde mit diversen Funktionen ausgeliefert, die die Oracle-Datenbank gegen Angriffe abhärtet. Das neue Oracle Fine-Grained Access Control für Netzwerk-Dienste wurde entwickelt, um Cyberkriminellen das Leben schwerer zu machen. Dies gilt in Bezug auf die in Oracle Database eingebauten Netzwerk-Dienste. Darüber lassen sich Angriffe ausführen.

Es gibt einige PL/SQL-Utility-Pakete bei Oracle, die Anwendern den Zugriff auf Netzwerk-Dienste erlauben. Dazu gehören UTL_TCP, UTL_SMTP, UTL_MAIL, UTL_HTTP und UTL_INADDR. Spielen Sie die Oracle-Datenbank mit einer Standard-Installation ein, werden diese Pakete mit dem EXECUTE-Recht für PUBLIC erzeugt. Vor Version 11g hatte praktisch jeder Anwender, der sich zu Oracle verbinden konnte, kompletten Zugriff auf diese Netzwerk-Dienste. Bei 10g und früher konnten Angreifer diese Möglichkeiten ausnutzen. Sie mussten lediglich Zugriff auf irgendein Datenbank-Konto erlangen. Bei 11g verhindert Fine-Grained Access Control den Zugriff auf diese Netzwerk-Dienste per Standard. Sollte Code eines oder mehrere dieser Pakete für Netzwerk-Anfragen nutzen wollen, würde ein Fehler ausgegeben. Datenbank-Administratoren können diese Netzwerk-Dienste bei Bedarf freigeben. Dabei lässt sich das Anwender-Konto bestimmen und die Einstellungen sehr spezifisch konfigurieren. Haben nur einige Konten Zugriff auf Netzwerk-Dienste, ist die Gefahr eines Einbruchs durch diese Kanäle wesentlich geringer.

Oracle Fine-Grained Access Control für Netzwerk-Dienste wird durch die Benutzung einer ACL (Access Control List) ermöglicht, die in Oracle XML DB gespeichert ist. Diese Liste definiert, welche Anwender Zugriff auf welche Netzwerk-Dienste haben. Genauer gesagt ist dort hinterlegt, welche Dienste für sie überhaupt zur Verfügung stehen. Sie können mittels Oracle XML DB eine Access Control List erzeugen. Allerdings ist es üblicher, ACLs mithilfe der Pakete DBMS_NETWORK_ACL_ADMIN und DBMS_NETWORK_ACL_UTILITY PL/SQL zu generieren.

Eine Access Control List kreieren

Es gibt einige grundlegende Schritte, um eine Access Control List mit dem Paket  DBMS_NETWORK_ACL_ADMIN zu erschaffen. Zunächst müssen Sie die CREATE_ACL-Prozedur benutzen, um eine Access Control List und die Privileg-Definitionen zu erzeugen.

BEGIN
            DBMS_NETWORK_ACL_ADMIN.CREATE_ACL (
                        acl => 'file_name.xml',
                        description => 'file description',
                        principal => 'user_or_role',
                        is_grant => TRUE|FALSE,
                        privilege => 'connect|resolve',
                        start_date => null|timestamp_with_time_zone,
                        end_date => null|timestamp_with_time_zone);
END;

Die bei der CREATE_ACL-Prozedur verwendeten Parameter sind:

  • acl – Das ist der Name, den Sie für die XML-Datei der Access Control List vergeben.
  • description – Eine kurze Beschreibung, was die Datei überhaupt macht.
  • principal – Das anfängliche Anwenderkonto oder die Rolle, denen man die Rechte zugewiesen (oder verweigert) hat.
  • is_grant – Dieser Parameter muss entweder auf TRUE oder FALSE stehen. Das bestimmt, ob das Recht gewährt oder verweigert wurde.
  • privilege – Dieser Schalter kann entweder auf connect oder resolve stehen. Connect gestattet den Zugriff auf einen Netzwerk-Dienst. Resolve erlaubt es einem Anwender, einen Hostnamen im Netzwerk oder eine IP-Adresse aufzulösen. Connect ist hier höher angesiedelt und schließt resolve mit ein.
  • start_date – Dieser Parameter ist optional. Er bestimmt, ab wann der Eintrag gültig ist.
  • end_date – Das ist äquivalent zu start_date. Sie können hier hinterlegen, ab wann der Eintrag seine Gültigkeit verliert.

Sobald die ACL existiert, können Sie weitere Anwender oder Rollen hinzufügen. Weiterhin ist es möglich, bestimmten Anwendern oder Rollen zusätzliche Rechte zu gewähren. Sie erledigen das mit der Prozedur ADD_PRIVILEGE:

BEGIN
            DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE (
                        acl => 'file_name.xml',
                        principal => 'user_or_role',
                        is_grant => TRUE|FALSE,
                        privilege => 'connect|resolve',
                        position => null|value,
                        start_date => null|timestamp_with_time_zone,
                        end_date => null|timestamp_with_time_zone);
END;

Einige der Parameter kennen Sie schon aus CREATE_ACL und diese haben auch exakt die gleiche Bedeutung. Einzig position finden Sie nicht in CREATE_ACL. Dieser Wert setzt die Priorität für mehrere Anwender oder Rollen.

Sobald alle benötigten Rechte und Anwender in der ACL hinterlegt sind, müssen Sie einem oder mehreren Computern die Oracle Fine-Grained Access Control List zuweisen. Dafür verwenden Sie die Prozedur ASSIGN_ACL. Sie können einzelnen Computern, Domänen oder IP-Subnetzen und TCP-Port-Bereichen (sofern spezifiziert) nur eine einzelne Access Control List zuweisen. Sollte dem Ziel bereits eine ACL zugeordnet sein, würde Oracle diese nun veraltete vor dem Zuweisen der neuen loslösen.

BEGIN
            DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL (
                        acl => 'file_name.xml',
                        host => 'network_host',
                        lower_port => null|port_number,
                        upper_port => null|port_number);
END;

Die Parameter für die Prozedur ASSIGN_ACL bedeuten:

  • acl – Der Name der XML-Datei, die als ACL verwendet wird.
  • host – Dies ist der Netzwerk-Host, für den die Access Control List bestimmt ist. Der Parameter kann entweder ein Name oder eine IP-Adresse sein. Sie können hier natürlich auch localhost verwenden.
  • lower_port – Dieser Parameter ist optional. Bei TCP-Verbindungen stellt es die untere Grenze des Port-Bereichs dar. Benutzen Sie diese Einstellung nur zusammen mit dem connect-Recht. Wenn Sie resolve einsetzen, lassen Sie diesen Parameter weg. Per Standard steht lower_port auf null. Es bedeutet, dass es bezüglich der Ports keine Einschränkung gibt. Die ACL gilt somit für jeden Port.
  • upper_port – Auch dieser Parameter ist optional. Ähnlich wie bei lower_port bestimmen Sie hier die Obergrenze des Port-Bereichs. Der Standard ist wieder null und es gelten die gleichen Regeln für connect und resolve wie auch bei lower_port.

Bei Oracle Database brauchen in der Regel nur wenigen Konten Zugriff auf die Netzwerk-Dienste. Wenn Sie mittels Oracle Fine-Grained Access Control List arbeiten, sollten Sie so restriktiv wie möglich sein. Nur so erhalten Sie die maximale Security. Unerfahrene Administratoren erschaffen sonst ganz einfach eine ACL, mit der das System so offen wie bei Version 10g ist. Das geht ganz schnell. Es ist natürlich weniger Wartungs-Aufwand. Man muss bei geänderten Anforderungen keine neuen Konten hinzufügen oder die Rechte anpassen. Allerdings bedeutet das auch, dass die Datenbank nun eine massive Sicherheitslücke hat. Verantwortungsvolle Datenbank-Administratoren beschäftigen sich mit der Funktion zumindest so viel, um sie angemessen einsetzen zu können.

Artikel wurde zuletzt im Juli 2013 aktualisiert

Pro+

Premium-Inhalte

Weitere Pro+ Premium-Inhalte und andere Mitglieder-Angebote, finden Sie hier.

0 Kommentare

Älteste Beiträge 

Passwort vergessen?

Kein Problem! Tragen Sie Ihre E-Mail-Adresse unten ein. Wir werden Ihnen eine E-Mail mit Ihrem Passwort schicken.

Ihr Passwort wurde an die folgende E-Mail-Adresse gesendet::

- GOOGLE-ANZEIGEN

SearchSecurity.de

SearchStorage.de

SearchNetworking.de

SearchDataCenter.de

Close