Minio è un semplice, veloce e compatibile con AWS S3 storage di oggetti. Minio è progettato per ospitare dati non strutturati, come fotografie, video, file di registro e backup. Minio supporta anche la modalità distribuita, che consente di collegare a un singolo server di storage oggetti diversi dischi, anche situati su macchine diverse.
L'obiettivo di questo post è configurare Minio in modo che ogni utente possa lavorare solo con il proprio bucket.
In generale, Minio è adatto per i seguenti casi:
- storage senza replica su un file system affidabile con accesso S3 (archiviazioni piccole e medie, ospitate su NAS e SAN);
- storage senza replica su un file system inaffidabile con accesso S3 (per sviluppo e test);
- storage con replica su un piccolo gruppo di server in un rack con accesso tramite protocollo S3 (storage resistente agli errori con dominio di errore pari al rack).
Su sistemi RedHat, colleghiamo un repository non ufficiale di Minio.
yum -y install yum-plugin-copr
yum copr enable -y lkiesow/minio
yum install -y minio minio-mcGeneriamo e aggiungiamo in MINIO_ACCESS_KEY e MINIO_SECRET_KEY in /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 utilizzi nginx prima di Minio, devi modificare.
--address 127.0.0.1:9000con
--address 0.0.0.0:9000Avviamo Minio.
systemctl start minioCreiamo una connessione a Minio chiamata myminio.
minio-mc config host add myminio http://localhost:9000 MINIO_ACCESS_KEY
MINIO_SECRET_KEYCreiamo il bucket user1bucket.
minio-mc mb myminio/user1bucketCreiamo il bucket user2bucket.
minio-mc mb myminio/user2bucketCreiamo il file di policy 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": ""
}
]
}Creiamo il file di policy 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": ""
}
]
}Creiamo l'utente user1 con la password test12345.
minio-mc admin user add myminio user1 test12345Creiamo l'utente user2 con la password test54321.
minio-mc admin user add myminio user2 test54321Creiamo una politica in Minio chiamata user1-policy dal file user1-policy.json.
minio-mc admin policy add myminio user1-policy user1-policy.jsonCreiamo una politica in Minio chiamata user2-policy dal file user2-policy.json.
minio-mc admin policy add myminio user2-policy user2-policy.jsonApplichiamo la politica user1-policy all'utente user1.
minio-mc admin policy set myminio user1-policy user=user1Applichiamo la politica user2-policy all'utente user2.
minio-mc admin policy set myminio user2-policy user=user2Controlliamo l'applicazione delle politiche agli utenti.
minio-mc admin user list myminioIl controllo delle politiche applicate agli utenti sarà simile a questo.
enabled user1 user1-policy
enabled user2 user2-policyPer maggiore chiarezza, accediamo tramite il browser all'indirizzo
Vediamo che ci siamo connessi a Minio con MINIO_ACCESS_KEY=user1. Per noi è disponibile il bucket user1bucket.

Non è possibile creare un bucket, poiché non esiste l'azione corrispondente nella politica.

Creeremo un file nel bucket user1bucket.

Ci connetteremo a Minio con MINIO_ACCESS_KEY=user2. Per noi è disponibile il bucket user2bucket.
E non vediamo né user1bucket né i file in user1bucket.

Ho creato un chat Telegram per Minio.
Fonte: habr.com
