Postavljanje Minia tako da korisnik može raditi samo sa svojom vlastitom kantom

Minio je jednostavna, brza, AWS S3 kompatibilna trgovina objektima. Minio je dizajniran za smještaj nestrukturiranih podataka kao što su fotografije, video zapisi, log datoteke, sigurnosne kopije. minio također podržava distribuirani način rada, koji pruža mogućnost povezivanja više diskova na jedan poslužitelj za pohranu objekata, uključujući one koji se nalaze na različitim strojevima.

Svrha ovog posta je konfigurirati minio tako da svaki korisnik može raditi samo sa svojom kantom.

Općenito, Minio je prikladan za sljedeće slučajeve:

  • pohrana bez replikacije povrh pouzdanog datotečnog sustava s pristupom putem S3 (mala i srednja pohrana smještena na NAS i SAN);
  • nereplicirana pohrana na vrhu nepouzdanog datotečnog sustava sa S3 pristupom (za razvoj i testiranje);
  • pohrana s replikacijom na maloj grupi poslužitelja u jednom rack-u s pristupom preko S3 protokola (failover storage with a failure domain equal to rack).

Na RedHat sustavima povezujemo neslužbeni Minio repozitorij.

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

Generirajte i dodajte u MINIO_ACCESS_KEY i MINIO_SECRET_KEY u /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=

Ako nećete koristiti nginx prije Minia, onda morate promijeniti.

--address 127.0.0.1:9000

na

--address 0.0.0.0:9000

Pokrenimo Minio.

systemctl start minio

Stvaramo vezu s Miniom pod nazivom myminio.

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

Stvorite kantu user1bucket.

minio-mc mb myminio/user1bucket

Stvorite kantu user2bucket.

minio-mc mb myminio/user2bucket

Stvorite datoteku pravila 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": ""
    }
  ]
}

Stvorite datoteku pravila 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": ""
    }
  ]
}

Stvorite korisnika user1 s lozinkom test12345.

minio-mc admin user add myminio user1 test12345

Stvorite korisnika user2 s lozinkom test54321.

minio-mc admin user add myminio user2 test54321

Pravilo u Miniju stvaramo pod nazivom user1-policy iz datoteke user1-policy.json.

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

Pravilo u Miniju stvaramo pod nazivom user2-policy iz datoteke user2-policy.json.

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

Primijenite politiku user1-policy na korisnika user1.

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

Primijenite politiku user2-policy na korisnika user2.

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

Provjera povezanosti politika s korisnicima

minio-mc admin user list myminio

Provjera povezanosti pravila s korisnicima izgledat će otprilike ovako

enabled    user1                 user1-policy
enabled    user2                 user2-policy

Radi jasnoće, idite kroz preglednik na adresu http://ip-сервера-где-запущен-minio:9000/minio/

Vidimo da smo se povezali s Miniom pod MINIO_ACCESS_KEY=user1. Kanta user1bucket dostupna nam je.

Postavljanje Minia tako da korisnik može raditi samo sa svojom vlastitom kantom

Neće biti moguće stvoriti kantu jer ne postoji odgovarajuća radnja u politici.

Postavljanje Minia tako da korisnik može raditi samo sa svojom vlastitom kantom

Kreirajmo datoteku u spremniku user1bucket.

Postavljanje Minia tako da korisnik može raditi samo sa svojom vlastitom kantom

Povežimo se na Minio pod MINIO_ACCESS_KEY=user2. Kanta user2bucket dostupna nam je.

I ne vidimo ni user1bucket ni datoteke iz user1bucket.

Postavljanje Minia tako da korisnik može raditi samo sa svojom vlastitom kantom

Kreirao je Telegram chat koristeći Minio https://t.me/minio_s3_ru

Izvor: www.habr.com