Pagse-set up ng Minio upang ang user ay makapagtrabaho lamang gamit ang kanyang sariling bucket

Ang Minio ay isang simple, mabilis, AWS S3 compatible object store. Idinisenyo ang Minio upang mag-host ng hindi nakaayos na data tulad ng mga larawan, video, log file, backup. Sinusuportahan din ng minio ang distributed mode, na nagbibigay ng kakayahang magkonekta ng maramihang mga disk sa isang server ng imbakan ng bagay, kabilang ang mga matatagpuan sa iba't ibang mga makina.

Ang layunin ng post na ito ay upang i-configure ang minio upang ang bawat user ay maaaring gumana lamang sa kanyang sariling bucket.

Sa pangkalahatan, ang Minio ay angkop para sa mga sumusunod na kaso:

  • non-replication storage sa ibabaw ng isang maaasahang file system na may access sa pamamagitan ng S3 (maliit at katamtamang storage na naka-host sa NAS at SAN);
  • hindi na-replicated na imbakan sa itaas ng isang hindi mapagkakatiwalaang file system na may S3 access (para sa pagbuo at pagsubok);
  • storage na may replication sa isang maliit na grupo ng mga server sa isang rack na may access sa pamamagitan ng S3 protocol (failover storage na may failure domain na katumbas ng rack).

Sa mga sistema ng RedHat ikinonekta namin ang hindi opisyal na imbakan ng Minio.

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

Bumuo at magdagdag sa MINIO_ACCESS_KEY at MINIO_SECRET_KEY sa /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=

Kung hindi ka gagamit ng nginx bago ang Minio, kailangan mong baguhin.

--address 127.0.0.1:9000

sa

--address 0.0.0.0:9000

Ilunsad natin ang Minio.

systemctl start minio

Lumilikha kami ng koneksyon sa Minio na tinatawag na myminio.

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

Gumawa ng bucket user1bucket.

minio-mc mb myminio/user1bucket

Gumawa ng bucket user2bucket.

minio-mc mb myminio/user2bucket

Gumawa ng policy file 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": ""
    }
  ]
}

Gumawa ng policy file 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": ""
    }
  ]
}

Lumikha ng user user1 gamit ang password test12345.

minio-mc admin user add myminio user1 test12345

Lumikha ng user user2 gamit ang password test54321.

minio-mc admin user add myminio user2 test54321

Gumagawa kami ng patakaran sa Minio na tinatawag na user1-policy mula sa file na user1-policy.json.

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

Gumagawa kami ng patakaran sa Minio na tinatawag na user2-policy mula sa file na user2-policy.json.

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

Ilapat ang patakaran ng user1-policy sa user user1.

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

Ilapat ang patakaran ng user2-policy sa user user2.

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

Sinusuri ang koneksyon ng mga patakaran sa mga user

minio-mc admin user list myminio

Magiging ganito ang hitsura ng pagsuri sa koneksyon ng mga patakaran sa mga user

enabled    user1                 user1-policy
enabled    user2                 user2-policy

Para sa kalinawan, dumaan sa browser patungo sa address http://ip-сСрвСра-Π³Π΄Π΅-Π·Π°ΠΏΡƒΡ‰Π΅Π½-minio:9000/minio/

Nakita namin na nakakonekta kami sa Minio sa ilalim ng MINIO_ACCESS_KEY=user1. Available sa amin ang user1bucket bucket.

Pagse-set up ng Minio upang ang user ay makapagtrabaho lamang gamit ang kanyang sariling bucket

Hindi posibleng gumawa ng bucket, dahil walang kaukulang Aksyon sa patakaran.

Pagse-set up ng Minio upang ang user ay makapagtrabaho lamang gamit ang kanyang sariling bucket

Gumawa tayo ng file sa bucket user1bucket.

Pagse-set up ng Minio upang ang user ay makapagtrabaho lamang gamit ang kanyang sariling bucket

Kumonekta tayo sa Minio sa ilalim ng MINIO_ACCESS_KEY=user2. Available sa amin ang user2bucket bucket.

At wala kaming nakikitang user1bucket o mga file mula sa user1bucket.

Pagse-set up ng Minio upang ang user ay makapagtrabaho lamang gamit ang kanyang sariling bucket

Gumawa ng Telegram chat gamit ang Minio https://t.me/minio_s3_ru

Pinagmulan: www.habr.com