S3 Object Storage
Der S3-Objektstorage der noris Sovereign Cloud (nSC) wird von Ceph bereitgestellt und ist über eine S3-kompatible API sowie die OpenStack-API erreichbar. S3 ist ursprünglich ein AWS-Produkt, das sich zum Industriestandard entwickelt hat. Wir streben eine möglichst hohe Kompatibilität an, und die große Mehrheit der Clients arbeitet ohne Probleme mit unserer Ceph-S3-API zusammen. Eine bekannte Inkompatibilität mit aktuellen Versionen der AWS CLI oder eines AWS SDK ist im Abschnitt Bekannte Probleme beschrieben.
S3 nutzen
Abschnitt betitelt „S3 nutzen“Nutzung von EC2
Abschnitt betitelt „Nutzung von EC2“Credentials erstellen
Abschnitt betitelt „Credentials erstellen“Um auf die S3-API zuzugreifen, müssen Sie EC2-Credentials erstellen:
openstack ec2 credentials createHinweis: Die verwendeten Application Credentials benötigen die Option Unrestricted, um EC2-Credentials erstellen zu können. Siehe OpenStack Application Credentials.
Beispiel: s3cmd
Abschnitt betitelt „Beispiel: s3cmd“Damit lassen sich alle S3-Clients nutzen. Zur Veranschaulichung verwenden wir den s3cmd-Client. Bitte ändern Sie folgende Parameter in Ihrer Datei ~/.s3cfg:
access_key = <ec2-key>host_base = rgw.nbg.nsc.noris.cloudhost_bucket =secret_key = <ec2-secret>Jetzt kann ein S3-Bucket erstellt werden:
s3cmd mb s3://example-bucketS3 Object Lock
Abschnitt betitelt „S3 Object Lock“Object Lock verhindert, dass Objekte gelöscht oder überschrieben werden (Write-Once-Read-Many, WORM). Dieser Mechanismus hilft dabei, regulatorische Anforderungen zu erfüllen, die WORM-Storage voraussetzen, und schützt vor Ransomware oder versehentlichem Löschen.
Für dieses Beispiel wird die AWS CLI verwendet. Sie müssen Ihre Credentials in Ihrer Datei ~/.aws/credentials hinterlegen:
[default]aws_access_key_id = <your-access-key>aws_secret_access_key = <your-secret-key>Nun kann ein neuer Bucket example-bucket mit Object Lock erstellt werden. Die Aktivierung von Object Lock muss bei der Bucket-Erstellung erfolgen, eine nachträgliche Aktivierung ist nicht möglich.
aws --endpoint-url=https://rgw.nbg.nsc.noris.cloud s3api create-bucket --object-lock-enabled-for-bucket --bucket example-bucketAnschließend muss die Object-Lock-Konfiguration eingerichtet werden:
aws --endpoint-url=https://rgw.nbg.nsc.noris.cloud s3api put-object-lock-configuration --bucket example-bucket --object-lock-configuration '{ "ObjectLockEnabled": "Enabled", "Rule": { "DefaultRetention": { "Mode": "GOVERNANCE", "Days": 14 }}}'Diese Object-Lock-Konfiguration aktiviert tatsächlich den Object Lock und konfiguriert den Standard-Retention-Modus „governance” mit einer Dauer von 14 Tagen.
Wichtige Erläuterung der Object-Lock-Modi:
Compliance
Objekte können von keinem Benutzer überschrieben oder gelöscht werden, nicht einmal von privilegierten Benutzern. Der Retention-Modus eines Objekts kann nach der Ablage im Bucket nicht mehr geändert oder verkürzt werden.
Bitte überlegen Sie sorgfältig, was Sie in diesem Modus ablegen und welche Retention-Periode Sie konfigurieren, da wir Ihnen nicht helfen können, einzelne Objekte aus diesem Bucket zu entfernen, nur den gesamten Bucket zu löschen.
Governance
Objekte können nur von privilegierten Benutzern mit der Berechtigung s3:BypassGovernanceRetention überschrieben oder gelöscht werden. Lock-Einstellungen sind ebenfalls nur von diesen privilegierten Benutzern konfigurierbar.
Bitte beachten Sie, dass Ihr Standardbenutzer über die Berechtigung s3:BypassGovernanceRetention verfügt. Damit dieser Modus Ihre Daten tatsächlich schützt, müssten Sie separate Benutzerkonten ohne diese Berechtigung erstellen und diese für den regulären Bucket-Zugriff verwenden.
Nutzung von swift
Abschnitt betitelt „Nutzung von swift“Der folgende Befehl erstellt den Bucket example-bucket:
openstack container create example-bucketEs gibt außerdem den optionalen Parameter --public, um den Bucket öffentlich lesbar für jeden mit dem Link zu machen (die Verwendung mit privaten Daten ist NICHT ratsam, verwenden Sie im Zweifall „private”).
Verschlüsselung
Abschnitt betitelt „Verschlüsselung“Serverseitige Verschlüsselung
Abschnitt betitelt „Serverseitige Verschlüsselung“Wir unterstützen derzeit ausschließlich SSE-C (Server-Side Encryption with Customer-Provided Keys), bei dem Sie eigene, von Ihnen verwaltete Schlüssel einbringen. Die Varianten SSE-S3 und SSE-KMS bieten wir aktuell nicht an. Ein Beispiel für die Konfiguration von SSE-C mit rclone finden Sie im Abschnitt Backup und Wiederherstellung.
Clientseitige Verschlüsselung
Abschnitt betitelt „Clientseitige Verschlüsselung“Clientseitige Verschlüsselung wird unterstützt, genauer gesagt unterscheiden wir nicht zwischen regulären und clientseitig verschlüsselten Daten. Orientieren Sie sich bei Implementierung und Konfiguration an der Dokumentation des eingesetzten Verschlüsselungstools. Folgende Best Practices gelten allgemein: Verwahren Sie Verschlüsselungsschlüssel getrennt von den S3-Zugangsdaten und an mehreren sicheren Orten, und testen Sie Schlüsselabruf sowie Wiederherstellung regelmäßig. Beachten Sie, dass clientseitige Verschlüsselung den Objektinhalt schützt, nicht jedoch die Metadaten.
Backup und Wiederherstellung
Abschnitt betitelt „Backup und Wiederherstellung“Backup via CLI
Abschnitt betitelt „Backup via CLI“Der einfachste Weg, S3 zu sichern, ist das Kopieren des Bucket-Inhalts in einen anderen S3-Bucket. Bitte kontaktieren Sie Ihren Vertriebsansprechpartner, wenn Sie an zusätzlichen S3-Buckets in anderen Geolokationen interessiert sind.
In diesem Beispiel verwenden wir rclone. Sie müssen eine Konfiguration in ~/.config/rclone/rclone.conf erstellen:
[s3]type = s3provider = Otheraccess_key_id = <your-access-key>secret_access_key = <your-secret-key>endpoint = https://rgw.nbg.nsc.noris.cloud
[s3-backup-destination]type = s3provider = Otheraccess_key_id = <your-access-key>secret_access_key = <your-secret-key>endpoint = <your-backup-destination>
# ServerSideEncryption (SSE-C) can be enabled as follows:# sse_customer_algorithm = AES256# sse_customer_key_base64 = # Generate key with: "openssl rand -base64 32" - please preserve this key in a safe and secure location!Die auskommentierten Zeilen zeigen die SSE-C-Konfiguration.
Dieser Befehl kopiert den Inhalt Ihres Quell-Buckets in Ihren Ziel-Bucket:
rclone copy s3:SOURCE-BUCKET s3-backup-destination:TARGET-BUCKETSie können sich auch den Befehl sync ansehen, der schneller ist und gut mit inkrementellen Änderungen funktioniert, aber auch Daten im Ziel-Bucket löscht, wenn diese im Quell-Bucket gelöscht wurden.
Um den erwarteten Bucket-Inhalt zu prüfen, verwenden Sie:
rclone ls s3:rclone ls s3-backup-destination:Managed S3 Backup
Abschnitt betitelt „Managed S3 Backup“Bitte kontaktieren Sie Ihren Vertriebsansprechpartner für ein Angebot zum Managed S3 Backup.
Wichtige Hinweise zu Backups
Abschnitt betitelt „Wichtige Hinweise zu Backups“- Testen Sie die Wiederherstellung Ihrer Backups regelmäßig, um Datensicherheit und Funktionsfähigkeit zu gewährleisten.
- Der Befehl
rclone synclöscht Daten im Ziel-Bucket, die im Quell-Bucket nicht mehr vorhanden sind. Verwenden Sie für reine Sicherungskopien stattdessenrclone copy, um Datenverlust im Ziel zu vermeiden. - Bewahren Sie SSE-C-Verschlüsselungsschlüssel getrennt von den S3-Zugangsdaten und an mehreren sicheren Orten auf. Ohne den Schlüssel ist ein Zugriff auf die verschlüsselten Objekte nicht mehr möglich.
- Object Lock aktiviert automatisch S3-Versioning, wodurch alte Versionen akkumulieren und Speicherplatz belegen, bis die Retention-Periode abläuft. Berücksichtigen Sie dies bei der Kapazitätsplanung.
- Diese Backups sind einmalige Jobs. Um sie periodisch auszulösen, können Sie Application Credentials auf einem Server nutzen und diese Befehle per Cronjob ausführen.
Bekannte Probleme
Abschnitt betitelt „Bekannte Probleme“Objektspeicher AWS-SDK-Inkompatibilität
Abschnitt betitelt „Objektspeicher AWS-SDK-Inkompatibilität“Kunden des Objektspeichers, die eine aktuelle Version (veröffentlicht am 15. Januar 2025) der AWS CLI oder eines AWS SDK, oder ein darauf basierendes Tool verwenden, müssen mit Problemen beim Hochladen von Dateien in den Object Storage RGW S3 in allen Regionen rechnen. Der Grund ist eine Änderung in den AWS-Bibliotheken vom 15. Januar 2025, die die Nutzung von „Data Integrity Protection for Amazon S3” erfordert. Die derzeit empfohlene Lösung ist, auf eine ältere Version der AWS CLI oder des AWS SDK zurückzugreifen oder ein anderes, mit dem Object Storage kompatibles Tool zu verwenden.
Fakten und Zahlen
Abschnitt betitelt „Fakten und Zahlen“S3 Object Storage
Abschnitt betitelt „S3 Object Storage“- Alternative Namen: Object Storage, Swift
- Typ: Objektbasierter Cloud-Storage
- Provisionierung: S3-API, OpenStack-API, Web-Konsole
- Zugriffsmuster: HTTP(S), REST-API, global, ähnlich RWX
- Verfügbarkeit: Global
- Redundanz: Dreizonig
- Verschlüsselung: Optional (SSE-C)
- Zugriffskontrolle: IAM, ACLs, Bucket-Policies
- Backup: Vom Kunden verwaltet
- Beschreibung: Backup, Archivierung, Webanwendungen, Data Lakes.
Falls Ihr Anwendungsfall NFS erfordert, kontaktieren Sie bitte Ihren Vertriebsansprechpartner für ein Angebot zum Managed Storage.
S3-Placement-Targets
Abschnitt betitelt „S3-Placement-Targets“Wir bieten folgende S3-Placement-Targets:
| Placement | Backend-Typ | Information |
|---|---|---|
default-placement | Gemischt HDD+Flash | Sollte für die meisten Anwendungsfälle am besten geeignet sein. Über 3 Zonen innerhalb der Geolokation verteilt. |
Bitte beachten Sie, dass das Placement-Target nach der Erstellung nicht nachträglich geändert werden kann.
