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>