Aktionen
Zugänge (Passwörter)¶
Ticket: ##22403
Damit Passwörter (für syncro, dblink usw.) aus Sicherheitsgründen nicht mehr im Code hartkodiert werden müssen, sollen diese im Windows-Schlüsselbund (Windows Credential Manager) des Windows Benutzer vom PostgreSQL-Servers hinterlegt werden.
- dafür gibt es jetzt entsprechende Datenbankfunktionen (Language plpython3u).
- nur die DB-Rolle
postgressoll diese DB-Funktionen direkt rufen dürfen, daher im SchemaTSystem_security - anonsten können diese DB-Funktionen nur von Funktionen mit dem Parameter
SECURITY DEFINERgerufen werden
Technische Voraussetzungen¶
- Betriebssystem für PostgreSQL-Server: Windows
- für PostgreSQL 13 (Python 3.7.x) die folgenden Python-Pakte:
- Einträge im Windows-Schlüsselbund hinzufügen, abfragen bzw. löschen (keyring)
- pywin32-ctypes- 0.2.3
- zipp- 3.15.0
- importlib-resources- 5.12.0
- typing-extensions- 4.7.1
- importlib-metadata- 6.7.0
- more-itertools- 9.1.0
- jaraco.classes- 3.2.3
- keyring- 24.1.1
- Alle vorhandenen Einträge im Windows-Schlüsselbund auflisten (pywin32)
- pywin32- 308
- Einträge im Windows-Schlüsselbund hinzufügen, abfragen bzw. löschen (keyring)
- Datei
python-plpythonu\python37._pthAufklappen - Neustart PostgreSQL-Server nach Installation und Konfiguration der Python-Pakte
Eintrag im Windows-Schlüsselbund hinzufügen bzw. überschreiben¶
- Funktion
TSystem_security.credential__set() - Rückgabe:
true- Eintrag wurde geschriebenfalse- kein Eintrag wurde geschrieben; Eintrag mit Kombination aus Service- und Benutzernamen existierte bereits und sollte nicht überschrieben werden
- Beispiel:
SELECT TSystem_security.credential__set( servicename => 'SyncroKonto', username => 'syncro', userpassword => 'geheim', overwrite_pw => true );
Passwort aus entsprechenden Eintrag im Windows-Schlüsselbund auslesen¶
- Funktion
TSystem_security.credential__get() - Rückgabe:
<passwort>- Passwort des entsprechenden Eintragsnull- es existiert kein Eintrag für die gegebene Kombination aus Service- und Benutzernamen
- Beispiel:
SELECT TSystem_security.credential__get( servicename => 'SyncroKonto', username => 'syncro' );
Eintrag im Windows-Schlüsselbund löschen¶
- Funktion
TSystem_security.credential__delete() - Rückgabe:
true- entsprechender Eintrag wurde gelöschtfalse- kein Eintrag wurde gelöscht; es existiert kein Eintrag für die gegebene Kombination aus Service- und Benutzernamen
- Beispiel:
SELECT TSystem_security.credential__delete( servicename => 'SyncroKonto', username => 'syncro' );
Alle vorhandenen Einträge im Windows-Schlüsselbund auflisten¶
- Funktion
TSystem_security.credentials__list() - Rückgabe:
- setof Record aus
servicename(varchar) undusername(varchar) -
servicename username SyncroKonto syncro
- setof Record aus
- Beispiel:
SELECT * FROM TSystem_security.credentials__list() ORDER BY servicename, username;
Von [E] Axel S vor 7 Monaten aktualisiert · 4 Revisionen