martin.koeditz hat geschrieben: Mo 19. Jun 2023, 08:30
Hallo Gerd,
... Laufen die FB-Instanzen bei dir parallel auf einer Maschine?
Gruß
Martin
Hallo Martin.
Das Bild "
Strukturen_unmittelbar_nach_Entpacken.png" (s.o.) soll
nicht zeigen, dass bei mir diese FB-Instanzen parallel auf einer Maschine laufen. Bei mir läuft 'nur' Firebird 4.0.2 unter Linux Mint v21.1 Cinnamon.
Dieses Bild soll zwei Sachen veranschaulichen und festhalten:
1. Es gibt Unterschiede im 'plugins'-Verzeichnis. Die sind so nicht dokumentiert, was das Testen wollen des Beispiels 'DbCrypt' in Fierebird 4 (und wohl auch in Firebird 5 Beta1) nicht leichter macht.
2. Es soll auch die Struktur des Plug-in IBP-DbCrypt (IBPhoenix) etwas visualisieren. Nur, damit man das mal sieht.
* * *
Zum aktuellen Stand der Dinge - für alle.
* * *
Von einem, der auszog, eine lokale Firebird 4 Datenbank zu verschlüsseln.
Die Dokumentation zum Plug-in IBP-DbCrypt ist aus meiner Sicht nicht gerade üppig. Die folgenden Quellen habe ich konsultiert:
:: Plug-in Seite von
IBPhoenix
:: Plug-in Dateien
README.dbcrypt-ibphoenix.txt (23 Zeilen)
README.dbcrypt-services.txt (86 Zeilen)
KeyFile.conf (50 Zeilen)
firebird.conf.dbcrypt.in (6 Zeilen)
Callback.conf (5 Zeilen)
:: Firebird 4.0 Sprachreferenz
Bei meiner bisherigen Suche im Internet nach Informationen zum Plug-in IBP-DbCrypt wurde ich nicht wirklich fündig. Ich stoße da auf Suchergebnisse, die sich meist mit Plug-in-Meldungen beschäftigen. Zu diesen Meldungen komme ich aber unter "IV Baustellen".
I Plug-in
Handels-Name (vermutlich): IBP-DbCrypt
Bezugsort:
IBPhoenix
Version: 1.2.5-2
Maschinen Architektur: x86_64
Plug-in-Auswahl für Betriebssystem: Linux 64 bit (hier: Linux Mint v21.1 Cinnamon, 64 bit)
Firebird - Version: 4.0 (hier: LI-V4.0.2.2816 Firebird 4.0)
Netzwerk: localhost
II Voraussetzungen und Vorgehen
Quelle:
IBPhoenix
II/1 SSE2-Befehlssatz
Maschinen Architektur ermitteln mittels Befehlseingaben in das GNOME-Terminal:
(-m steht für --machine; Maschinen Architektur)
Kurz gesagt: Wo x86_64 draufsteht, ist auch SSE2 drin.
Der Aufruf des Dialogs "Systeminformation" (Programme-Menü - Einstellungen - Systeminformation) ist am einfachsten und bringt benötigte Zusatzinformationen.
model: AMD Athlon II X2 250
bits: 64
Flags: ht lm nx pae sse
sse2 sse3 sse4a svm
Dies ist eine von mir stark gekürzte Darstellung der Ausgabe des Dialogs "Systeminformation".
Hier erfährt man, ob der Befehlssatz SSE2 unterstützt wird. Ja er wird.
II/2 libtommath-Bibliotheken müssen installiert sein.
1.2.0-6build3 ist die zurzeit aktuelle Version von libtommath1.
Über das Terminal kann man sich bei Bedarf detaillierte Informationen zum Paket libtommath1 anzeigen lassen, indem man dort eingibt:
Dieses Paket enthält also die Bibliothek, die zur Ausführung von Programmen benötigt wird, die LibTomMath verwenden.
LibTomMath ist eine freie, quelloffene, portable zahlentheoretische Bibliothek für ganze Zahlen, die vollständig in C geschrieben ist.
Nun, bekannt ist, dass Firebird während der Erstinstallation nach diesem Paket verlangt.
Falls es noch nicht installiert ist, lässt sich das mittels der folgenden Eingaben in das GNOME-Terminal ändern:
Weitere interessante Informationen:
Der Forum-Teilnehmer
jhoehne hat seine Vorgehensweisen geschildert, die ich seinerzeit erfolgreich nachvollziehen konnte und die mir geholfen haben.
II/3 GLIBC_2.14+ erforderlich
Von der GNU-C-Bibliothek (GLIBC) liegt bereits die Version 2.37 vor. Ich gehe davon aus, dass sie Abwärskompatibel bis hin zur erforderlichen Version 2.14 ist. Meldungen, die GLIBC_2.14+ fordern, gab es bisher nicht.
Nur wer weis, was er tut, kann sich das Paket als gepacktes Archiv glibc-2.37.tar.xz (ca. 18 MB) von
distrowatch herunterladen und installieren.
Im Folgenden eine Simulation - es wird nichts verändert:
Code: Alles auswählen
apt-get install -s libc6
...
libc6 ist schon die neueste Version (2.35-0ubuntu3.1).
...
Das bedeutet, dass auf meinem Rechner Linux Mint v21.1 die GLIBC_2.35 vorhanden ist.
III Aufgetretene Unklarheiten
Zur Veranschaulichung habe ich Vorgehensweisen und Meldungen unter 'IV Baustellen' mit jeweiligen Status erfasst.
:: Es steht geschrieben:
"Entpacken Sie die Verschlüsselungsbibliotheken und Konfigurationsdateien nach $(root_dir)/plugins"
Warum nur die Verschlüsselungsbibliotheken und Konfigurationsdateien? Welche genau wären das? Warum nicht auch die Plug-in-Verzeichnisse (z. B. bin oder include, ...)?
:: Warum wird im Plug-in im Verzeichnis "bin" das Firebird Tool "gbak" (840,6 kB) mitgeliefert?
Was passiert, wenn dieses Tool nach /opt/firebird/bin verbracht wird? Dort gibt es bekanntlich ein Tool mit dem gleichen Namen, nur ist es dort 2,5 MB groß und natürlich jünger, da Firebird 4.
:: Wie lautet denn nun der
plugin_name, damit das DDL-Statement
Code: Alles auswählen
ALTER {DATABASE | SCHEMA} ENCRYPT WITH plugin_name [KEY key_name ]
funktioniert. Etwa IBP_DbCrypt oder auch libAES128.so?
Klar ist, benutzt man einen falschen 'plugin_name', erhält man Meldungen wegen fehlgeschlagener Aktualisierung der Metadaten.
IV Baustellen (Erledigt / Offen)
Erledigt
Plug-in Name für DDL-Statement
Nachdem ich offenbar den richtigen 'plugin_name' (AES128) herausgefunden hatte, kam diese Art Meldung nicht mehr:
IBP_DbCrypt (Falsch)
Code: Alles auswählen
SQL> ALTER DATABASE ENCRYPT WITH IBP_DbCrypt;
Statement failed, SQLSTATE = HY024
unsuccessful metadata update
-ALTER DATABASE failed
-Crypt plugin IBP_DBCRYPT failed to load
SQL>
libAES128.so (Falsch)
Code: Alles auswählen
SQL> ALTER DATABASE ENCRYPT WITH libAES128.so;
Statement failed, SQLSTATE = 42000
Dynamic SQL Error
-SQL error code = -104
-Token unknown - line 1, column 38
-.
SQL>
Übrigens, im Internet finden sich mehrere Beiträge von Anwendern, welche auch diese Namensgebung erst klären mussten.
Erst ein DDL-Statement dieser Art bringt mich
einen Schritt weiter,
KEY wurde bewusst weggelassen:
AES128 (Richtig)
SQL> ALTER DATABASE ENCRYPT WITH AES128;
Statement failed, SQLSTATE = 08004
unsuccessful metadata update
-ALTER DATABASE failed
-Missing database encryption key for your attachment
-Plugin AES128:
-Crypt key is not set
SQL>
Offen
:: Meldung -Crypt key is not set
Obwohl ich einen Schlüssel
MyKey.txt unter
/opt/firebird/ angelegt und die KeyFile.conf mit
KeyHolderPlugin = KeyFile bearbeitet habe. Hoffe, dass es nur eine Frage der Zeit ist.
Vorgehensweise:
Code: Alles auswählen
gerd@gerd-MS-7641:~$ isql
Use CONNECT or CREATE DATABASE to specify a database
SQL> CONNECT 'localhost:/home/gerd/Firebird/Datenbanken/adressen.fdb' USER 'sysdba' PASSWORD 'geheimes_passwort';
Database: 'localhost:/home/gerd/Firebird/Datenbanken/adressen.fdb', User: SYSDBA
SQL> ALTER DATABASE ENCRYPT WITH AES128 KEY KeyFile;
Statement failed, SQLSTATE = 08004
unsuccessful metadata update
-ALTER DATABASE failed
-Missing database encryption key for your attachment
-Plugin AES128:
-Crypt key is not set
SQL>
Erledigt
:: Eintrag firebird.log
"Value KeyFile configured for alias KeyHolderPlugin is not a fully qualified path name, ignored"
Deutsch: "Der für den Alias KeyHolderPlugin konfigurierte Wert KeyFile ist kein vollständig qualifizierter Pfadname und wird ignoriert."
Dieser Eintrag wird von Firebird seit dem Beginn der Nutzung des Plug-in geschrieben.
27.06.2023, 16:23 Uhr - Nachtrag:
Die "
firebird.conf.dbcrypt.in" und die "
KeyFile.conf" wurden jeweils durch ihre Originale ersetzt. Das erwartete Ergebnis trat ein. Der Eintrag in der "
firebird.log" wird nun von Firebird nicht mehr vorgenommen.
Bis hier her erstmal.
Viele Grüße
Gerd