Stel Minio in zodat de gebruiker alleen met zijn eigen bucket kan werken

Minio is een eenvoudige, snelle en AWS S3-compatibele objectopslag. Minio is ontworpen voor het hosten van ongestructureerde gegevens zoals foto's, video's, logbestanden en back-ups. In Minio is ook een gedistribueerde modus beschikbaar, die de mogelijkheid biedt om meerdere schijven aan ƩƩn objectopslagserver te koppelen, zelfs als deze op verschillende machines zijn geplaatst.

Het doel van deze post is om Minio in te stellen zodat elke gebruiker alleen met zijn eigen bucket kan werken.

Over het algemeen is Minio geschikt voor de volgende gebruiksgevallen:

  • opslag zonder replicatie bovenop een betrouwbare bestandssysteem met toegang via S3 (kleine en middelgrote opslag, gehost op NAS en SAN);
  • opslag zonder replicatie bovenop een onbetrouwbaar bestandssysteem met toegang via S3 (voor ontwikkeling en testen);
  • opslag met replicatie op een kleine groep servers in ƩƩn rek met toegang via het S3-protocol (faalbestendige opslag met een faalgebied gelijk aan de rek).

Op RedHat-systemen activeren we de onofficiƫle Minio-repository.

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

Genereer en voeg de MINIO_ACCESS_KEY en MINIO_SECRET_KEY toe aan /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=

Als je nginx niet voor Minio gaat gebruiken, moet je dit aanpassen.

--address 127.0.0.1:9000

en een werkende opdracht krijgen.

--address 0.0.0.0:9000

Start Minio.

systemctl start minio

Maak een verbinding met Minio genaamd myminio.

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

Maak de bucket user1bucket aan.

minio-mc mb myminio/user1bucket

Maak de bucket user2bucket aan.

minio-mc mb myminio/user2bucket

Maak het beleid bestand user1-policy.json aan.

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

Maak het beleid bestand user2-policy.json aan.

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

We create user user1 with password test12345.

minio-mc admin user add myminio user1 test12345

We create user user2 with password test54321.

minio-mc admin user add myminio user2 test54321

We create a policy in Minio called user1-policy from the file user1-policy.json.

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

We create a policy in Minio called user2-policy from the file user2-policy.json.

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

We apply the policy user1-policy to user user1.

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

We apply the policy user2-policy to user user2.

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

We check the connection of policies to users

minio-mc admin user list myminio

The check of policy connections to users will look something like this

enabled    user1                 user1-policy
enabled    user2                 user2-policy

For clarity, we access through the browser at the address http://ip-server-where-minio-is-running:9000/minio/

We see that we are connected to Minio under MINIO_ACCESS_KEY=user1. The bucket user1bucket is available to us.

Stel Minio in zodat de gebruiker alleen met zijn eigen bucket kan werken

Creating a bucket will not be possible, as there is no corresponding Action in the policy.

Stel Minio in zodat de gebruiker alleen met zijn eigen bucket kan werken

We will create a file in bucket user1bucket.

Stel Minio in zodat de gebruiker alleen met zijn eigen bucket kan werken

We will connect to Minio under MINIO_ACCESS_KEY=user2. The bucket user2bucket is available to us.

And we do not see either user1bucket or files from user1bucket.

Stel Minio in zodat de gebruiker alleen met zijn eigen bucket kan werken

I created a Telegram chat about Minio https://t.me/minio_s3_ru

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster