Zum Inhalt

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:

mc alias set nws https://storage.netways.cloud ACCESS_KEY SECRET_KEY

Ersetze ACCESS_KEY und SECRET_KEY mit Deinen S3-Zugangsdaten.


Grundlegende Beispiele

1. Bucket auflisten

Zeige alle Buckets in Deinem Projekt an:

mc ls nws

2. Datei hochladen

Lade eine lokale Datei in Deinen Bucket hoch:

mc cp ~/meine-datei.txt nws/mein-bucket

3. Bucket-Inhalt anzeigen

Zeige alle Dateien in einem Bucket an:

mc ls nws/mein-bucket

4. Verzeichnis synchronisieren

Synchronisiere ein lokales Verzeichnis mit Deinem Bucket:

mc mirror --overwrite ~/mein-verzeichnis nws/mein-bucket/backup

5. Datei herunterladen

Lade eine Datei aus dem Bucket herunter:

mc cp nws/mein-bucket/meine-datei.txt ~/Downloads/

6. Dateien löschen

Lösche eine Datei aus dem Bucket:

mc rm nws/mein-bucket/meine-datei.txt

7. Datei-Statistiken anzeigen

Zeige Details zu einer Datei an:

mc stat nws/mein-bucket/meine-datei.txt

Erstelle einen temporären Download-Link (24 Stunden gültig):

mc share download --expire 24h nws/mein-bucket/meine-datei.txt

9. Bucket erstellen

mc mb nws/mein-bucket2

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

mc anonymous get nws/mein-bucket

2. Policy setzen

mc anonymous set <POLICY> nws/mein-bucket[/prefix]

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

mc anonymous set download nws/mein-bucket

2. Öffentlichen Schreibzugriff erlauben

mc anonymous set upload nws/mein-bucket

3. Vollständigen öffentlichen Zugriff erlauben

mc anonymous set public nws/mein-bucket

4. Alle öffentlichen Zugriffe entfernen

mc anonymous set private nws/mein-bucket

Achtung

Dieser Befehl wird für gewöhnlich mit folgender Fehlermeldung quittiert:

mc: <ERROR> Unable to set anonymous `private` for `nws/mein-bucket`. 200 OK.
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

mc anonymous set download nws/mein-bucket/öffentlich/

JSON-basierte Policy Verwaltung

1. JSON-Policy aus Bucket auslesen

mc anonymous get-json nws/mein-bucket > policy.json

2. JSON-Policy auf Bucket anwenden

mc anonymous set-json policy.json nws/mein-bucket

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 (upload oder public) 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
mc anonymous get-json nws/mein-bucket > current.json
# Bearbeiten der Datei
mc anonymous set-json current.json nws/mein-bucket
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

mc version suspend nws/mein-bucket

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:

mc ilm rule import nws/mein-bucket < lifecycle.json

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

mc mb --with-lock nws/gesperrter-bucket

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 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