Hace unos días os contaba cómo desplegar Minio, y también sus capacidades como plataforma de Data Lake en nuestro entorno local. Podéis revisar estos artículos aquí.
Hoy os cuento cómo empezar a trabajar con esta plataforma usando su portal web. Os recuerdo que también se puede operar Minio con su CLI.
Lo que os mostraré en este artículo es lo siguiente:
- Cómo crear un bucket.
- Cómo crear políticas de acceso, en concreto:
- Una política de solo lectura, para usuarios que solo deban acceder a los archivos dentro del bucket.
- Una política de lectura y escritura, para usuarios que puedan subir o borrar archivos dentro del bucket, además de poedr leer y descargar esos archivos.
- Crear usuarios
- Crear grupos de usuarios.
- Vincular a un grupo tanto usuarios, como políticas. De esta manera los permisos se darán a nivel de grupo en lugar de a nivel de usuario (que también es posible).
Nota: Todos los pasos mostrados se harán logándose en la plataforma con un usuario administrador, para disponer de todos los permisos necesarios.
Así que nada ¡Vamos al lío!
Pequeñas aclaraciones previas
Para la gente que no esté habituada a trabajar con este tipo de herramientas, Minio toma como base S3 de AWS, así que hay ciertos conceptos y componentes que son idénticos a los que se manajen en el servicio de almacenamiento de objetos de AWS (S3).
Cuando hablo de un bucket, me refiero a un contenedor de objetos (archivos), a efectos prácticos es una carpeta de un sistema de almacenamiento que nos permite organizar archivos y permisos de acceso a esos archivos.
En cuanto al concepto de objeto en este tipo de almacenamiento, estoy hablando de un archivo. La diferencia con un archivo que podemos tener en nuestro disco duro local en el ordenador, es que un objeto es inmutable, no podemos editarlo directamente en el sistema de almacenamiento. Para poder modificarlo, tendríamos que subir una nueva versión modificada del objeto (archivo). Es decir, debemos editarlo en nuestro equipo y subir esa nueva versión.
El formato de las políticas de control de acceso, que son equivalentes a los permisos que se tendrían en un almacenamiento de ficheros estándar, se definen siguiendo el formato de AWS, que es un formato en JSON. Os he dejado en este enlace, un repositorio con los archivos JSON que usaré para este laboratorio, para que lo tengáis a mano.
Crear un bucket
Dentro de la sección Administrator se pulsará en Buckets para entrar en la sección de administración de los buckets creados en la plataforma y pulsaremos en el botón Create Bucket para entrar en el panel de creación de un nuevo bucket.

Se nos abrirá un panel para la creación y configuración del nuevo bucket:

En el panel de creación del bucket se incluirá:
- El nombre del bucket.
- Habilitamos el versionado para poder tener copias de las distintas versiones de cada archivo, de tal manera que podremos recuperar versiones anteriores en caso de que se requiera. Ess una manera de tener copias de seguridad sin configuraciones adicionales, solo marcando esta opción.
- Podemos marcar una cuota de almacenamiento en el bucket para controlar el espacio máximo que podrá ocupar un bucket concreto. Se tendrá que indicar la capacidad máxima, pudiendo cambiar la medida entre GB y TB pulsando en el botón a la derecha del campo Capacity.
- Habilitamos el campo de Retention, esto nos marcará cuántos días se retendrán archivos borrados y versiones antiguas antes de borrarlos por completo. Se debe indicar el número de días. Y también debemos elegir entre dos opciones:
- Governance: es el modo más flexible, administradores de la plataforma podrían borrar los objetos borrados se pueden borrar antes del período de retención, o cambiar el período de retención para el objeto.
- Compliance: es el modo más restrictivo y el recomendado para temas de mantener archivos por ley, ya que en este caso, los objetos borrados, ni siquiera perfiles administradores de la plataforma pueden borrar, sobrescribir o acortar la retención del objeto.
Pulsamos en el botón de Create Bucket para completar la creación del bucket y nos llevará a una pantalla en donde podremos ver el bucket creado.

Crear policies
El siguiente punto es crear las políticas de solo lectura y de lectura y escritura. Para ello desde el menú lateral izquierdo vamos a Administrator -> Policies para acceder a la configuración de las políticas. Pulsaremos en el botón Create Policy para abrir el proceso de creación de una nueva política.

En el siguiente punto, se tendrá que dar un nombre a la política y se incluirán los permisos que tendrá esta política en el bucket. El formato de la configuración es en formato JSON. Os he dejado aquí, los archivos JSON que usaré para esta publicación. Tras incluir esta información, pulsamos en Save.

Los permisos que se pueden ver actúan a dos nivels, por un lado a nivel de Bucket, en donde se permiten obtener la ubicación del bucket y listar objetos dentro del bucket. Y la segunda configuración da permisos de descarga de los objetos a paritr del path raíz del bucket.
En el caso de la configuración de lectura y escritura, se dan permisos adicionales para poder realizar estas acciones:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::test-00"
},
{
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::test-00/*"
}
]
}Con esto podemos crear las dos políticas que se usará para continuar con el ejemplo.
Crear grupos
Ahora toca crear grupos de usuarios, si bien las políticas configuradas en el punto anterior se pueden asignar a nivel de usuario directamente, optaremos por asociarlas a los grupos, para así simplificar la gestión de los permisos dados a usuarios a partir de grupos.
Para crear un grupo, desde el panel de la izquierda vamos a Administrator -> Identity -> Groups y se pulsará en el botón Create Group.

Bastará con darle un nombre al grupo y pulsar en el botón Save para completar este proceso.

Crear usuarios
Ya casi terminamos, tenemos que crear los usuarios para la prueba de este procedimiento. Desde el panel izquierdo en Administrator -> Identity -> Users, pulsaremos en Create User para abrir el panel de creación de usuarios.

Daremos un nombre de usuario, marcaremos una password, y en este caso, no marcaremos una policy porque la asociaremos a través del grupo de usuario al que se asocie el usuario al crearlo. Podemos marcar ya los grupos a los que asignaremos el usuario en este punto, marcándolos en la parte inferior del panel. Por último, se pulsa en el botón Save para terminar el proceso.

Asignar policies y usuarios a los grupos
Entramos en la recta final del procedimiento. Vamos a Administrator -> Identity -> Groups y se pulsa en el grupo a configurar.

Pulsando en el panel Members y en el botón Add Member, podremos añadir los usuarios que consideremos al grupo.

Marcamos los usuarios que queremos asociar al grupo y pulsamos en Save.

Tras este acmbio, nos devuelve al punto anterior en el que iremos al panel de Policies y pulsaremos en el botón Set Policies para asignar las políticas que se aplicarán a los usuarios del grupo.

Podemos hacer una búsqueda para filtrar las políticas para simplificar la tarea de asignarlas y marcamos las policies que queremos asignar al grupo. Se pulsa el botón Save para guardar los cambios.

Probando esto
Cerramos sesión en Minio y entramos con el usuario que hemos creado para aplicarle la política de solo lectura, y podremos ver el bucket creado y al que le hemos dado permisos de lectura.

Como podéis ver, nos aparece deshabilitado el botón de Upload y poniéndonos encima del botón nos muestra el mensaje de que no disponemos de permisos suficientes para realizar esa operación.

Cerrando sesión y entrando con el usuario creado al que se le ha asignado el grupo con la política de lectura y escritura, sí tendremos la posibilidad de subir archivos.

Y confirmamos que podemos subir archivos subiendo uno de prueba.

Si volvemos a entrar con el usuario con permisos de solo lectura, podemos ver el archivo subido y descargarlo.

Referencias
- Repositorio con los archivos de policies utilizadas: https://github.com/tblproject/tbl_minio/tree/main/iam_policies

Un comentario
Los comentarios están cerrados.