MinIO
S3-kompatibler Objektspeicher für Dateien und unstrukturierte Daten.
MinIO ist ein S3-kompatibler Objektspeicher. Anders als eine relationale Datenbank legt er Inhalte nicht in Tabellen, sondern als Objekte in Buckets ab. Jedes Objekt besteht aus seinen Binärdaten, einem innerhalb des Buckets eindeutigen Schlüssel und optionalen Metadaten. Anwendungen greifen über die S3 API auf diese Inhalte zu und können dafür bestehende S3-Clients und Bibliotheken verwenden.
Die grundlegenden Bausteine sind:
- Buckets bilden die oberste organisatorische Grenze für zusammengehörige Objekte.
- Objektschlüssel identifizieren Dateien und Datenartefakte innerhalb eines Buckets.
- Metadaten und Tags ergänzen ein Objekt um technische oder fachliche Eigenschaften.
- Versionierung und Lifecycle-Regeln unterstützen Aufbewahrung, Austausch und kontrolliertes Löschen.
- Policies legen fest, welche S3-Aktionen auf welchen Buckets und Objekten erlaubt sind.
- S3-Zugangsdaten ermöglichen Anwendungen einen nichtinteraktiven Zugriff über Access Key, Secret Key und gegebenenfalls ein temporäres Session Token.
MinIO in der UDSP
Die UDSP stellt MinIO mandantenbezogen für Dateien, Rohdaten, Exporte, Medien und andere unstrukturierte Datenartefakte bereit. Der Dienst ergänzt PostgreSQL, ersetzt aber weder relationale Abfragen noch die fachliche Beschreibung und Veröffentlichung eines Datenbestands. Welche Objekte in einem Bucket liegen und wie sie verwendet werden, entscheidet die jeweilige Anwendung.
Der MinIO-Operator erzeugt aus der Inventory-Konfiguration eine eigene Tenant-Ressource mit der festgelegten Anzahl an Servern, Volumes und Buckets. Die S3 API ist unter s3-minio.<MANDANTENDOMAIN> erreichbar; die MinIO-Konsole verwendet minio.<MANDANTENDOMAIN>. HYPERSENSUS erhält bei aktiviertem MinIO die internen und öffentlichen Endpunkte des jeweiligen Mandanten.
Für interaktive Anmeldungen bindet die UDSP MinIO per OpenID Connect an Keycloak an. Ein Protocol Mapper überträgt die Rollen des Keycloak-Clients minio als Claim policy. MinIO ordnet diese Namen anschließend gleichnamigen Policies zu. Technische Anwendungen können stattdessen explizit bereitgestellte S3-Zugangsdaten verwenden.
MinIO ist nicht automatisch das Sicherungsziel der Plattform. Logische PostgreSQL-Backups, Velero und eine langfristige Monitoring-Ablage verwenden die jeweils global konfigurierten S3-Ziele. Ein innerhalb desselben Clusters betriebener MinIO-Tenant sollte nur dann als Backupziel dienen, wenn die gemeinsame Ausfall- und Wiederherstellungsgrenze bewusst akzeptiert wurde.
Technische Abhängigkeiten
MinIO wird mandantenbezogen als operatorverwalteter Tenant bereitgestellt und für interaktive Zugriffe an den gemeinsamen Identitätsdienst angebunden.
MinIO Operator
Erzeugt MinIO-Server, Services, Volumes und Secrets aus der Tenant-Ressource.
Keycloak
Authentifiziert Konsolennutzer und überträgt MinIO-Policies als OIDC-Claim.
Komponente öffnenBereitstellung durch den MinIO Operator
Ansible installiert den Operator und erzeugt für jeden aktivierten Mandanten die gewünschte Tenant-Ressource. Buckets, Policies und die Anbindung an Keycloak werden anschließend durch die UDSP-Automatisierung konfiguriert und nicht allein vom Operator bestimmt.
Konfiguration und Deployment
Im Mandanten-Inventory werden Instanzname, Anzahl der Server und Volumes, Kapazität je Volume, maximale Uploadgröße, initialer Administrationszugang sowie die anzulegenden Buckets festgelegt. Die mitgelieferte Konfiguration mit einem Server und einem Volume ist ausschließlich für nichtproduktive Umgebungen vorgesehen.
Alle Felder und zulässigen Werte sind unter Mandanten konfigurieren: MinIO beschrieben. Der dafür erforderliche MinIO-Operator wird unter Plattformbasis konfigurieren: Gemeinsame Plattformdienste aktiviert.
Der aktuelle Plattformstand rollt das MinIO-Server-Image RELEASE.2025-04-22T22-12-26Z über den MinIO Operator und das Tenant-Chart in Version 7.1.1 aus.
Rollen und Rechte
Die Anmeldung an der MinIO-Konsole erfolgt über Keycloak. Die Rollen des Keycloak-Clients minio werden als OIDC-Claim policy an MinIO übertragen und dort gleichnamigen Policies zugeordnet. Dabei unterscheidet die UDSP zwischen weitreichenden Betriebsrollen für den gesamten MinIO-Mandanten und Rollen für einen einzelnen Bucket.
Betriebsrollen
Die folgenden Rollen sind nicht auf einen bestimmten Bucket begrenzt. Sie sollten deshalb nur Personen oder technischen Identitäten zugewiesen werden, die MinIO betreiben oder mandantenweit auf Objekte zugreifen müssen.
consoleAdmin
Gewährt vollständigen administrativen Zugriff auf die MinIO-Konsole sowie auf S3- und Admin-Funktionen.
diagnostics
Erlaubt den Zugriff auf Diagnoseinformationen, die für Analyse und Support des MinIO-Dienstes benötigt werden.
read
Erlaubt das Auflisten der Buckets und das Lesen vorhandener Objekte über die S3 API.
readwrite
Erlaubt mandantenweit das Lesen, Schreiben und Löschen von Objekten über die S3 API.
writeonly
Erlaubt mandantenweit das Schreiben von Objekten, ohne einen allgemeinen Lesezugriff zu gewähren.
Der beim Rollout erzeugte Plattformadministrator erhält automatisch consoleAdmin, readwrite und diagnostics. Weitere Benutzer und Gruppen müssen am Keycloak-Client minio ausdrücklich berechtigt werden.
Bucket-Rollen
Für fachliche Anwendungen und Benutzer sollte der Zugriff möglichst auf die tatsächlich benötigten Buckets begrenzt werden. Für jeden im Inventory angelegten Bucket erzeugt die UDSP deshalb drei eigene MinIO-Policies und gleichnamige Keycloak-Client-Rollen. <BUCKET> wird durch den tatsächlichen Bucket-Namen ersetzt.
read_<BUCKET>
Erlaubt das Auflisten des betreffenden Buckets und das Lesen seiner Objekte. Schreiben und Löschen bleiben gesperrt.
readcreate_<BUCKET>
Erlaubt Lesen und Hochladen einschließlich Objekt-Tags, aber kein allgemeines Löschen vorhandener Objekte.
readwrite_<BUCKET>
Erlaubt alle S3-Aktionen auf den Objekten des betreffenden Buckets einschließlich Änderungen und Löschen.
Der im Inventory gesetzte Wert admin_user mit admin_pass ist ein initialer technischer Root-Zugang und keine reguläre Keycloak-Rolle. Er gehört in ein geschütztes Secret und sollte nicht als persönliches Benutzerkonto verwendet werden.