Configurar Minio para que el usuario solo pueda trabajar con su propio depósito

Minio es un almacén de objetos sencillo, rápido y compatible con AWS S3. Minio está diseñado para alojar datos no estructurados como fotos, vídeos, archivos de registro y copias de seguridad. minio también admite el modo distribuido, que brinda la capacidad de conectar varios discos a un servidor de almacenamiento de objetos, incluidos aquellos ubicados en diferentes máquinas.

El propósito de esta publicación es configurar minio para que cada usuario pueda trabajar solo con su propio depósito.

En general, Minio es adecuado para los siguientes casos:

  • almacenamiento sin replicación además de un sistema de archivos confiable con acceso a través de S3 (almacenamiento pequeño y mediano alojado en NAS y SAN);
  • almacenamiento no replicado sobre un sistema de archivos no confiable con acceso S3 (para desarrollo y pruebas);
  • almacenamiento con replicación en un pequeño grupo de servidores en un rack con acceso a través del protocolo S3 (almacenamiento de conmutación por error con un dominio de falla igual al rack).

En los sistemas RedHat conectamos el repositorio no oficial de Minio.

yum -y install yum-plugin-copr
yum copr enable -y lkiesow/minio
yum install -y minio minio-mc

Genere y agregue a MINIO_ACCESS_KEY y MINIO_SECRET_KEY en /etc/minio/minio.conf.

# Custom username or access key of minimum 3 characters in length.
MINIO_ACCESS_KEY=

# Custom password or secret key of minimum 8 characters in length.
MINIO_SECRET_KEY=

Si no va a utilizar nginx antes de Minio, entonces debe cambiar.

--address 127.0.0.1:9000

en

--address 0.0.0.0:9000

Lancemos Minio.

systemctl start minio

Creamos una conexión con Minio llamada myminio.

minio-mc config host add myminio http://localhost:9000 MINIO_ACCESS_KEY 
MINIO_SECRET_KEY

Crea un depósito usuario1 depósito.

minio-mc mb myminio/user1bucket

Crea un depósito usuario2 depósito.

minio-mc mb myminio/user2bucket

Cree un archivo de política user1-policy.json.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "s3:PutBucketPolicy",
        "s3:GetBucketPolicy",
        "s3:DeleteBucketPolicy",
        "s3:ListAllMyBuckets",
        "s3:ListBucket"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::user1bucket"
      ],
      "Sid": ""
    },
    {
      "Action": [
        "s3:AbortMultipartUpload",
        "s3:DeleteObject",
        "s3:GetObject",
        "s3:ListMultipartUploadParts",
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::user1bucket/*"
      ],
      "Sid": ""
    }
  ]
}

Cree un archivo de política user2-policy.json.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "s3:PutBucketPolicy",
        "s3:GetBucketPolicy",
        "s3:DeleteBucketPolicy",
        "s3:ListAllMyBuckets",
        "s3:ListBucket"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::user2bucket"
      ],
      "Sid": ""
    },
    {
      "Action": [
        "s3:AbortMultipartUpload",
        "s3:DeleteObject",
        "s3:GetObject",
        "s3:ListMultipartUploadParts",
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::user2bucket/*"
      ],
      "Sid": ""
    }
  ]
}

Cree un usuario usuario1 con la contraseña test12345.

minio-mc admin user add myminio user1 test12345

Cree un usuario usuario2 con la contraseña test54321.

minio-mc admin user add myminio user2 test54321

Creamos una política en Minio llamada user1-policy a partir del archivo user1-policy.json.

minio-mc admin policy add myminio user1-policy user1-policy.json

Creamos una política en Minio llamada user2-policy a partir del archivo user2-policy.json.

minio-mc admin policy add myminio user2-policy user2-policy.json

Aplique la política de política de usuario1 al usuario usuario1.

minio-mc admin policy set myminio user1-policy user=user1

Aplique la política de política de usuario2 al usuario usuario2.

minio-mc admin policy set myminio user2-policy user=user2

Comprobando la conexión de políticas a los usuarios.

minio-mc admin user list myminio

Verificar la conexión de las políticas con los usuarios se verá así

enabled    user1                 user1-policy
enabled    user2                 user2-policy

Para mayor claridad, vaya a través del navegador a la dirección http://ip-сервера-где-запущен-minio:9000/minio/

Vemos que nos conectamos a Minio bajo MINIO_ACCESS_KEY=user1. El depósito user1bucket está disponible para nosotros.

Configurar Minio para que el usuario solo pueda trabajar con su propio depósito

No será posible crear un depósito porque no hay una acción correspondiente en la política.

Configurar Minio para que el usuario solo pueda trabajar con su propio depósito

Creemos un archivo en el depósito usuario1bucket.

Configurar Minio para que el usuario solo pueda trabajar con su propio depósito

Conectémonos a Minio en MINIO_ACCESS_KEY=user2. El depósito user2bucket está disponible para nosotros.

Y no vemos ni user1bucket ni archivos de user1bucket.

Configurar Minio para que el usuario solo pueda trabajar con su propio depósito

Creé un chat de Telegram usando Minio https://t.me/minio_s3_ru

Fuente: habr.com