El otro día os daba un pequeño repaso de unos primeros pasos a dar con el protal de Minio, pero como sabéis, Minio también nos ofrece la posibilidades de gestionar la plataforma a través de una CLI. En este artículo os cuento cómo hacer las mismas acciones que en el artículo anterior de primeros pasos, pero con el comando mc.
Os he dejado en este archivo todos los comandos, junto con comandos de validación, no entraré en detalle de estos comandos en esta publicación, me centraré en los comandos de creación y configuración de elementos en Minio.
¿ Qué vamos a ver ?
Los comandos que os voy a contar, recogen las siguientes acciones:
- Configurar un alias para la gestión de la conexión a minio.
- Crear un bucket con versionado y retención.
- Crear una policy de control de acceso al bucket.
- Crear un usuario.
- Crear un grupo y asociarle el usuario y la policy.
¡ Vamos al lío !
Configurar un alias de conexión
El primer paso es crear un alias con la información de la conexión al clúster de Minio que queremos gestionar. El cliente de Minio no tiene por qué estar instalado en la misma máquina en la que corre el servicio, sino que podemos tenerlo instalado en otra máquina y, desde esa máquina, gestionar múltiples clústeres de Minio.
Para poder hacer esto, se debe crear un alias asociado a cada conexión. Este alias se usará como referencia a la hora de lanzar comandos, para que se dirijan contra el clúster en concreto con el que se quiere trabajar. Para crear este alias lanzaremos:
$ mc alias set tbl http://xxx.xxx.xxx.xxx:9000 admin_minio XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
En donde:
- Se indica que como alias usaremos tbl.
- El siguiente campo es la URL de acceso a la API de Minio. Fijaos bien que hablo de la API, puerto 9000, no del portal, puerto 9001.
- Se pasa el usuario con el que nos conectamos, en esta caso es el usuario admin_minio. Pensad que el usuario que utilicéis debe tener permisos suficientes en la plataforma para poder hacer las acciones que esperamos hacer con el CLI.
- Por último, se incluye la contraseña del usuario (oa access secret key en la nomenclatura de AWS).
A partir de esta configuración, cuando se lance un comando, al indicar el alias tbl, se lanzarán las acciones contra este clúster de Minio para el que acabamos de configurar el alias.
Crear un bucket
Este bucket lo crearemos habilitando el versionado y creando una configuración de retención de objetos. El comando en sí, con la respuesta esperada:
$ mc mb --with-lock tbl/test-01
Bucket created successfully `tbl/test-01`.
Qué tenemos en este caso:
- mb es el comando asociado para crear un bucket (make a bucket),
- Es necesaria la opción de –with-lock para poder configurar la retención de objetos borrados en el bucket. Este parámetro no se puede cambiar una vez creado el bucket.
- Se indica el lis y el nombre del bucket de la manera tbl/test-01.
Este primer comando crea el bucket, ahora tenemos que habilitar el versionado:
$ mc version enable tbl/test-01
tbl/test-01 versioning is enabled
Simplemente lanzamos la opción version enable para el bucket creado; de nuevo podéis ver que se marca el alias y el bucket de igual manera que en la creación del bucket.
Podemos también incluir una cuota al bucket, si queremos delimitar el tamaño total a ocupar los objetos en el bucket creado:
$ mc quota set tbl/test-01 --size 10GB
Successfully set bucket quota of 9.3 GiB on `test-01`
Aquí se indica el comando con quota set, de nuevo se referencia la combinación alias/bucket y se marca el tamaño máximo que será capaz de alojar este bucket.
Por último, incluiremos la configuración de la retención de los objetos borrados de la siguiente manera:
$ mc retention set --default governance 7d tbl/test-01/
En este comando podemos ver:
- El comando a lanzar es retention set.
- –default se incluye para que se aplique esta regla a todos los objetos dentro del bucket, podríamos no marcarlo y tendríamos que indicar un objeto para que se aplicara la retención solo a ese objeto concreto. De esta manera, todos los objetos que se suban al bucket, tendrán la misma configuración de retención.
- Se indica el modo governance, os cuento aquí los modos posibles y cuándo usar cada uno de ellos.
- 7d para marcar siete días de retención de objetos borrados.
- Y no podía faltar la relación alias/bucket para indicar el bucket al que aplicar esta configuración.
Crear una policy
Para crear una policy se debe partir de una definición de políticas de acceso en el formato de AWS IAM. Nos toca crear un archivo Json con la configuración de control de acceso. Un ejemplo de política:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::test-01"
},
{
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::test-01/*"
}
]
}
Para crear la policy lanzaremos:
$ mc admin policy create tbl test-01-policy minio_policies/test001_policy.json
Created policy `test-01-policy` successfully.
Aquí tenemos:
- El comando es admin policy create. Nos pasamos en este caso a los comandos asociados a la administración de Minio. Dentro de mc admin se engloban comandos de creación de políticas, usuarios, grupos, …
- Se indica el alias tbl para saber el clúster contra el que se lanzarán las acciones.
- Se pasa el path del archivo Json con la definición de la policy a crear.
Crear usuarios
Seguimos creando cosas, ahora toca crear un usuario a través del cliente de Minio. Comando simple:
$ mc admin user add tbl
Enter Access Key: test_user
Enter Secret Key:
Added user `test_user` successfully.
Al lanzar el comando admin user add sobre el alias tbl, nos pedirá que se incluya el Access Key (nombre de usuario), y el Secret Key ( la contraseña del usuario). Al igual que en el anterior post sobre primeros pasos, la policy la vamos a aplicar a nivel de grupo de usuarios, en lugar de aplicarla a un usuario concreto. Así que dejamos para dentro de un rato de nada, el ver cómo aplicar la policy de esta manera.
Crear grupo de usuario
A la hora de crear un grupo de usuarios, se debe añadir uno o varios usuarios al grupo. De esta manera, crearemos un grupo de usuarios lanzando:
$ mc admin group add tbl test001 test_user
Added members `test_user` to group `test001` successfully.
Vemos que:
- El comando es admin group add.
- Se pasa el alias tbl para apuntar a donde se tiene que apuntar.
- Se pasa el nombre del grupo.
- Por último se incluye el usuario a añadir, o la lista de usuarios si quisiéramos incluir varios.
El paso que nos queda es asignar la policy al grupo. Eso lo hacemos tal que así:
$ mc admin policy attach tbl test-01-policy --group test001
Attached Policies: [test-01-policy]
To Group: test001
Básicamente:
- El comando es admin policy attach.
- Se pasa el alias tbl.
- Se indica el nombre de la policy.
- Para indicar el grupo al que asociarla se pasa el parámetro –group nombre_grupo.
Con esto ya podemos empezar a jugar e incluso a automatizar tareas de creación de buckets y asignación de usuarios y permisos sobre los buckets.
Referencias
- Archivo con todos los comandos: https://github.com/tblproject/tbl_minio/blob/main/comandos/crear_bucket_user_group_policy.md
- Referencia de opciones del comando mc: https://min.io/docs/minio/linux/reference/minio-mc.html