Verwendung des MinIO-Clients (S3)
Mit dem MinIO-Client (mc) kannst Du einfach mit Deinem Object Storage interagieren. Hier findest Du praktische Beispiele, wie Du den Client für Deinen Bucket unter storage.netways.cloud nutzen kannst.
Voraussetzungen
- Du besitzt einen User mit S3-Key (Access Key und Secret Key).
- Der MinIO-Client ist auf Deinem System installiert. Falls nicht, lade ihn von min.io herunter.
Konfiguration des MinIO-Clients
1. Alias anlegen
Erstelle einen Alias für Deinen NWS-Speicher, um nicht jedes Mal die Zugangsdaten eingeben zu müssen:
Ersetze ACCESS_KEY und SECRET_KEY mit Deinen S3-Zugangsdaten.
Grundlegende Beispiele
1. Bucket auflisten
Zeige alle Buckets in Deinem Projekt an:
2. Datei hochladen
Lade eine lokale Datei in Deinen Bucket hoch:
3. Bucket-Inhalt anzeigen
Zeige alle Dateien in einem Bucket an:
4. Verzeichnis synchronisieren
Synchronisiere ein lokales Verzeichnis mit Deinem Bucket:
5. Datei herunterladen
Lade eine Datei aus dem Bucket herunter:
6. Dateien löschen
Lösche eine Datei aus dem Bucket:
7. Datei-Statistiken anzeigen
Zeige Details zu einer Datei an:
8. Öffentlichen Link erstellen
Erstelle einen temporären Download-Link (24 Stunden gültig):
9. Bucket erstellen
Grundlegende Befehle für Bucket-Policies
Für die Verwaltung öffentlicher Zugriffe (anonymous access) müssen die mc anonymous-Befehle verwendet werden:
1. Aktuelle Policy anzeigen
2. Policy setzen
Beispiele für gängige Policy-Szenarien
Policy-Typen
Der MinIO-Client unterstützt folgende vordefinierte Policy-Typen:
private(kein öffentlicher Zugriff)download(nur Lesen)upload(nur Schreiben)public(Lesen und Schreiben)
1. Öffentlichen Lesezugriff erlauben
2. Öffentlichen Schreibzugriff erlauben
3. Vollständigen öffentlichen Zugriff erlauben
4. Alle öffentlichen Zugriffe entfernen
Achtung
Dieser Befehl wird für gewöhnlich mit folgender Fehlermeldung quittiert:
Allerdings wird der Zugriff trotzdem beschränkt. Aber prüfe es am besten mit 1. Aktuelle Policy anzeigen nach.5. Policy für bestimmten Prefix setzen
JSON-basierte Policy Verwaltung
1. JSON-Policy aus Bucket auslesen
2. JSON-Policy auf Bucket anwenden
Beispiele für JSON-Policies
Beispiel 1: Lesezugriff für bestimmte IP-Bereiche
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": ["s3:GetObject"],
"Resource": ["arn:aws:s3:::mein-bucket/*"],
"Condition": {
"IpAddress": {"aws:SourceIp": ["192.0.2.0/24"]}
}
}
]
}
Beispiel 2: Zeitlich begrenzter Zugriff
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": ["s3:GetObject"],
"Resource": ["arn:aws:s3:::mein-bucket/öffentlich/*"],
"Condition": {
"DateLessThan": {"aws:CurrentTime": "2023-12-31T23:59:59Z"}
}
}
]
}
Tipps & Hinweise
Sicherheitshinweise
- Öffentliche Schreibrechte (
uploadoderpublic) sollten nur in Ausnahmefällen verwendet werden - Prüfe Policies regelmäßig auf ihre Notwendigkeit
- Kombiniere Policies mit Bucket-Quotas, um unerwünschte Nutzung zu begrenzen
- Prüfe JSON-Policies immer auf Gültigkeit
- Teste neue Policies zunächst in nicht-produktiven Umgebungen
Inkrementelle Änderungen der Policies
Debugging
Füge den Parameter --debug zu Deinen Befehlen hinzu, um detaillierte Informationen zu erhalten, falls etwas nicht wie erwartet funktioniert.
Bucket Versioning
Aktivierung des Versionings
Versioning ermöglicht die Speicherung mehrerer Versionen eines Objekts:
# Versioning aktivieren
mc version enable nws/mein-bucket
# Status prüfen
mc version info nws/mein-bucket
Arbeiten mit Versionen
# Alle Versionen eines Objekts anzeigen
mc ls --versions nws/mein-bucket/pfad/datei.txt
# Bestimmte Version herunterladen
mc cp nws/mein-bucket/pfad/datei.txt --version-id VERSION_ID ~/ziel/
# Version löschen
mc rm nws/mein-bucket/pfad/datei.txt --version-id VERSION_ID
Versioning deaktivieren
Object Lifecycle Management
Lifecycle-Regeln erstellen
Automatische Löschungen von Objekten konfigurieren:
1. Erstelle eine JSON-Konfigurationsdatei (lifecycle.json):
{
"Rules": [
{
"ID": "AutoDeleteTempFiles",
"Status": "Enabled",
"Filter": {
"Prefix": "temp/"
},
"Expiration": {
"Days": 7
}
},
{
"ID": "DeleteOldLogs",
"Status": "Enabled",
"Filter": {
"Prefix": "logs/"
},
"Expiration": {
"Days": 30
}
}
]
}
2. Regel anwenden:
Lifecycle-Regeln verwalten
# Vorhandene Regeln anzeigen
mc ilm rule list nws/mein-bucket
# Regel entfernen
mc ilm rule remove nws/mein-bucket --id "AutoDeleteTempFiles"
Alternative: Unversionierte Objekte löschen
{
"Rules": [
{
"ID": "ExpireNonCurrentVersions",
"Status": "Enabled",
"NoncurrentVersionExpiration": {
"NoncurrentDays": 90
}
}
]
}
Erweiterte Expiration-Optionen
{
"Rules": [
{
"ID": "ExpireAtSpecificDate",
"Status": "Enabled",
"Filter": {
"Prefix": "project-archive/"
},
"Expiration": {
"Date": "2024-12-31T00:00:00Z"
}
}
]
}
Object Locking
Hier erfährst du mehr zum Thema Object Locking, Retention und Legal Hold.
Bucket mit Object Lock erstellen
Retention-Einstellungen
# Retention für ein Objekt setzen
mc retention set governance 30d nws/gesperrter-bucket/pfad/datei.txt
# Retention-Info abfragen
mc retention info nws/gesperrter-bucket/pfad/datei.txt
Legal Hold
# Legal Hold aktivieren
mc legalhold set nws/gesperrter-bucket/pfad/datei.txt
# Status prüfen
mc legalhold info nws/gesperrter-bucket/pfad/datei.txt
Hinweise
Object Lock
- Einmal aktiviert, kann Object Lock nicht deaktiviert werden
- Retention-Perioden können nur verlängert, nicht verkürzt werden
- Retention-Perioden können zum jetzigen Stand (Ceph Version Nautilus) nicht per "clear" entfernt werden
Lifecycle Management
- Regeln werden typischerweise innerhalb von 24h ausgeführt
- Teste neue Regeln immer mit unkritischen Daten
Best Practices
- Kombiniere Versioning mit Lifecycle-Regeln für automatische Bereinigung
- Nutze Object Lock für Compliance-kritische Daten
- Dokumentiere alle Lifecycle-Regeln im Team