Storage Buckets
Für jedes Projekt wird ein S3-kompatibler Storage Bucket zur Ablage von beliebigen Dateien nach dem Namensschema mandant.projekt eingerichtet.
Der Endpunkt hierfür ist https://storage.urbanstack.de/.
Berechtigungen
Die Zugriffsrechte werden über die Scopes project:bucket-read und project:bucket-write konfiguriert.
Objekte mit dem Präfix _public/ sind öffentlich lesbar unter https://storage.urbanstack.de/mandant.projekt/_public/....
Zugangsdaten
Um temporäre Zugangsschlüssel für die Storage Buckets zu erhalten wird der AssumeRoleWithWebIdentity-Mechanismus verwendet.
Hierzu kann der ausführende Code (z.B. Python-Code in einem Jupyter Notebook) einen Token von Keycloak anfordern, der anschließend beim Storage-Endpunkt in temporäre Anmeldedaten umgetauscht werden kann. Keycloak bittet in diesem Rahmen um die explizite Zustimmung des Benutzers, dem anfragenden Programmcode Plattformzugriff im Namen des Benutzers zu gewähren.
Achtung!
Es ist wichtig, dass hier nur der Anmeldung von eigens ausgeführtem Code zugestimmt wird.
Eine Zustimmung zur Anfrage über einen anderen Link käme der Weitergabe der Anmeldedaten gleich!
Hilfsbibliothek
Über die in JupyterLab integrierte Hilfsbibliothek kann ein vorkonfigurierter boto3-Client erstellt werden:
from _ import login
auth = login()
Log in at https://login.urbanstack.de/realms/udh/device?user_code=XXXX-XXXX
Still waiting for login confirmation...
Login successful
auth.s3.list_objects(Bucket="mandant.projekt")