แž€แŸ†แžŽแžแŸ‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’ Minio แžŠแžผแž…แŸ’แž“แŸแŸ‡แžขแŸ’แž“แž€แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แžขแžถแž…แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž”แžถแž“แžแŸ‚แž‡แžถแž˜แžฝแž™แž’แžปแž„แž‘แžนแž€แžšแž”แžŸแŸ‹แž‚แžถแžแŸ‹แž”แŸ‰แžปแžŽแŸ’แžŽแŸ„แŸ‡แŸ”

Minio แž‚แžบแž‡แžถแž€แž“แŸ’แž›แŸ‚แž„แž•แŸ’แž‘แžปแž€แžœแžแŸ’แžแžปแžŠแŸ‚แž›แž†แž”แž‚แŸ’แž“แžถแž‡แžถแž˜แžฝแž™ AWS S3 แžŠแŸแžŸแžถแž˜แž‰แŸ’แž‰ แž›แžฟแž“แŸ” Minio แžแŸ’แžšแžผแžœโ€‹แž”แžถแž“โ€‹แžšแž…แž“แžถโ€‹แžกแžพแž„โ€‹แžŠแžพแž˜แŸ’แž”แžธโ€‹แž”แž„แŸ’แž แŸ„แŸ‡โ€‹แž‘แžทแž“แŸ’แž“แž“แŸแž™โ€‹แžŠแŸ‚แž›โ€‹แž˜แžทแž“โ€‹แž˜แžถแž“โ€‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’โ€‹แžŠแžผแž…โ€‹แž‡แžถโ€‹แžšแžผแž”แžแž แžœแžธแžŠแŸแžขแžผ แžฏแž€แžŸแžถแžšโ€‹แž€แŸ†แžŽแžแŸ‹โ€‹แž แŸแžแžป แž€แžถแžšโ€‹แž”แž˜แŸ’แžšแžปแž„โ€‹แž‘แžปแž€แŸ” minio แž€แŸแž‚แžถแŸ†แž‘แŸ’แžšแžšแž”แŸ€แž”แž…แŸ‚แž€แž…แžถแž™แž•แž„แžŠแŸ‚แžš แžŠแŸ‚แž›แž•แŸ’แžแž›แŸ‹แž“แžผแžœแžŸแž˜แžแŸ’แžแž—แžถแž–แž€แŸ’แž“แžปแž„แž€แžถแžšแž—แŸ’แž‡แžถแž”แŸ‹แžแžถแžŸแž…แŸ’แžšแžพแž“แž‘แŸ…แž˜แŸ‰แžถแžŸแŸŠแžธแž“แž˜แŸแž•แŸ’แž‘แžปแž€แžœแžแŸ’แžแžปแž˜แžฝแž™ แžšแžฝแž˜แž‘แžถแŸ†แž„แžงแž”แž€แžšแžŽแŸแžŠแŸ‚แž›แž˜แžถแž“แž‘แžธแžแžถแŸ†แž„แž“แŸ…แž›แžพแž˜แŸ‰แžถแžŸแŸŠแžธแž“แž•แŸ’แžŸแŸแž„แŸ—แž‚แŸ’แž“แžถแŸ”

แž‚แŸ„แž›แž”แŸ†แžŽแž„แž“แŸƒแž€แžถแžšแž”แž„แŸ’แž แŸ„แŸ‡แž“แŸแŸ‡แž‚แžบแžŠแžพแž˜แŸ’แž”แžธแž€แŸ†แžŽแžแŸ‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’ minio แžŠแžผแž…แŸ’แž“แŸแŸ‡แžขแŸ’แž“แž€แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แž˜แŸ’แž“แžถแž€แŸ‹แŸ—แžขแžถแž…แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž”แžถแž“แžแŸ‚แž‡แžถแž˜แžฝแž™แž’แžปแž„แž‘แžนแž€แž•แŸ’แž‘แžถแž›แŸ‹แžแŸ’แž›แžฝแž“แžšแž”แžŸแŸ‹แž‚แžถแžแŸ‹แŸ”

แž‡แžถแž‘แžผแž‘แŸ… Minio แž‚แžบแžŸแž˜แžšแž˜แŸ’แž™แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžšแžŽแžธแžแžถแž„แž€แŸ’แžšแŸ„แž˜แŸ–

  • แž€แžถแžšแž•แŸ’แž‘แžปแž€แž˜แžทแž“แž…แž˜แŸ’แž›แž„แž“แŸ…แž›แžพแž€แŸ†แž–แžผแž›แž“แŸƒแž”แŸ’แžšแž–แŸแž“แŸ’แž’แžฏแž€แžŸแžถแžšแžŠแŸ‚แž›แžขแžถแž…แž‘แžปแž€แž…แžทแžแŸ’แžแž”แžถแž“แž‡แžถแž˜แžฝแž™แž“แžนแž„แž€แžถแžšแž…แžผแž›แž”แŸ’แžšแžพแžแžถแž˜แžšแž™แŸˆ S3 (แž‘แŸ†แž แŸ†แž•แŸ’แž‘แžปแž€แžแžผแž… แž“แžทแž„แž˜แž’แŸ’แž™แž˜แž”แž„แŸ’แž แŸ„แŸ‡แž“แŸ…แž›แžพ NAS แž“แžทแž„ SAN);
  • แž€แžถแžšแž•แŸ’แž‘แžปแž€แž˜แžทแž“แž…แž˜แŸ’แž›แž„แž“แŸ…แž›แžพแž€แŸ†แž–แžผแž›แž“แŸƒแž”แŸ’แžšแž–แŸแž“แŸ’แž’แžฏแž€แžŸแžถแžšแžŠแŸ‚แž›แž˜แžทแž“แž‚แžฝแžšแžฑแŸ’แž™แž‘แžปแž€แž…แžทแžแŸ’แžแž‡แžถแž˜แžฝแž™แž“แžนแž„แž€แžถแžšแž…แžผแž›แž”แŸ’แžšแžพ S3 (แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแžขแž—แžทแžœแžŒแŸ’แžแž“แŸแž“แžทแž„แž€แžถแžšแž’แŸ’แžœแžพแžแŸแžŸแŸ’แž);
  • แž€แžถแžšแž•แŸ’แž‘แžปแž€แž‡แžถแž˜แžฝแž™แž“แžนแž„แž€แžถแžšแž…แž˜แŸ’แž›แž„แž“แŸ…แž›แžพแž€แŸ’แžšแžปแž˜แžแžผแž…แž˜แžฝแž™แž“แŸƒแž˜แŸ‰แžถแžŸแŸŠแžธแž“แž˜แŸแž“แŸ…แž€แŸ’แž“แžปแž„ rack แž˜แžฝแž™แž‡แžถแž˜แžฝแž™แž“แžนแž„แž€แžถแžšแž…แžผแž›แžŠแŸ†แžŽแžพแžšแž€แžถแžšแžแžถแž˜แžšแž™แŸˆแž–แžทแž’แžธแž€แžถแžš S3 (แž€แžถแžšแž•แŸ’แž‘แžปแž€แž”แžšแžถแž‡แŸแž™แž‡แžถแž˜แžฝแž™แž“แžนแž„แžŠแŸ‚แž“แž”แžšแžถแž‡แŸแž™แžŸแŸ’แž˜แžพแž“แžนแž„ rack) แŸ”

แž“แŸ…แž›แžพแž”แŸ’แžšแž–แŸแž“แŸ’แž’ RedHat แž™แžพแž„แž—แŸ’แž‡แžถแž”แŸ‹แžƒแŸ’แž›แžถแŸ†แž„ Minio แž€แŸ’แžšแŸ…แž•แŸ’แž›แžผแžœแž€แžถแžšแŸ”

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

แž”แž„แŸ’แž€แžพแž แž“แžทแž„แž”แž“แŸ’แžแŸ‚แž˜แž‘แŸ… MINIO_ACCESS_KEY แž“แžทแž„ MINIO_SECRET_KEY แž€แŸ’แž“แžปแž„ /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=

แž”แŸ’แžšแžŸแžทแž“แž”แžพแžขแŸ’แž“แž€แž“แžนแž„แž˜แžทแž“แž”แŸ’แžšแžพ nginx แž˜แžปแž“แž–แŸแž› Minio แž‘แŸแž“แŸ„แŸ‡แžขแŸ’แž“แž€แžแŸ’แžšแžผแžœแž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžšแŸ”

--address 127.0.0.1:9000

แž“แŸ…แž›แžพ

--address 0.0.0.0:9000

แžแŸ„แŸ‡แž…แžถแž”แŸ‹แž•แŸ’แžแžพแž˜ Minio แŸ”

systemctl start minio

แž™แžพแž„แž”แž„แŸ’แž€แžพแžแž€แžถแžšแžแž—แŸ’แž‡แžถแž”แŸ‹แž‘แŸ… Minio แžŠแŸ‚แž›แž แŸ…แžแžถ myminio แŸ”

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

แž”แž„แŸ’แž€แžพแž bucket user1bucket แŸ”

minio-mc mb myminio/user1bucket

แž”แž„แŸ’แž€แžพแž bucket user2bucket แŸ”

minio-mc mb myminio/user2bucket

แž”แž„แŸ’แž€แžพแžแžฏแž€แžŸแžถแžšแž‚แŸ„แž›แž€แžถแžšแžŽแŸ 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": ""
    }
  ]
}

แž”แž„แŸ’แž€แžพแžแžฏแž€แžŸแžถแžšแž‚แŸ„แž›แž€แžถแžšแžŽแŸ 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": ""
    }
  ]
}

แž”แž„แŸ’แž€แžพแž user user1 แž‡แžถแž˜แžฝแž™ password test12345แŸ”

minio-mc admin user add myminio user1 test12345

แž”แž„แŸ’แž€แžพแž user user2 แž‡แžถแž˜แžฝแž™ password test54321แŸ”

minio-mc admin user add myminio user2 test54321

แž™แžพแž„แž”แž„แŸ’แž€แžพแžแž‚แŸ„แž›แž€แžถแžšแžŽแŸแž˜แžฝแž™แž“แŸ…แž€แŸ’แž“แžปแž„ Minio แžŠแŸ‚แž›แž แŸ…แžแžถ user1-policy แž–แžธแžฏแž€แžŸแžถแžš user1-policy.json แŸ”

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

แž™แžพแž„แž”แž„แŸ’แž€แžพแžแž‚แŸ„แž›แž€แžถแžšแžŽแŸแž˜แžฝแž™แž“แŸ…แž€แŸ’แž“แžปแž„ Minio แžŠแŸ‚แž›แž แŸ…แžแžถ user2-policy แž–แžธแžฏแž€แžŸแžถแžš user2-policy.json แŸ”

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

แžขแž“แžปแžœแžแŸ’แžแž‚แŸ„แž›แž€แžถแžšแžŽแŸ user1-policy แž‘แŸ…แžขแŸ’แž“แž€แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹ user1.

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

แžขแž“แžปแžœแžแŸ’แžแž‚แŸ„แž›แž€แžถแžšแžŽแŸ user2-policy แž‘แŸ…แžขแŸ’แž“แž€แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹ user2.

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

แž€แŸ†แž–แžปแž„แž–แžทแž“แžทแžแŸ’แž™แž˜แžพแž›แž€แžถแžšแžแž—แŸ’แž‡แžถแž”แŸ‹แž“แŸƒแž‚แŸ„แž›แž€แžถแžšแžŽแŸแž‘แŸ…แžขแŸ’แž“แž€แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹

minio-mc admin user list myminio

แž€แžถแžšแž–แžทแž“แžทแžแŸ’แž™แž˜แžพแž›แž€แžถแžšแž—แŸ’แž‡แžถแž”แŸ‹แž‚แŸ„แž›แž€แžถแžšแžŽแŸแž‘แŸ…แžขแŸ’แž“แž€แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แž“แžนแž„แž˜แžพแž›แž‘แŸ…แžŠแžผแž…แž“แŸแŸ‡

enabled    user1                 user1-policy
enabled    user2                 user2-policy

แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž—แžถแž–แž…แŸ’แž”แžถแžŸแŸ‹แž›แžถแžŸแŸ‹ แžŸแžผแž˜แž…แžผแž›แž‘แŸ…แž€แžถแž“แŸ‹ browser แž‘แŸ…แž€แžถแž“แŸ‹แžขแžถแžŸแž™แžŠแŸ’แž‹แžถแž“ http://ip-ัะตั€ะฒะตั€ะฐ-ะณะดะต-ะทะฐะฟัƒั‰ะตะฝ-minio:9000/minio/

แž™แžพแž„แžƒแžพแž‰แžแžถแž™แžพแž„แž”แžถแž“แž—แŸ’แž‡แžถแž”แŸ‹แž‘แŸ… Minio แž€แŸ’แžšแŸ„แž˜ MINIO_ACCESS_KEY=user1แŸ” แž’แžปแž„แž‘แžนแž€ user1bucket แž˜แžถแž“แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž–แžฝแž€แž™แžพแž„แŸ”

แž€แŸ†แžŽแžแŸ‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’ Minio แžŠแžผแž…แŸ’แž“แŸแŸ‡แžขแŸ’แž“แž€แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แžขแžถแž…แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž”แžถแž“แžแŸ‚แž‡แžถแž˜แžฝแž™แž’แžปแž„แž‘แžนแž€แžšแž”แžŸแŸ‹แž‚แžถแžแŸ‹แž”แŸ‰แžปแžŽแŸ’แžŽแŸ„แŸ‡แŸ”

แžœแžถแž“แžนแž„แž˜แžทแž“แžขแžถแž…แž”แž„แŸ’แž€แžพแžแž’แžปแž„แž”แžถแž“แž‘แŸ แž–แŸ’แžšแŸ„แŸ‡แž˜แžทแž“แž˜แžถแž“แžŸแž€แž˜แŸ’แž˜แž—แžถแž–แžŠแŸ‚แž›แžแŸ’แžšแžผแžœแž‚แŸ’แž“แžถแž“แŸ…แž€แŸ’แž“แžปแž„แž‚แŸ„แž›แž€แžถแžšแžŽแŸแŸ”

แž€แŸ†แžŽแžแŸ‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’ Minio แžŠแžผแž…แŸ’แž“แŸแŸ‡แžขแŸ’แž“แž€แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แžขแžถแž…แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž”แžถแž“แžแŸ‚แž‡แžถแž˜แžฝแž™แž’แžปแž„แž‘แžนแž€แžšแž”แžŸแŸ‹แž‚แžถแžแŸ‹แž”แŸ‰แžปแžŽแŸ’แžŽแŸ„แŸ‡แŸ”

แžแŸ„แŸ‡แž”แž„แŸ’แž€แžพแžแžฏแž€แžŸแžถแžšแž˜แžฝแž™แž€แŸ’แž“แžปแž„ bucket user1bucketแŸ”

แž€แŸ†แžŽแžแŸ‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’ Minio แžŠแžผแž…แŸ’แž“แŸแŸ‡แžขแŸ’แž“แž€แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แžขแžถแž…แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž”แžถแž“แžแŸ‚แž‡แžถแž˜แžฝแž™แž’แžปแž„แž‘แžนแž€แžšแž”แžŸแŸ‹แž‚แžถแžแŸ‹แž”แŸ‰แžปแžŽแŸ’แžŽแŸ„แŸ‡แŸ”

แžแŸ„แŸ‡แž—แŸ’แž‡แžถแž”แŸ‹แž‘แŸ… Minio แž€แŸ’แžšแŸ„แž˜ MINIO_ACCESS_KEY=user2แŸ” แž’แžปแž„แž‘แžนแž€ user2bucket แž˜แžถแž“แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž–แžฝแž€แž™แžพแž„แŸ”

แž แžพแž™แž™แžพแž„แž˜แžทแž“แžƒแžพแž‰ user1bucket แžฌแžฏแž€แžŸแžถแžšแž–แžธ user1bucket แž‘แŸแŸ”

แž€แŸ†แžŽแžแŸ‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’ Minio แžŠแžผแž…แŸ’แž“แŸแŸ‡แžขแŸ’แž“แž€แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แžขแžถแž…แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž”แžถแž“แžแŸ‚แž‡แžถแž˜แžฝแž™แž’แžปแž„แž‘แžนแž€แžšแž”แžŸแŸ‹แž‚แžถแžแŸ‹แž”แŸ‰แžปแžŽแŸ’แžŽแŸ„แŸ‡แŸ”

แž”แžถแž“แž”แž„แŸ’แž€แžพแžแž€แžถแžšแž‡แž‡แŸ‚แž€แžแžถแž˜ Telegram แžŠแŸ„แž™แž”แŸ’แžšแžพ Minio https://t.me/minio_s3_ru

แž”แŸ’แžšแž—แž–: www.habr.com