Sette opp Minio slik at brukeren kun kan jobbe med sin egen bøtte

Minio er en enkel, rask, AWS S3-kompatibel objektbutikk. Minio er designet for å være vert for ustrukturerte data som bilder, videoer, loggfiler, sikkerhetskopier. minio støtter også distribuert modus, som gir muligheten til å koble flere disker til én objektlagringsserver, inkludert de som er plassert på forskjellige maskiner.

Hensikten med dette innlegget er å konfigurere minio slik at hver bruker kun kan jobbe med sin egen bøtte.

Generelt er Minio egnet for følgende tilfeller:

  • ikke-replikeringslagring på toppen av et pålitelig filsystem med tilgang via S3 (liten og mellomstor lagring hostet på NAS og SAN);
  • ikke-replikert lagring på toppen av et upålitelig filsystem med S3-tilgang (for utvikling og testing);
  • lagring med replikering på en liten gruppe servere i ett rack med tilgang via S3-protokollen (failover-lagring med et feildomene lik racket).

På RedHat-systemer kobler vi til det uoffisielle Minio-lageret.

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

Generer og legg til MINIO_ACCESS_KEY og MINIO_SECRET_KEY i /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=

Hvis du ikke vil bruke nginx før Minio, må du endre.

--address 127.0.0.1:9000

--address 0.0.0.0:9000

La oss lansere Minio.

systemctl start minio

Vi oppretter en forbindelse til Minio kalt myminio.

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

Opprett en bøtte user1bucket.

minio-mc mb myminio/user1bucket

Opprett en bøtte user2bucket.

minio-mc mb myminio/user2bucket

Opprett en policyfil 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": ""
    }
  ]
}

Opprett en policyfil 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": ""
    }
  ]
}

Opprett en bruker bruker1 med passordet test12345.

minio-mc admin user add myminio user1 test12345

Opprett en bruker bruker2 med passordet test54321.

minio-mc admin user add myminio user2 test54321

Vi lager en policy i Minio kalt user1-policy fra filen user1-policy.json.

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

Vi lager en policy i Minio kalt user2-policy fra filen user2-policy.json.

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

Bruk bruker1-policyen på brukeren bruker1.

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

Bruk bruker2-policyen på brukeren bruker2.

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

Kontrollere koblingen av policyer til brukere

minio-mc admin user list myminio

Å sjekke koblingen av policyer til brukere vil se omtrent slik ut

enabled    user1                 user1-policy
enabled    user2                 user2-policy

For klarhet, gå gjennom nettleseren til adressen http://ip-сервера-где-запущен-minio:9000/minio/

Vi ser at vi koblet til Minio under MINIO_ACCESS_KEY=bruker1. User1bucket-bøtten er tilgjengelig for oss.

Sette opp Minio slik at brukeren kun kan jobbe med sin egen bøtte

Det vil ikke være mulig å opprette en bøtte, siden det ikke er noen tilsvarende handling i policyen.

Sette opp Minio slik at brukeren kun kan jobbe med sin egen bøtte

La oss lage en fil i bøtte user1bucket.

Sette opp Minio slik at brukeren kun kan jobbe med sin egen bøtte

La oss koble til Minio under MINIO_ACCESS_KEY=bruker2. User2bucket-bøtten er tilgjengelig for oss.

Og vi ser verken user1bucket eller filer fra user1bucket.

Sette opp Minio slik at brukeren kun kan jobbe med sin egen bøtte

Laget en Telegram-chat ved hjelp av Minio https://t.me/minio_s3_ru

Kilde: www.habr.com