Zurück zu den Notizen

veröffentlicht 2025-06-06

Wie Dateilisten ausblenden, aber öffentliche Downloads in MinIO zulassen?

l-you avatarGanz Du

Dieser Leitfaden wurde für das MinIO-Release RELEASE.2025-05-24T17-08-30Z erstellt, das zum Zeitpunkt der Veröffentlichung das neueste Version-Tag ist.

Schritt 1: Bucket-Alias erstellen

bash

mc alias set myminio https://minio.example.com YOUR_ACCESS_KEY YOUR_SECRET_KEY
mc mb myminio/public

Schritt 2: Bucket-Richtlinie auf öffentlichen Nur-Lesezugriff setzen

bash

mc anonymous set download myminio/public

Dies bewirkt Folgendes: - Erlaubt das Auflisten der Dateien im Bucket. - Erlaubt das Herunterladen beliebiger Dateien.

Schritt 3: JSON der Bucket-Richtlinie bearbeiten

Führen Sie zunächst den folgenden Befehl aus, um die aktuelle, im vorherigen Schritt erstellte JSON-Richtlinie abzurufen.

bash

mc anonymous get-json myminio/public

Die Ausgabe sieht wie folgt aus: “Das ist die durch das Preset ‘download’ definierte Richtlinie.

json

{
 "Statement": [
  {
   "Action": [
    "s3:GetBucketLocation",
    "s3:ListBucket"
   ],
   "Effect": "Allow",
   "Principal": {
    "AWS": [
     "*"
    ]
   },
   "Resource": [
    "arn:aws:s3::: public"
   ]
  },
  {
   "Action": [
    "s3:GetObject"
   ],
   "Effect": "Allow",
   "Principal": {
    "AWS": [
     "*"
    ]
   },
   "Resource": [
    "arn:aws:s3::: public/*"
   ]
  }
 ],
 "Version": "2012-10-17"
}

Die Zeile, die es jedem erlaubt, die im Bucket verfügbaren Dateien aufzulisten, ist s3:ListBucket in der Eigenschaft ‘Action’. Entfernen Sie sie einfach und laden Sie die Richtlinie mit dem folgenden Befehl erneut hoch.

bash

mc anonymous set-json /path-to-your-edited-json-policy.json myminio/public

Dabei enthält die Datei /path-to-your-edited-json-policy.json die bearbeitete Version Ihrer Richtlinie.

json

{
 "Statement": [
  {
   "Action": [
    "s3:GetBucketLocation"
   ],
   "Effect": "Allow",
   "Principal": {
    "AWS": [
     "*"
    ]
   },
   "Resource": [
    "arn:aws:s3::: public"
   ]
  },
  {
   "Action": [
    "s3:GetObject"
   ],
   "Effect": "Allow",
   "Principal": {
    "AWS": [
     "*"
    ]
   },
   "Resource": [
    "arn:aws:s3:::public/*"
   ]
  }
 ],
 "Version": "2012-10-17"
}

Schritt 4: Überprüfen, dass Auflistungen verborgen sind

Öffnen Sie die Root Ihres MinIO-S3-Endpunkts. Zum Beispiel ‘youbucket.s3.yourdomain.com’. Wenn Sie einen XML-formatierten Fehler mit der Meldung ‘Access Denied’ erhalten, funktioniert alles wie erwartet!