Menyiapkan Minio sehingga pengguna hanya dapat bekerja dengan bucketnya sendiri

Minio adalah penyimpanan objek yang sederhana, cepat, dan kompatibel dengan AWS S3. Minio dirancang untuk menampung data tidak terstruktur seperti foto, video, file log, cadangan. minio juga mendukung mode terdistribusi, yang menyediakan kemampuan untuk menghubungkan beberapa disk ke satu server penyimpanan objek, termasuk yang terletak di mesin berbeda.

Tujuan dari postingan ini adalah untuk mengonfigurasi minio sehingga setiap pengguna hanya dapat bekerja dengan bucketnya sendiri.

Secara umum, Minio cocok untuk kasus berikut:

  • penyimpanan non-replikasi di atas sistem file yang andal dengan akses melalui S3 (penyimpanan kecil dan menengah yang dihosting di NAS dan SAN);
  • penyimpanan yang tidak direplikasi di atas sistem file yang tidak dapat diandalkan dengan akses S3 (untuk pengembangan dan pengujian);
  • penyimpanan dengan replikasi pada sekelompok kecil server dalam satu rak dengan akses melalui protokol S3 (penyimpanan failover dengan domain kegagalan yang sama dengan rak).

Pada sistem RedHat kami menghubungkan repositori Minio tidak resmi.

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

Hasilkan dan tambahkan ke MINIO_ACCESS_KEY dan MINIO_SECRET_KEY di /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=

Jika Anda tidak akan menggunakan nginx sebelum Minio, maka Anda perlu mengubahnya.

--address 127.0.0.1:9000

pada

--address 0.0.0.0:9000

Ayo luncurkan Minio.

systemctl start minio

Kami membuat koneksi ke Minio yang disebut myminio.

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

Buat ember user1bucket.

minio-mc mb myminio/user1bucket

Buat ember user2bucket.

minio-mc mb myminio/user2bucket

Buat file kebijakan 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": ""
    }
  ]
}

Buat file kebijakan 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": ""
    }
  ]
}

Buat pengguna user1 dengan kata sandi test12345.

minio-mc admin user add myminio user1 test12345

Buat pengguna user2 dengan kata sandi test54321.

minio-mc admin user add myminio user2 test54321

Kami membuat kebijakan di Minio yang disebut kebijakan pengguna1 dari file pengguna1-kebijakan.json.

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

Kami membuat kebijakan di Minio yang disebut kebijakan pengguna2 dari file pengguna2-kebijakan.json.

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

Terapkan kebijakan kebijakan pengguna1 ke pengguna1.

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

Terapkan kebijakan kebijakan pengguna2 ke pengguna2.

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

Memeriksa koneksi kebijakan ke pengguna

minio-mc admin user list myminio

Memeriksa koneksi kebijakan ke pengguna akan terlihat seperti ini

enabled    user1                 user1-policy
enabled    user2                 user2-policy

Untuk lebih jelasnya, buka browser ke alamat tersebut http://ip-сСрвСра-Π³Π΄Π΅-Π·Π°ΠΏΡƒΡ‰Π΅Π½-minio:9000/minio/

Kami melihat bahwa kami terhubung ke Minio di bawah MINIO_ACCESS_KEY=user1. Bucket user1bucket tersedia untuk kami.

Menyiapkan Minio sehingga pengguna hanya dapat bekerja dengan bucketnya sendiri

Tidak mungkin membuat keranjang karena tidak ada Tindakan yang sesuai dalam kebijakan.

Menyiapkan Minio sehingga pengguna hanya dapat bekerja dengan bucketnya sendiri

Mari buat file di bucket user1bucket.

Menyiapkan Minio sehingga pengguna hanya dapat bekerja dengan bucketnya sendiri

Mari terhubung ke Minio di bawah MINIO_ACCESS_KEY=user2. Bucket user2bucket tersedia untuk kami.

Dan kami tidak melihat user1bucket atau file dari user1bucket.

Menyiapkan Minio sehingga pengguna hanya dapat bekerja dengan bucketnya sendiri

Membuat obrolan Telegram menggunakan Minio https://t.me/minio_s3_ru

Sumber: www.habr.com