Konfigurimi i Minio, në mënyrë që përdoruesi të mund të punojë vetëm me bucket-in e tij

Minio është një depo objektesh e thjeshtë, e shpejtë dhe e kompatibël me AWS S3. Minio është krijuar për të ruajtur të dhënat e paorganizuar, si fotografi, video, skedarët e logëve, dhe backup-e. Në Minio gjithashtu mbështetet moda e shpërndarë (distributed mode), e cila ofron mundësinë e lidhjes me një server ruajtjeje objektesh me shumë disqe, përfshirë ato të vendosura në makina të ndryshme.

Qëllimi i këtij postimi është të konfigurohet Minio në mënyrë që çdo përdorues të mund të punojë vetëm me bucket-in e tij.

Në përgjithësi, Minio është e përshtatshme për rastet e mëposhtme:

  • depo pa replikim mbi një sistem skedari të besueshëm me qasje përmes S3 (depo të vogla dhe të mesme, të vendosura në NAS dhe SAN);
  • depo pa replikim mbi një sistem skedari të pabesueshëm me qasje përmes S3 (për zhvillim dhe testim);
  • depo me replikim në një grup të vogël serverësh në një raft me qasje përmes protokolli S3 (depo me qëndrueshmëri me një domen dështimi të barabartë me raftin).

Në sistemet RedHat, lidhim një depo të paudhësishme për Minio.

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

Krijojmë dhe shtojmë në MINIO_ACCESS_KEY dhe 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=

Nëse nuk do të përdorni nginx para Minio, atëherë duhet të ndryshoni.

--address 127.0.0.1:9000

--address 0.0.0.0:9000

Nisni Minio.

systemctl start minio

Krijojmë një lidhje me Minio të quajtur myminio.

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

Krijojmë bucket user1bucket.

minio-mc mb myminio/user1bucket

Krijojmë bucket user2bucket.

minio-mc mb myminio/user2bucket

Krijojmë skedarin e politikave 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": ""
    }
  ]
}

Krijojmë skedarin e politikave 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": ""
    }
  ]
}

Krijojmë përdoruesin user1 me fjalëkalimin test12345.

minio-mc admin user add myminio user1 test12345

Krijojmë përdoruesin user2 me fjalëkalimin test54321.

minio-mc admin user add myminio user2 test54321

Krijojmë një politikë në Minio me emrin user1-policy nga skedari user1-policy.json.

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

Krijojmë një politikë në Minio me emrin user2-policy nga skedari user2-policy.json.

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

Aplikohet politika user1-policy për përdoruesin user1.

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

Aplikohet politika user2-policy për përdoruesin user2.

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

Kontrollojmë lidhjet e politikave me përdoruesit

minio-mc admin user list myminio

Kontrolli i lidhjes së politikave me përdoruesit do të duket kështu

enabled    user1                 user1-policy
enabled    user2                 user2-policy

Për qartësi, hyni përmes shfletuesit në adresën http://ip-serverit-ku-po-ia-bejminio:9000/minio/

Vërejmë se jemi lidhur me Minio me MINIO_ACCESS_KEY=user1. Për ne është në dispozicion bucket user1bucket.

Konfigurimi i Minio, në mënyrë që përdoruesi të mund të punojë vetëm me bucket-in e tij

Nuk mund të krijojmë një bucket, sepse nuk ka veprimin e duhur në politikë.

Konfigurimi i Minio, në mënyrë që përdoruesi të mund të punojë vetëm me bucket-in e tij

Do të krijojmë një skedar në bucket user1bucket.

Konfigurimi i Minio, në mënyrë që përdoruesi të mund të punojë vetëm me bucket-in e tij

Do të lidhim me Minio me MINIO_ACCESS_KEY=user2. Për ne është në dispozicion bucket user2bucket.

Dhe nuk shohim as user1bucket dhe as skedarë nga user1bucket.

Konfigurimi i Minio, në mënyrë që përdoruesi të mund të punojë vetëm me bucket-in e tij

Krijova një bisedë në Telegram për Minio https://t.me/minio_s3_ru

Burimi: habr.com

Bli një hosting të besueshëm për faqet me mbrojtje DDoS, VPS VDS serverë 🔥 Bli një hosting të besueshëm për faqet me mbrojtje DDoS, VPS VDS serverë | ProHoster