Configurarea Minio astfel încât utilizatorul să poată lucra numai cu propria sa găleată

Minio este un magazin de obiecte simplu, rapid, compatibil cu AWS S3. Minio este conceput pentru a găzdui date nestructurate, cum ar fi fotografii, videoclipuri, fișiere jurnal, copii de siguranță. minio acceptă, de asemenea, modul distribuit, care oferă posibilitatea de a conecta mai multe discuri la un server de stocare a obiectelor, inclusiv pe cele situate pe diferite mașini.

Scopul acestei postări este de a configura minio astfel încât fiecare utilizator să poată lucra doar cu propria sa găleată.

În general, Minio este potrivit pentru următoarele cazuri:

  • stocare fără replicare pe deasupra unui sistem de fișiere fiabil cu acces prin S3 (stocare mică și medie găzduită pe NAS și SAN);
  • stocare nereplicată pe deasupra unui sistem de fișiere nesigur cu acces S3 (pentru dezvoltare și testare);
  • stocare cu replicare pe un grup mic de servere într-un rack cu acces prin protocolul S3 (stocare de failover cu un domeniu de eroare egal cu rack).

Pe sistemele RedHat conectăm depozitul neoficial Minio.

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

Generați și adăugați la 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, atunci trebuie să schimbați.

--address 127.0.0.1:9000

pe

--address 0.0.0.0:9000

Să lansăm Minio.

systemctl start minio

Creăm o conexiune la Minio numită myminio.

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

Creați o găleată user1bucket.

minio-mc mb myminio/user1bucket

Creați o găleată user2bucket.

minio-mc mb myminio/user2bucket

Creați un fișier 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": ""
    }
  ]
}

Creați un fișier 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": ""
    }
  ]
}

Creați un utilizator user1 cu parola test12345.

minio-mc admin user add myminio user1 test12345

Creați un utilizator 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

Aplicați politica user1-policy utilizatorului user1.

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

Aplicați politica user2-policy utilizatorului user2.

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

Verificarea conexiunii politicilor la utilizatori

minio-mc admin user list myminio

Verificarea conexiunii politicilor la utilizatori va arăta cam așa

enabled    user1                 user1-policy
enabled    user2                 user2-policy

Pentru claritate, accesați browserul la adresa http://ip-сервера-где-запущен-minio:9000/minio/

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

Configurarea Minio astfel încât utilizatorul să poată lucra numai cu propria sa găleată

Nu va fi posibil să se creeze o grupă, deoarece nu există nicio acțiune corespunzătoare în politică.

Configurarea Minio astfel încât utilizatorul să poată lucra numai cu propria sa găleată

Să creăm un fișier în bucket user1bucket.

Configurarea Minio astfel încât utilizatorul să poată lucra numai cu propria sa găleată

Să ne conectăm la Minio sub MINIO_ACCESS_KEY=user2. Bucket-ul user2bucket este disponibil pentru noi.

Și nu vedem nici user1bucket, nici fișierele din user1bucket.

Configurarea Minio astfel încât utilizatorul să poată lucra numai cu propria sa găleată

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

Sursa: www.habr.com