Projekt

Allgemein

Profil

Passwörter - Windows Credential Manager » Historie » Version 2

[E] Axel S, 27.03.2025 17:33

1 1 [E] Axel S
h1. Zugänge (Passwörter)
2
3
Ticket: ##22403
4
5
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.
6
7
* dafür gibt es jetzt entsprechende Datenbankfunktionen (Language plpython3u).
8
* nur die DB-Rolle @postgres@ soll diese DB-Funktionen *direkt* rufen dürfen, daher im Schema @TSystem_security@
9
* anonsten können diese DB-Funktionen nur von Funktionen mit dem Parameter @SECURITY DEFINER@ gerufen werden
10
11
12 2 [E] Axel S
h2. Technische Voraussetzungen
13
14
* Betriebssystem für PostgreSQL-Server: Windows
15
* für PostgreSQL 13 (Python 3.7.x) die folgenden Python-Pakte:
16
** Einträge im Windows-Schlüsselbund hinzufügen, abfragen bzw. löschen (keyring)
17
*** pywin32-ctypes- *0.2.3*
18
*** zipp- *3.15.0*
19
*** importlib-resources- *5.12.0*  
20
*** typing-extensions- *4.7.1* 
21
*** importlib-metadata- *6.7.0* 
22
*** more-itertools- *9.1.0* 
23
*** jaraco.classes- *3.2.3* 
24
*** keyring- *24.1.1*
25
** Alle vorhandenen Einträge im Windows-Schlüsselbund auflisten (pywin32)
26
*** pywin32- *308* 
27
28 1 [E] Axel S
h2. Eintrag im Windows-Schlüsselbund hinzufügen bzw. überschreiben
29
30
* Funktion @TSystem_security.credential__set()@
31
* Rückgabe:
32
** <code class="sql">true</code> - Eintrag wurde geschrieben
33
** <code class="sql">false</code> - *kein* Eintrag wurde geschrieben; Eintrag mit Kombination aus Service- und Benutzernamen existierte bereits und sollte nicht überschrieben werden
34
* Beispiel: <code class="sql">SELECT TSystem_security.credential__set( servicename => 'SyncroKonto', username => 'syncro', userpassword => 'geheim', overwrite_pw => true );</code>
35
36
37
h2. Passwort aus entsprechenden Eintrag im Windows-Schlüsselbund auslesen
38
39
* Funktion @TSystem_security.credential__get()@
40
* Rückgabe:
41
** <code class="sql"><passwort></code> - Passwort des entsprechenden Eintrags
42
** <code class="sql">null</code> - es existiert *kein* Eintrag für die gegebene Kombination aus Service- und Benutzernamen
43
* Beispiel: <code class="sql">SELECT TSystem_security.credential__get( servicename => 'SyncroKonto', username => 'syncro' );</code>
44
45
46
h2. Eintrag im Windows-Schlüsselbund löschen
47
48
* Funktion @TSystem_security.credential__delete()@
49
* Rückgabe:
50
** <code class="sql">true</code> - entsprechender Eintrag wurde gelöscht
51
** <code class="sql">false</code> - *kein* Eintrag wurde gelöscht; es existiert *kein* Eintrag für die gegebene Kombination aus Service- und Benutzernamen
52
* Beispiel: <code class="sql">SELECT TSystem_security.credential__delete( servicename => 'SyncroKonto', username => 'syncro' );</code>
53
54
55
h2. Alle vorhandenen Einträge im Windows-Schlüsselbund auflisten
56
57
* Funktion @TSystem_security.credentials__list()@
58
* Rückgabe:
59
** setof Record aus @servicename@ (varchar) und @username@ (varchar)
60
61
|_.servicename |_.username |
62
|SyncroKonto   |syncro     |
63
64
* Beispiel: <code class="sql">SELECT * FROM TSystem_security.credentials__list() ORDER BY servicename, username;</code>