Configurarea Minio, astfel încât utilizatorul să poată lucra doar cu propriul său bucket

Minio este un sistem de stocare de obiecte simplu, rapid și compatibil cu AWS S3. Minio a fost creat pentru a stoca date nestructurate, cum ar fi fotografii, videoclipuri, fișiere de jurnal și backup-uri. Minio suportă, de asemenea, un mod distribuit (distributed mode), care permite conectarea mai multor discuri de stocare de obiecte la un singur server, inclusiv discuri situate pe mașini diferite.

Scopul acestui post este să configurăm minio astfel încât fiecare utilizator să poată lucra doar cu bucket-ul său.

În general, Minio este potrivit pentru următoarele situații:

  • stocare fără replicare peste un sistem de fișiere fiabil, cu acces prin S3 (pentru stocări mici și medii, găzduite pe NAS și SAN);
  • stocare fără replicare peste un sistem de fișiere nesigur, cu acces prin S3 (pentru dezvoltare și testare);
  • stocare cu replicare pe un grup mic de servere într-un rack, cu acces prin protocolul S3 (stocare tolerantă la erori cu un domeniu de eșec egal cu rack-ul).

Pe sistemele RedHat, conectăm un repository neoficial Minio.

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

Generăm și adăugăm în MINIO_ACCESS_KEY și MINIO_SECRET_KEY în /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=

Dacă nu veți folosi nginx înainte de Minio, va trebui să modificați.

--address 127.0.0.1:9000

pe

--address 0.0.0.0:9000

Pornim Minio.

systemctl start minio

Creăm o conexiune la Minio denumită myminio.

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

Creăm bucket-ul user1bucket.

minio-mc mb myminio/user1bucket

Creăm bucket-ul user2bucket.

minio-mc mb myminio/user2bucket

Creăm fișierul de politică 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": ""
    }
  ]
}

Creăm fișierul de politică 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": ""
    }
  ]
}

Creăm utilizatorul user1 cu parola test12345.

minio-mc admin user add myminio user1 test12345

Creăm utilizatorul user2 cu parola test54321.

minio-mc admin user add myminio user2 test54321

Creăm o politică în Minio numită user1-policy din fișierul user1-policy.json.

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

Creăm o politică în Minio numită user2-policy din fișierul user2-policy.json.

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

Aplicăm politica user1-policy utilizatorului user1.

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

Aplicăm politica user2-policy utilizatorului user2.

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

Verificăm conexiunea politicilor cu utilizatorii

minio-mc admin user list myminio

Verificarea conexiunii politicilor cu utilizatorii va arăta oarecum așa

enabled    user1                 user1-policy
enabled    user2                 user2-policy

Pentru claritate, accesăm prin browser la adresa http://ip-server-unde-este-lansat-minio:9000/minio/

Vedem că ne-am conectat la Minio cu MINIO_ACCESS_KEY=user1. Bucket-ul user1bucket ne este disponibil.

Configurarea Minio, astfel încât utilizatorul să poată lucra doar cu propriul său bucket

Nu se va putea crea un bucket, deoarece nu există acțiunea corespunzătoare în politică.

Configurarea Minio, astfel încât utilizatorul să poată lucra doar cu propriul său bucket

Vom crea un fișier în bucket user1bucket.

Configurarea Minio, astfel încât utilizatorul să poată lucra doar cu propriul său bucket

Ne vom conecta la Minio cu MINIO_ACCESS_KEY=user2. Bucket-ul user2bucket ne este disponibil.

Iar nu vedem nici user1bucket, nici fișiere din user1bucket.

Configurarea Minio, astfel încât utilizatorul să poată lucra doar cu propriul său bucket

Am creat un chat pe Telegram despre Minio https://t.me/minio_s3_ru

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster