Minio zo instellen dat de gebruiker alleen met zijn eigen emmer kan werken

Minio is een eenvoudige, snelle, AWS S3-compatibele objectwinkel. Minio is ontworpen om ongestructureerde gegevens te hosten, zoals foto's, video's, logbestanden en back-ups. minio ondersteunt ook de gedistribueerde modus, die de mogelijkheid biedt om meerdere schijven aan te sluiten op één objectopslagserver, inclusief schijven die zich op verschillende machines bevinden.

Het doel van dit bericht is om minio zo te configureren dat elke gebruiker alleen met zijn eigen bucket kan werken.

Over het algemeen is Minio geschikt voor de volgende gevallen:

  • niet-replicatieopslag bovenop een betrouwbaar bestandssysteem met toegang via S3 (kleine en middelgrote opslag gehost op NAS en SAN);
  • niet-gerepliceerde opslag bovenop een onbetrouwbaar bestandssysteem met S3-toegang (voor ontwikkeling en testen);
  • opslag met replicatie op een kleine groep servers in één rack met toegang via het S3-protocol (failover-opslag met een storingsdomein gelijk aan het rack).

Op RedHat-systemen verbinden 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 MINIO_ACCESS_KEY en MINIO_SECRET_KEY toe in /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 u nginx niet vóór Minio gaat gebruiken, moet u dit wijzigen.

--address 127.0.0.1:9000

op

--address 0.0.0.0:9000

Laten we Minio lanceren.

systemctl start minio

We maken een verbinding met Minio genaamd myminio.

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

Maak een bucket user1bucket.

minio-mc mb myminio/user1bucket

Maak een bucket user2bucket.

minio-mc mb myminio/user2bucket

Maak een beleidsbestand 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": ""
    }
  ]
}

Maak een beleidsbestand 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": ""
    }
  ]
}

Maak een gebruiker user1 aan met het wachtwoord test12345.

minio-mc admin user add myminio user1 test12345

Maak een gebruiker user2 aan met het wachtwoord test54321.

minio-mc admin user add myminio user2 test54321

We maken een beleid in Minio met de naam user1-policy uit het bestand user1-policy.json.

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

We maken een beleid in Minio met de naam user2-policy uit het bestand user2-policy.json.

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

Pas het user1-beleidsbeleid toe op de gebruiker user1.

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

Pas het user2-beleidsbeleid toe op de gebruiker user2.

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

Het controleren van de verbinding van beleid met gebruikers

minio-mc admin user list myminio

Het controleren van de verbinding van beleid met gebruikers zal er ongeveer zo uitzien

enabled    user1                 user1-policy
enabled    user2                 user2-policy

Voor de duidelijkheid, ga via de browser naar het adres http://ip-сервера-где-запущен-minio:9000/minio/

We zien dat we verbinding hebben gemaakt met Minio onder MINIO_ACCESS_KEY=user1. De user1bucket-bucket is voor ons beschikbaar.

Minio zo instellen dat de gebruiker alleen met zijn eigen emmer kan werken

Het is niet mogelijk om een ​​bucket te maken, omdat er geen overeenkomstige actie in het beleid staat.

Minio zo instellen dat de gebruiker alleen met zijn eigen emmer kan werken

Laten we een bestand maken in de bucket user1bucket.

Minio zo instellen dat de gebruiker alleen met zijn eigen emmer kan werken

Laten we verbinding maken met Minio onder MINIO_ACCESS_KEY=user2. De user2bucket-bucket is voor ons beschikbaar.

En we zien geen user1bucket of bestanden van user1bucket.

Minio zo instellen dat de gebruiker alleen met zijn eigen emmer kan werken

Een Telegram-chat gemaakt met Minio https://t.me/minio_s3_ru

Bron: www.habr.com