Opsætning af Minio, så brugeren kun kan arbejde med sin egen spand

Minio er en enkel, hurtig, AWS S3-kompatibel objektbutik. Minio er designet til at være vært for ustrukturerede data såsom fotos, videoer, logfiler, sikkerhedskopier. minio understøtter også distribueret tilstand, som giver mulighed for at forbinde flere diske til en objektlagringsserver, inklusive dem, der er placeret på forskellige maskiner.

Formålet med dette indlæg er at konfigurere minio, så hver bruger kun kan arbejde med sin egen bøtte.

Generelt er Minio velegnet til følgende tilfælde:

  • ikke-replikeringslager oven på et pålideligt filsystem med adgang via S3 (lille og mellemstore lager hostet på NAS og SAN);
  • ikke-replikeret lagring oven på et upålideligt filsystem med S3-adgang (til udvikling og test);
  • storage med replikering på en lille gruppe servere i ét rack med adgang via S3 protokollen (failover storage med et fejldomæne svarende til racket).

På RedHat-systemer forbinder vi det uofficielle Minio-lager.

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

Generer og føj 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 bruge nginx før Minio, så skal du ændre.

--address 127.0.0.1:9000

--address 0.0.0.0:9000

Lad os starte Minio.

systemctl start minio

Vi skaber en forbindelse til Minio kaldet myminio.

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

Opret en bucket user1bucket.

minio-mc mb myminio/user1bucket

Opret en bucket user2bucket.

minio-mc mb myminio/user2bucket

Opret en politikfil 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": ""
    }
  ]
}

Opret en politikfil 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": ""
    }
  ]
}

Opret en bruger bruger1 med adgangskoden test12345.

minio-mc admin user add myminio user1 test12345

Opret en bruger bruger2 med adgangskoden test54321.

minio-mc admin user add myminio user2 test54321

Vi opretter en politik i Minio kaldet user1-policy fra filen user1-policy.json.

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

Vi opretter en politik i Minio kaldet user2-policy fra filen user2-policy.json.

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

Anvend bruger1-politikken på brugeren bruger1.

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

Anvend bruger2-politikken på brugeren bruger2.

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

Kontrol af forbindelsen mellem politikker og brugere

minio-mc admin user list myminio

At kontrollere forbindelsen af ​​politikker til brugere vil se nogenlunde sådan ud

enabled    user1                 user1-policy
enabled    user2                 user2-policy

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

Vi ser, at vi oprettede forbindelse til Minio under MINIO_ACCESS_KEY=bruger1. User1bucket-spanden er tilgængelig for os.

Opsætning af Minio, så brugeren kun kan arbejde med sin egen spand

Det vil ikke være muligt at oprette en bucket, da der ikke er en tilsvarende handling i politikken.

Opsætning af Minio, så brugeren kun kan arbejde med sin egen spand

Lad os oprette en fil i bucket user1bucket.

Opsætning af Minio, så brugeren kun kan arbejde med sin egen spand

Lad os oprette forbindelse til Minio under MINIO_ACCESS_KEY=bruger2. User2bucket-spanden er tilgængelig for os.

Og vi ser hverken user1bucket eller filer fra user1bucket.

Opsætning af Minio, så brugeren kun kan arbejde med sin egen spand

Oprettede en Telegram-chat ved hjælp af Minio https://t.me/minio_s3_ru

Kilde: www.habr.com