Projekt

Allgemein

Profil

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

[E] Axel S, 27.03.2025 17:00

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
h2. Eintrag im Windows-Schlüsselbund hinzufügen bzw. überschreiben
13
14
* Funktion @TSystem_security.credential__set()@
15
* Rückgabe:
16
** <code class="sql">true</code> - Eintrag wurde geschrieben
17
** <code class="sql">false</code> - *kein* Eintrag wurde geschrieben; Eintrag mit Kombination aus Service- und Benutzernamen existierte bereits und sollte nicht überschrieben werden
18
* Beispiel: <code class="sql">SELECT TSystem_security.credential__set( servicename => 'SyncroKonto', username => 'syncro', userpassword => 'geheim', overwrite_pw => true );</code>
19
20
21
h2. Passwort aus entsprechenden Eintrag im Windows-Schlüsselbund auslesen
22
23
* Funktion @TSystem_security.credential__get()@
24
* Rückgabe:
25
** <code class="sql"><passwort></code> - Passwort des entsprechenden Eintrags
26
** <code class="sql">null</code> - es existiert *kein* Eintrag für die gegebene Kombination aus Service- und Benutzernamen
27
* Beispiel: <code class="sql">SELECT TSystem_security.credential__get( servicename => 'SyncroKonto', username => 'syncro' );</code>
28
29
30
h2. Eintrag im Windows-Schlüsselbund löschen
31
32
* Funktion @TSystem_security.credential__delete()@
33
* Rückgabe:
34
** <code class="sql">true</code> - entsprechender Eintrag wurde gelöscht
35
** <code class="sql">false</code> - *kein* Eintrag wurde gelöscht; es existiert *kein* Eintrag für die gegebene Kombination aus Service- und Benutzernamen
36
* Beispiel: <code class="sql">SELECT TSystem_security.credential__delete( servicename => 'SyncroKonto', username => 'syncro' );</code>
37
38
39
h2. Alle vorhandenen Einträge im Windows-Schlüsselbund auflisten
40
41
* Funktion @TSystem_security.credentials__list()@
42
* Rückgabe:
43
** setof Record aus @servicename@ (varchar) und @username@ (varchar)
44
45
|_.servicename |_.username |
46
|SyncroKonto   |syncro     |
47
48
* Beispiel: <code class="sql">SELECT * FROM TSystem_security.credentials__list() ORDER BY servicename, username;</code>