2022.06
Integration von S3 Storage
Diese Seite fasst Informationen für die Nutzung von S3 Speichern unter MyCoRe LTS 2022-06 zusammen.
Erstellen eines S3 Test-Storage Minio-Testserver
Allgemeines
Als Testbeispiel soll die Integration eines Minio-S3-Servers an dieser Stelle dokumentiert werden. Für Produktivsysteme kann
dieser dann durch einen im RZ verfügbaren S3 Storage erstetzt werden.
Eine Anleitung zur Installation ist unter
Digital Ocean
für Ubuntu 22.04 beschieben.
Die folgende Konfiguration steht in /etc/default/minio
.
1
2
3
4
|
MINIO_VOLUMES="/data/minio/"
MINIO_OPTS="-C /etc/minio --address {my_host}:9000 --console-address {my_host}:9090"
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=***
|
Somit ist die S3-Schnittstelle unter Port 9000 und die Web-Schnittstelle unter Port 9090 zugreifbar.
Für das MyCoRe-Repository muss noch der Port 9000 frei geschaltet werden.
Nun müssen noch über die Web-Schnittstelle der Nutzer und Service Account angelegt, entsprechende Buckets angelegt und Daten hochgeladen werden.
Das Plugin
Features
- S3-Viewer: Front-end für einen “externen” S3-Speicher
- Browsing durch Dateien / Ordner / Archive (ZIP, TAR)
- GUI (Erfassungsmaske) für die S3-Konfiguration
Das Ganze ist entwickelt als selbständiges MyCoRe-Plugin:
https://github.com/MyCoRe-Org/s3-mcr-plugin
Funktionsweise / Features:
- Speicherung einer symetrisch verschlüssselten XML-basierten Konfigurationsdatei in einem MyCoRe-Derivate
- Javascript-basierter Datei-Viewer
- Erweiterung der REST-API für die Datei-Viewer-Komponente
- Monitoring von Veränderungen an den S3-Dateien nach Einbindung in das Repository (Checksummen)
Integration in MyCoRe
- Auschecken: git checkout
https://github.com/MyCoRe-Org/s3-mcr-plugin
- Compilieren: mvn clean install
- Installieren: Kopieren der JAR-Datei in das Lib-Verzeichnis im MyCoRe-Home
- Ergänzung: Ergänzen ‘extension’ als Eintrag in der Derivate-Types-Klassifikation
Ergänzung der MyCoRe-Properties
MCR.FS.Impl.S3=org.mycore.filesystem.s3.XMLS3BucketProvider
MCR.FS.Impl.S3.Key=bucket-crypt
MCR.Crypt.Cipher.bucket-crypt.class=org.mycore.crypt.MCRAESCipher
MCR.Crypt.Cipher.bucket-crypt.KeyFile=%MCR.datadir%/bucket.key
MCR.Crypt.Cipher.bucket-crypt.EnableACL=false
Verschlüsselung erstellen
Symetrische Verschlüsselung von Metadaten wird bereits an anderen Stellen verwendet (Verschlüsselung von Bearbeiterkennungen, Impact Factor, …).
Mittels der MyCoRe-CLI kann ein schlüssel generiert werden: generate keyfile for cipher bucket-crypt
.
Einbindung der Daten
Die Daten im S3 können nun über ein MyCore-Derivate refernziert werden. Hierfür eis ein Derivate mit einer XML-Datei der folgenden Form erstellt und
hochgeladen werden.
1
2
3
4
5
6
7
8
9
10
11
|
<folder-extension-bind encrypted="false"
class="org.mycore.filesystem.s3.XMLS3BucketProvider">
<XMLS3Bucket>
<protocol>http</protocol>
<endpoint>ub1vm108.ub.uni-rostock.de:9000</endpoint>
<bucket>mycore-aw-kiel-2022</bucket>
<accessKey>CxXncF8Dyk6m18gZ</accessKey>
<secretKey>xxxxxxxxxxxxxxxxxxxxxxxxxx</secretKey>
<directory>resarch-data-03</directory
</XMLS3Bucket>
</folder-extension-bind>
|
Daraus wird eine verschlüsselte Datei generiert:
1
2
3
4
5
6
|
<extension encrypted="true" key="bucket-crypt"
class="org.mycore.filesystem.s3.XMLS3BucketProvider">
QakmDRGARMYe+PXuFkq7SX/Zo9GLOGELKdYE9a66aFmsVCQOuJ+SrNgY
Vi3HQ6L/mHuMHkcak1TTwy4+fF8aMg6hCuct7zfbGGq9xEO6PeBwnD …
+UTKXgIs9QZkjamqs4apezzKXL/MHdFNihQDMXcFpWt7OF1DVasAMQX0
</extension>
|