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-mcGeramos 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:9000para
--address 0.0.0.0:9000Iniciamos o Minio.
systemctl start minioCriamos uma conexão com o Minio chamada myminio.
minio-mc config host add myminio http://localhost:9000 MINIO_ACCESS_KEY
MINIO_SECRET_KEYCriamos o bucket user1bucket.
minio-mc mb myminio/user1bucketCriamos o bucket user2bucket.
minio-mc mb myminio/user2bucketCriamos 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 test12345Criando o usuário user2 com a senha test54321.
minio-mc admin user add myminio user2 test54321Criando 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.jsonCriando 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.jsonAplicando a política user1-policy ao usuário user1.
minio-mc admin policy set myminio user1-policy user=user1Aplicando a política user2-policy ao usuário user2.
minio-mc admin policy set myminio user2-policy user=user2Verificando a conexão das políticas com os usuários
minio-mc admin user list myminioA verificação da conexão das políticas com os usuários será aproximadamente assim
enabled user1 user1-policy
enabled user2 user2-policyPara facilitar a visualização, acesse pelo navegador o endereço
Vemos que nos conectamos ao Minio com MINIO_ACCESS_KEY=user1. Para nós, o bucket user1bucket está disponível.

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

Vamos criar um arquivo no bucket user1bucket.

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.

Criei um chat no Telegram sobre Minio
Fonte: habr.com
