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
postgres
soll diese DB-Funktionen direkt rufen dürfen, daher im SchemaTSystem_security
- anonsten können diese DB-Funktionen nur von Funktionen mit dem Parameter
SECURITY DEFINER
gerufen 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._pth
Aufklappen - 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 3 Tagen aktualisiert · 4 Revisionen