Configurando Minio para que o usuario só poida traballar co seu propio balde

Minio é unha tenda de obxectos sinxela, rápida e compatible con AWS S3. Minio está deseñado para aloxar datos non estruturados como fotos, vídeos, ficheiros de rexistro, copias de seguridade. minio tamén admite o modo distribuído, que ofrece a posibilidade de conectar varios discos a un servidor de almacenamento de obxectos, incluídos os situados en máquinas diferentes.

O propósito desta publicación é configurar minio para que cada usuario poida traballar só co seu propio balde.

En xeral, Minio é axeitado para os seguintes casos:

  • almacenamento sen replicación enriba dun sistema de ficheiros fiable con acceso a través de S3 (almacenamento pequeno e mediano aloxado en NAS e SAN);
  • almacenamento non replicado enriba dun sistema de ficheiros pouco fiable con acceso S3 (para desenvolvemento e probas);
  • almacenamento con replicación nun pequeno grupo de servidores nun rack con acceso a través do protocolo S3 (almacenamento de conmutación por fallo cun dominio de fallo igual ao rack).

Nos sistemas RedHat conectamos o repositorio non oficial de Minio.

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

Xera e engade a MINIO_ACCESS_KEY e 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=

Se non vai usar nginx antes de Minio, entón debes cambiar.

--address 127.0.0.1:9000

en

--address 0.0.0.0:9000

Imos lanzar Minio.

systemctl start minio

Creamos unha conexión con Minio chamada myminio.

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

Crear un bucket user1bucket.

minio-mc mb myminio/user1bucket

Crear un bucket user2bucket.

minio-mc mb myminio/user2bucket

Cree un ficheiro 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 ficheiro 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 user1 co contrasinal test12345.

minio-mc admin user add myminio user1 test12345

Cree un usuario user2 co contrasinal test54321.

minio-mc admin user add myminio user2 test54321

Creamos unha política en Minio chamada user1-policy a partir do ficheiro user1-policy.json.

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

Creamos unha política en Minio chamada user2-policy a partir do ficheiro user2-policy.json.

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

Aplique a política de política de usuario1 ao usuario usuario1.

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

Aplique a política de política de usuario2 ao usuario usuario2.

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

Comprobación da conexión das políticas cos usuarios

minio-mc admin user list myminio

Comprobar a conexión das políticas cos usuarios terá un aspecto así

enabled    user1                 user1-policy
enabled    user2                 user2-policy

Para máis claridade, vai polo navegador ata o enderezo http://ip-сервера-где-запущен-minio:9000/minio/

Vemos que nos conectamos a Minio en MINIO_ACCESS_KEY=usuario1. O depósito user1bucket está dispoñible para nós.

Configurando Minio para que o usuario só poida traballar co seu propio balde

Non será posible crear un depósito, xa que non hai Acción correspondente na política.

Configurando Minio para que o usuario só poida traballar co seu propio balde

Imos crear un ficheiro no bucket user1bucket.

Configurando Minio para que o usuario só poida traballar co seu propio balde

Conectámonos a Minio en MINIO_ACCESS_KEY=usuario2. O depósito user2bucket está dispoñible para nós.

E non vemos nin user1bucket nin ficheiros de user1bucket.

Configurando Minio para que o usuario só poida traballar co seu propio balde

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

Fonte: www.habr.com