Volver a notas

publicado 2025-06-06

¿Cómo ocultar el listado de archivos pero permitir las descargas públicas en MinIO?

l-you avatarLiteralmente Tú

Esta guía se creó para la versión de MinIO RELEASE.2025-05-24T17-08-30Z, que es la etiqueta de versión más reciente disponible en el momento de la publicación.

Paso 1: Crear un alias del bucket

bash

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

Paso 2: Configurar la política del bucket para acceso público de solo lectura

bash

mc anonymous set download myminio/public

Esto hace lo siguiente: - Permite listar los archivos del bucket. - Permite descargar cualquier archivo.

Paso 3: Editar el JSON de la política del bucket

Primero, ejecuta el siguiente comando para obtener la política JSON actual creada en el paso anterior.

bash

mc anonymous get-json myminio/public

La salida se verá así: “Esa es la política definida por el preajuste ‘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"
}

La línea que permite a cualquiera listar los archivos disponibles en el bucket es s3:ListBucket en la propiedad ‘Action’. Simplemente elimínala y vuelve a subir la política con el siguiente comando.

bash

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

Donde el archivo /path-to-your-edited-json-policy.json contiene la versión editada de tu política.

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

Paso 4: Verificar que los listados estén ocultos

Abre la raíz de tu endpoint S3 de MinIO. Por ejemplo ‘youbucket.s3.yourdomain.com’. Si obtienes un error con formato XML que diga ‘Access Denied’, ¡entonces todo funciona como se espera!