DBA Tipp: Passworte (halbwegs) sicher weggeschlossen – der Secure External Password Store

Home DBA Tipp: Passworte (halbwegs) sicher weggeschlossen – der Secure External Password Store Verfasst von Thilo Solbrig, Oracle Certified Master 19 September 2023 11:20 Datenbank, DBA Tipp, Oracle Database, Security Es gibt Themen und Inhalte, die auch nach Jahren ihre Aktualität und Relevanz nicht verlieren. Deshalb freuen wir uns, dir heute einen unserer beliebten Beiträge aus dem Jahr 2021 erneut und frisch aufgemöbelt zu präsentieren. Warum? Weil die darin enthaltenen Informationen und Erkenntnisse nach wie vor genauso wichtig und wertvoll sind wie damals. Es geht um den Oracle Secure External Password Store (kurz: SEPS).Oracle adressiert mit dem Secure External Password Store das allseits präsente Problem, dass Logindaten für den Datenbankzugriff im Klartext lesbar in Scripts und Configfiles abgelegt sind. Er erlaubt es, Logincredentials in Oracle Wallets zu speichern und somit gegen all zu leichten Zugriff von außen zu schützen.Ein Eintrag im Secure External Password Store besteht aus drei Teilen:Connectstring zur Datenbank (der gleichzeitig den Indexbegriff im Password Store darstellt)UsernamePasswortWelche Schritte für die Einrichtung und Nutzung eines Secure External Password Stores erforderlich sind und wie wir das Ganze bewerten, liest du in dem folgenden Beitrag. Schritt 1: Anlegen des Wallets Für das Anlegen des Password Stores verwendet man bis Verison 11.1 ausschließlich das Secret Store Tool „mkstore“: mkstore -wrl /pfad/zum/wallet -create Ab 11.2 wird empfohlen, den Password Store mit dem Wallet-Tool „orapki“ anzulegen. Die dort neu hinzugekommene Option ‑auto_login_local verhindert laut Oracle, dass ein gestohlener Password Store von einem anderen User oder auf einem anderen Computer missbräuchlich verwendet werden kann. Warum das so leider nicht stimmt, wird gegen Ende des Artikels in der Bewertung erklärt. Der entsprechende Befehl wäre: orapki wallet create -wallet /pfad/zum/wallet -auto_login_local Legen wir also einen Password Store an und füllen ihn mit Credentials. Der Password Store ist übrigens immer mit einem Kennwort geschützt, das beim Erstellen des Store festgelegt wird. Man benötigt es sowohl für Schreibzugriffe als auch zum Auflisten des Inhaltes. Der Zugriff auf die Credentials für die Verbindung zu einer Datenbank erfolgt hingegen durch ein implizites Autologin. [oracle@client(orcl) wallets]$ mkstore -wrl /u01/app/oracle/product/19.0.0/client_1/owm/wallets/seps -create Oracle Secret Store Tool Release 19.0.0.0.0 - Production Version 19.4.0.0.0 Copyright (c) 2004, 2022, Oracle and/or its affiliates. All rights reserved. Enter password: Enter password again: Schritt 2: Eintragen der Credentials Wie bereits erwähnt, besteht jeder Eintrag im Password Store aus einem Triple von Connectdescriptor, Username und Kennwort. Ein Password Store kann mehrere Credentials aufnehmen. Welcher dieser Einträge letztlich für die Anmeldung an der Datenbank gezogen wird, richtet sich nach dem Connectdescriptor. Der Wert, der als Connect zur Datenbank verwendet wird, ist gleichzeitig auch der Credential-Index im Password Store. Da es sich dabei um reines Stringmatching handelt, steht dem Benutzer frei, ob er für die Einträge im Password Store Net Service Names oder ausformulierte Connectstrings verwendet. Auch die Verwendung der ezconnect-Syntax ist möglich.Wichtig ist nur, dass dann auch beim Connect zur Datenbank der richtige Net Service Name bzw. der bis hin zu Leerzeichen etc. exakt übereinstimmende Connectstring verwendet werden. Aufgrund der wesentlich besseren Lese- und Wartbarkeit sollte natürlich dem Net Service Name gegenüber dem ausformulierten Connectstring der Vorzug gegeben werden. Müssen in ein und dem selben Password Store unterschiedliche Credentials für die selbe Datenbank abgelegt werden, muss natürlich zwangsläufig für jedes Credential ein separater Net Service Name angelegt werden, da nur über den Net Service Name der richtige Username angesprochen werden kann. mkstore -wrl /pfad/zum/wallet \ -createCredential Connectdescriptor Username [Kennwort] Wir hinterlegen z.B. den User OE mit dem Kennwort „oe“ folgendermaßen (der Net Service Name ORCL4OE wird weiter unten eingerichtet): [oracle@client(orcl) wallets]$ mkstore \ -wrl /u01/app/oracle/product/19.0.0/client_1/owm/wallets/seps \ -createCredential ORCL4OE oe oe Oracle Secret Store Tool Release 19.0.0.0.0 - Production Version 19.4.0.0.0 Copyright (c) 2004, 2022, Oracle and/or its affiliates. All rights reserved. Enter wallet password: Create credential oracle.security.client.connect_string1 Das Kennwort muss nicht zwingend an der Console angegeben werden. Es wird bei Bedarf auch abgefragt und kann verborgen eingegeben werden. Ebenso kann ein Connectstring anstelle eines Net Service Names verwendet werden. Wirklich übersichtlich ist das dann aber nicht mehr. [oracle@client(orcl) wallets]$ mkstore \ -wrl /u01/app/oracle/product/19.0.0/client_1/owm/wallets/seps \ -createCredential '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dbserver)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=orcl)))' foo Oracle Secret Store Tool Release 19.0.0.0.0 - Production Version 19.4.0.0.0 Copyright (c) 2004, 2022, Oracle and/or its affiliates. All rights reserved. Your secret/Password is missing in the command line Enter your secret/Password: Re-enter your secret/Password: Enter wallet password: Create credential oracle.security.client.connect_string2 Schritt 3: Einrichten von Net Service Names in der tnsnames.ora Hat man Net Service Names als Credentialindex gewählt, müssen die entsprechenden Net Service Names natürlich in der tnsnames.ora des Clients konfiguriert werden. ORCL4OE = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = dbserver)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl) ) ) Schritt 4: Aktivieren des Secure External Password Store Über die sqlnet.ora des Clients wird die Nutzung des Secure External Password Store (SEPS) nun noch mittels folgender beider Einträge aktiviert. wallet_location = (SOURCE= (METHOD=File) (METHOD_DATA=/u01/app/oracle/product/11.2.0/client_1/owm/wallets/seps (DIRECTORY=) ) ) SQLNET.WALLET_OVERRIDE=TRUE Wallet_location weist den Weg zum Password Store und wallet_override verhindert, dass der Client versucht, das Wallet für eine SSL-Authentisierung zu verwenden.Damit sind alle Voraussetzungen erfüllt, um zukünftig ohne explizite Angabe eines Kennwortes eine Verbindung zur Datenbank herzustellen: [oracle@client(orcl) wallets]$ sqlplus /@orcl4oe SQL*Plus: Release 19.0.0.0.0 - Production on Tue Jul 25 13:38:07 2023 Version 19.10.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.10.0.0.0 SQL> show user USER is "OE" SQL> [oracle@client(orcl) ~]$ sqlplus /@'(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dbserver)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=orcl)))' SQL*Plus: Release 19.0.0.0.0 - Production on Tue Jul 25 13:38:07 2023 Version 19.10.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.10.0.0.0 SQL> show user USER is "FOO" SQL> Ändert sich das Passwort eines Datenbanknutzers, muss die Änderung natürlich auch entsprechend im Passwort Store erfolgen: SQL> alter user oe identified by "oracle"; User altered. [oracle@client(orcl) ~]$ mkstore \ -wrl /u01/app/oracle/product/19.0.0/client_1/owm/wallets/seps \ -modifyCredential ORCL4OE orcl oracleOracle Secret Store Tool Release 19.0.0.0.0 - Production Version 19.4.0.0.0Copyright (c) 2004, 2022, Oracle and/or its affiliates. All rights reserved. Enter wallet password: Modify credential Modify 1 Den Inhalt eines Password Stores lässt man sich mit der ‑listCredential Option auflisten: [oracle@client(orcl) ~]$ mkstore \ -wrl /u01/app/oracle/product/19.0.0/client_1/owm/wallets/seps \ -listCredential Oracle Secret Store Tool Release 19.0.0.0.0 - Production Version 19.4.0.0.0 Copyright (c) 2004, 2022, Oracle and/or its affiliates. All rights reserved. Enter wallet password: List credential (index: connect_string username) 2: (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dbserver)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=orcl))) foo 1: ORCL4OE orcl Bewertung Oracle verspricht mit dem Einsatz des Secure External Password Store einen deutlichen Sicherheitsgewinn, da Passworte nun nicht mehr im Klartext abgelegt sind. Zudem soll das Deployment von Logininformationen einfacher sein. Beides ist grundsätzlich richtig. Nichts desto trotz sollte man bei aller Euphorie Folgendes im Hinterkopf behalten:Ein Secure External Password Store ist nicht weniger schutzwürdig als ein Script oder Configfile, das Credentials im Klartext enthält. Ein gestohlener Secure External Password Store erlaubt dem Besitzer Zugang zu Datenbanken ohne Kenntnis von Kennworten, sofern er die im Wallet hinterlegten Credential-Indexes kennt und – bei Verwendung von Net Service Names – die richtigen Connectinformationen rekonstruieren kann. Er kann jedoch die Credential-Indexes nicht durch Auflisten des Walletinhaltes herausfinden, ohne das Wallet-Kennwort zu wissen.Die von Oracle in 11.2 in orapki implementierte ‑auto_login_local-Option ist, auch wenn anders behauptet, kein wirksamer Schutz gegen die missbräuchliche Benutzung gestohlener Password Stores. Zwar wird behauptet, dass ein ‑auto_login_local erstelltes Wallet nicht auf einem anderen Computer benutzt werden kann. Tatsächlich werden aber im Wallet nur Betriebssystem-Nutzername des Erstellers und der Hostname des Computers abgelegt, auf dem das Wallet erstellt wurde. Diese Informationen lassen sich jedoch auf einem Drittcomputer ohne nennenswerten Aufwand nachbilden. Fazit Der Oracle Secure External Password Store bietet eine Möglichkeit, Klartext-Credentials aus Scripts und Configfiles zu verbannen und damit ein Plus an Sicherheit zu erreichen. Ein merklicher Vorteil ist die Tatsache, dass Credentials auf diese Art nicht mehr in Anwendungscode hinterlegt werden müssen und damit z.B. außerhalb des Zugriffs von Anwendungsentwicklern bleiben können. Auch das Ausspähen von Passworten aus Filesystembackups kann so unterbunden werden. Allerdings stellen auch die Password Stores ein riskantes Angriffsziel dar und müssen ebenso gut wie Klartext-Credentials gegen Diebstahl gesichert werden. Ein Zugang zu einem Computer in einer Form, die das Auslesen von Klartext-Credentials ermöglichte, erlaubt auch den Diebstahl des Password Stores.Gemäß MOS Doc ID 340559.1 ist der Oracle Secure Password Store kostenfrei in allen Datenbankeditionen verfügbar:„The feature Secure External Password Store can be used without any restriction in all product editions, you do not require a license for the Advanced Security Option (ASO).“ Was du noch alles tun kannst, um mehr Passwortsicherheit zu erlangen, haben wir für dich in unserem Post “Mehr Passwortsicherheit mit wenig Aufwand” zusammengestellt. Hier findest du weitere Posts zu den Themen Security bzw. weitere DBA Tipps rund um Datenbanken aus unserem News Bereich. Share this article Facebook Twitter LinkedIn XING WhatsApp Email PrevVoriger PostOracle Critical Patch Update Juli 2023: Jetzt einspielen! Nächster PostTipps und Tricks zum Patchen von Datenbanken: Was hat Patchen mit dem Abschluss von Cyberversicherungen zu tun?Nächster Der Beitrag DBA Tipp: Passworte (halbwegs) sicher weggeschlossen – der Secure External Password Store erschien zuerst auf ASPICON.

zum Artikel gehen

Endlich sicher in der Cloud Demo jetzt verfügbar

Vielleicht haben Sie es auch schon entdeckt – unsere Produktfamilie vergrößert sich. Schon seit einigen Wochen können Sie sich auf unserer Webseite über unser neues Produkt Secure Cloud informieren. Großwallstadt, 23.03.2021 Mit Secure Cloud nutzen Sie

zum Artikel gehen

Windows 10 Store Probleme mit Fehler 0x80070005

Heute einmal ein Tipp zu Problemen mit dem Windows Store bei Windows 10, hier habe ich selber und bei Kunden häufiger das Problem gehabt, dass der Windows Store herum zickte und Fehlermeldungen produzierte, genau genommen den Fehler 0x80070005. Ein Laie k

zum Artikel gehen

CET’s services now available in SAP Store

The SAP related serviced of CET Translations are now available in the SAP Store. SAP Store is the online destination to discover and buy solutions and services from SAP and partners including business analytics, mobile apps, cloud solutions, etc. Please v

zum Artikel gehen

GSA Backup Manager v2.3.2

The GSA Backup Manager is a program that will help you create regular backups of your computer files and store them either on external devices or on the local file system. You can choose what files to backup in many ways by filter settings. Changes sinc

zum Artikel gehen