Назад до нотаток

опубліковано 2025-06-06

Як приховати список файлів, але дозволити публічне завантаження в MinIO?

l-you avatarLiterally You

Цей посібник створено для випуску MinIO RELEASE.2025-05-24T17-08-30Z, що є найновішою міткою версії на момент публікації.

Крок 1: Створіть псевдонім бакета

bash

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

Крок 2: Встановіть політику бакета для публічного доступу лише для читання

bash

mc anonymous set download myminio/public

Це забезпечує таке: - Дозволяє перегляд списку файлів у бакеті. - Дозволяє завантажувати будь-який файл.

Крок 3: Відредагуйте JSON політики бакета

Спочатку виконайте таку команду, щоб отримати поточну JSON‑політику, створену попереднім кроком.

bash

mc anonymous get-json myminio/public

Вивід виглядатиме так: “Це політика, визначена пресетом ‘download’.

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

Рядок, який дозволяє будь-кому переглядати список файлів у бакеті, це s3:ListBucket у властивості ‘Action’. Просто приберіть його та завантажте політику знову за допомогою такої команди.

bash

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

Де файл /path-to-your-edited-json-policy.json містить відредаговану версію вашої політики.

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

Крок 4: Переконайтеся, що перелік файлів приховано

Відкрийте корінь вашого MinIO S3-ендпоінта. Наприклад ‘youbucket.s3.yourdomain.com’. Якщо ви отримуєте помилку у форматі XML з текстом ‘Access Denied’, тоді все працює як очікується!