Minio'yu kullanıcının yalnızca kendi kovasıyla çalışabileceği şekilde ayarlama

Minio basit, hızlı, AWS S3 uyumlu bir nesne deposudur. Minio, fotoğraf, video, günlük dosyaları, yedeklemeler gibi yapılandırılmamış verileri barındırmak için tasarlanmıştır. minio ayrıca, farklı makinelerde bulunanlar da dahil olmak üzere birden fazla diski tek bir nesne depolama sunucusuna bağlama olanağı sağlayan dağıtılmış modu da destekler.

Bu yazının amacı minio'yu her kullanıcının yalnızca kendi kovasıyla çalışabileceği şekilde yapılandırmaktır.

Genel olarak Minio aşağıdaki durumlar için uygundur:

  • S3 (NAS ve SAN'da barındırılan küçük ve orta ölçekli depolama) aracılığıyla erişime sahip güvenilir bir dosya sisteminin üzerinde çoğaltılmayan depolama;
  • S3 erişimine sahip, güvenilir olmayan bir dosya sisteminin üzerinde kopyalanmayan depolama (geliştirme ve test için);
  • S3 protokolü aracılığıyla erişime sahip tek bir raftaki küçük bir sunucu grubunda çoğaltma ile depolama (rafa eşit bir arıza etki alanına sahip yük devretme depolaması).

RedHat sistemlerinde resmi olmayan Minio deposunu bağlarız.

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

/etc/minio/minio.conf dosyasında MINIO_ACCESS_KEY ve MINIO_SECRET_KEY'i oluşturun ve ekleyin.

# 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ğer Minio'dan önce nginx kullanmayacaksanız değiştirmeniz gerekiyor.

--address 127.0.0.1:9000

üzerinde

--address 0.0.0.0:9000

Minio'yu başlatalım.

systemctl start minio

Minio ile myminio adında bir bağlantı oluşturuyoruz.

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

Bir paket user1bucket oluşturun.

minio-mc mb myminio/user1bucket

Bir paket user2bucket oluşturun.

minio-mc mb myminio/user2bucket

Bir politika dosyası user1-policy.json oluşturun.

{
  "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": ""
    }
  ]
}

Bir politika dosyası user2-policy.json oluşturun.

{
  "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": ""
    }
  ]
}

Test1 parolasıyla bir kullanıcı12345 kullanıcısı oluşturun.

minio-mc admin user add myminio user1 test12345

Test2 parolasıyla bir kullanıcı54321 kullanıcısı oluşturun.

minio-mc admin user add myminio user2 test54321

Minio'da user1-policy.json dosyasından user1-policy adında bir politika oluşturuyoruz.

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

Minio'da user2-policy.json dosyasından user2-policy adında bir politika oluşturuyoruz.

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

Kullanıcı1 politikası ilkesini kullanıcı1 kullanıcısına uygulayın.

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

Kullanıcı2 politikası ilkesini kullanıcı2 kullanıcısına uygulayın.

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

Politikaların kullanıcılarla bağlantısını kontrol etme

minio-mc admin user list myminio

Politikaların kullanıcılarla bağlantısının kontrol edilmesi şuna benzer:

enabled    user1                 user1-policy
enabled    user2                 user2-policy

Netlik sağlamak için tarayıcıdan adrese gidin http://ip-сервера-где-запущен-minio:9000/minio/

MINIO_ACCESS_KEY=user1 altında Minio'ya bağlandığımızı görüyoruz. user1bucket kovası bizim için kullanılabilir.

Minio'yu kullanıcının yalnızca kendi kovasıyla çalışabileceği şekilde ayarlama

Politikada buna karşılık gelen bir Eylem bulunmadığından paket oluşturmak mümkün olmayacaktır.

Minio'yu kullanıcının yalnızca kendi kovasıyla çalışabileceği şekilde ayarlama

user1bucket paketinde bir dosya oluşturalım.

Minio'yu kullanıcının yalnızca kendi kovasıyla çalışabileceği şekilde ayarlama

MINIO_ACCESS_KEY=user2 altında Minio'ya bağlanalım. user2bucket kovası bizim için mevcuttur.

Ve user1bucket'i veya user1bucket'teki dosyaları görmüyoruz.

Minio'yu kullanıcının yalnızca kendi kovasıyla çalışabileceği şekilde ayarlama

Minio kullanarak bir Telegram sohbeti oluşturuldu https://t.me/minio_s3_ru

Kaynak: habr.com