Podešavanje Minio-a da korisnik može raditi samo sa svojim bucket-om

Minio je enostavna, hitra in s AWS S3 skladna shramba objektov. Minio je zasnovan za shranjevanje nestrukturiranih podatkov, kot so fotografije, videoposnetki, datoteke dnevnikov in varnostne kopije. V Minio je prav tako podprt porazdeljen način (distributed mode), ki omogoča povezovanje enega strežnika za shranjevanje objektov na več diskov, vključno tistih, ki so na različnih napravah.

Namen tega prispevka je nastaviti Minio tako, da lahko vsak uporabnik dela samo s svojim bucketom.

Na splošno je Minio primeren za naslednje primere:

  • shramba brez replikacije nad zanesljivim datotečnim sistemom z dostopom prek S3 (majhne in srednje shramba, nameščene na NAS in SAN);
  • shramba brez replikacije nad nezanesljivim datotečnim sistemom z dostopom preko S3 (za razvoj in testiranje);
  • shramba z replikacijo na manjšem številu strežnikov v eni omari z dostopom preko S3 (odporna shramba z območjem odpovedi, enaka omari).

Na sistemih RedHat povezujemo neoficirni repository Minio.

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

Generiramo in dodamo v MINIO_ACCESS_KEY in MINIO_SECRET_KEY v /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=

Če ne boste uporabljali nginx pred Minio, ga morate spremeniti.

--address 127.0.0.1:9000

na

--address 0.0.0.0:9000

Zagnamo Minio.

systemctl start minio

Ustvarimo povezavo do Minio z imenom myminio.

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

Ustvarimo bucket user1bucket.

minio-mc mb myminio/user1bucket

Ustvarimo bucket user2bucket.

minio-mc mb myminio/user2bucket

Ustvarimo datoteko politike 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": ""
    }
  ]
}

Ustvarimo datoteko politike 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": ""
    }
  ]
}

Ustvarimo uporabnika user1 s geslom test12345.

minio-mc admin user add myminio user1 test12345

Ustvarjamo uporabnika user2 s geslom test54321.

minio-mc admin user add myminio user2 test54321

Ustvarjamo politiko v Minio z imenom user1-policy iz datoteke user1-policy.json.

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

Ustvarjamo politiko v Minio z imenom user2-policy iz datoteke user2-policy.json.

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

Uporabljamo politiko user1-policy za uporabnika user1.

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

Uporabljamo politiko user2-policy za uporabnika user2.

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

Preverjamo povezavo politik z uporabniki

minio-mc admin user list myminio

Preverjanje povezave politik z uporabniki bo približno takšno

enabled    user1                 user1-policy
enabled    user2                 user2-policy

Za preglednost gremo preko brskalnika na naslov http://ip-strežnika-kjer-je-zagnan-minio:9000/minio/

Vidimo, da smo se povezali na Minio z MINIO_ACCESS_KEY=user1. Našemu uporabniku je dostopen bucket user1bucket.

Podešavanje Minio-a da korisnik može raditi samo sa svojim bucket-om

Ustvarjanje bucketa ne bo mogoče, saj v politiki ni ustreznega Action-a.

Podešavanje Minio-a da korisnik može raditi samo sa svojim bucket-om

Ustvarili bomo datoteko v bucketu user1bucket.

Podešavanje Minio-a da korisnik može raditi samo sa svojim bucket-om

Povezali se bomo na Minio z MINIO_ACCESS_KEY=user2. Našemu uporabniku je dostopen bucket user2bucket.

In ne vidimo niti user1bucket niti datotek iz user1bucket.

Podešavanje Minio-a da korisnik može raditi samo sa svojim bucket-om

Ustvaril sem Telegram klepet o Minio https://t.me/minio_s3_ru

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster