Configuração do Minio para que o usuário possa trabalhar apenas com seu bucket

Minio é um armazenamento de objetos simples, rápido e compatível com o AWS S3. Minio é projetado para armazenar dados não estruturados, como fotos, vídeos, arquivos de log e backups. O minio também suporta modo distribuído, que permite conectar a um único servidor de armazenamento de objetos vários discos, inclusive aqueles localizados em diferentes máquinas.

O objetivo deste post é configurar o minio para que cada usuário possa trabalhar apenas com seu bucket.

De modo geral, Minio é adequado para os seguintes casos:

  • armazenamento sem replicação sobre um sistema de arquivos confiável com acesso via S3 (armazenamentos pequenos e médios, hospedados em NAS e SAN);
  • armazenamento sem replicação sobre um sistema de arquivos não confiável com acesso via S3 (para desenvolvimento e teste);
  • armazenamento com replicação em um pequeno grupo de servidores em um único rack com acesso via protocolo S3 (armazenamento tolerante a falhas com domínio de falha igual ao rack).

Em sistemas RedHat, conectamos o repositório não oficial do Minio.

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

Geramos e adicionamos o MINIO_ACCESS_KEY e MINIO_SECRET_KEY em /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 você não for usar nginx na frente do Minio, deve mudar.

--address 127.0.0.1:9000

para

--address 0.0.0.0:9000

Iniciamos o Minio.

systemctl start minio

Criamos uma conexão com o Minio chamada myminio.

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

Criamos o bucket user1bucket.

minio-mc mb myminio/user1bucket

Criamos o bucket user2bucket.

minio-mc mb myminio/user2bucket

Criamos o arquivo 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": ""
    }
  ]
}

Criamos o arquivo 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": ""
    }
  ]
}

Criamos o usuário user1 com a senha test12345.

minio-mc admin user add myminio user1 test12345

Criando o usuário user2 com a senha test54321.

minio-mc admin user add myminio user2 test54321

Criando uma política no Minio chamada user1-policy a partir do arquivo user1-policy.json.

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

Criando uma política no Minio chamada user2-policy a partir do arquivo user2-policy.json.

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

Aplicando a política user1-policy ao usuário user1.

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

Aplicando a política user2-policy ao usuário user2.

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

Verificando a conexão das políticas com os usuários

minio-mc admin user list myminio

A verificação da conexão das políticas com os usuários será aproximadamente assim

enabled    user1                 user1-policy
enabled    user2                 user2-policy

Para facilitar a visualização, acesse pelo navegador o endereço http://ip-do-servidor-onde-o-minio-esta-executando:9000/minio/

Vemos que nos conectamos ao Minio com MINIO_ACCESS_KEY=user1. Para nós, o bucket user1bucket está disponível.

Configuração do Minio para que o usuário possa trabalhar apenas com seu bucket

Não será possível criar o bucket, pois a Action correspondente não está na política.

Configuração do Minio para que o usuário possa trabalhar apenas com seu bucket

Vamos criar um arquivo no bucket user1bucket.

Configuração do Minio para que o usuário possa trabalhar apenas com seu bucket

Conectaremos ao Minio com MINIO_ACCESS_KEY=user2. Para nós, o bucket user2bucket está disponível.

E não vemos nenhum user1bucket nem arquivos do user1bucket.

Configuração do Minio para que o usuário possa trabalhar apenas com seu bucket

Criei um chat no Telegram sobre Minio https://t.me/minio_s3_ru

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster