Nastavení Minio, aby uživatel mohl pracovat pouze se svým bucketem

Minio je jednoduché, rychlé a s AWS S3 kompatibilní úložiště objektů. Minio je navrženo pro ukládání nestrukturovaných dat, jako jsou fotografie, videa, soubory protokolu a zálohy. Minio také podporuje distribuovaný režim, který umožňuje připojení mnoha disků k jednomu úložišti objektů, včetně těch, které jsou umístěny na různých strojích.

Cílem tohoto příspěvku je nastavit Minio tak, aby každý uživatel mohl pracovat pouze se svým vlastním bucketem.

Obecně je Minio vhodné pro následující případy:

  • úložiště bez replikace na spolehlivém souborovém systému s přístupem přes S3 (malé a střední úložiště umístěné na NAS a SAN);
  • úložiště bez replikace na nespolehlivém souborovém systému s přístupem přes S3 (pro vývoj a testování);
  • úložiště s replikací na malé skupině serverů v jedné skříni s přístupem přes S3 protokol (odolné úložiště s doménou selhání rovnou skříni).

Na systémech RedHat připojíme neoficiální repozitář Minio.

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

Vygenerujeme a přidáme do MINIO_ACCESS_KEY a MINIO_SECRET_KEY v /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=

Pokud nebudete používat nginx před Minio, musíte provést změnu.

--address 127.0.0.1:9000

na

--address 0.0.0.0:9000

Spouštíme Minio.

systemctl start minio

Vytváříme připojení k Minio s názvem myminio.

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

Vytváříme bucket user1bucket.

minio-mc mb myminio/user1bucket

Vytváříme bucket user2bucket.

minio-mc mb myminio/user2bucket

Vytváříme soubor politiky user1-policy.json.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "s3:PutBucketPolicy",
        "s3:GetBucketPolicy",
        "s3:DeleteBucketPolicy",
        "s3:ListAllMyBuckets",
        "s3:ListBucket"
      ],
      "Effect": "Povolit",
      "Resource": [
        "arn:aws:s3:::user1bucket"
      ],
      "Sid": ""
    },
    {
      "Action": [
        "s3:AbortMultipartUpload",
        "s3:DeleteObject",
        "s3:GetObject",
        "s3:ListMultipartUploadParts",
        "s3:PutObject"
      ],
      "Effect": "Povolit",
      "Resource": [
        "arn:aws:s3:::user1bucket/*"
      ],
      "Sid": ""
    }
  ]
}

Vytváříme soubor politiky user2-policy.json.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "s3:PutBucketPolicy",
        "s3:GetBucketPolicy",
        "s3:DeleteBucketPolicy",
        "s3:ListAllMyBuckets",
        "s3:ListBucket"
      ],
      "Effect": "Povolit",
      "Resource": [
        "arn:aws:s3:::user2bucket"
      ],
      "Sid": ""
    },
    {
      "Action": [
        "s3:AbortMultipartUpload",
        "s3:DeleteObject",
        "s3:GetObject",
        "s3:ListMultipartUploadParts",
        "s3:PutObject"
      ],
      "Effect": "Povolit",
      "Resource": [
        "arn:aws:s3:::user2bucket/*"
      ],
      "Sid": ""
    }
  ]
}

Vytváříme uživatele user1 s heslem test12345.

minio-mc admin user add myminio user1 test12345

Vytváříme uživatele user2 s heslem test54321.

minio-mc admin user add myminio user2 test54321

Vytváříme politiku v Minio s názvem user1-policy z souboru user1-policy.json.

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

Vytváříme politiku v Minio s názvem user2-policy z souboru user2-policy.json.

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

Aplikujeme politiku user1-policy na uživatele user1.

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

Aplikujeme politiku user2-policy na uživatele user2.

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

Kontrolujeme připojení politik k uživatelům

minio-mc admin user list myminio

Kontrola připojení politik k uživatelům bude vypadat přibližně takto

enabled    user1                 user1-policy
enabled    user2                 user2-policy

Pro přehlednost se přihlásíme přes prohlížeč na adresu http://ip-сервера-где-запущен-minio:9000/minio/

Vidíme, že jsme se připojili k Minio s MINIO_ACCESS_KEY=user1. Pro nás je dostupný bucket user1bucket.

Nastavení Minio, aby uživatel mohl pracovat pouze se svým bucketem

Vytvoření bucketu nebude možné, protože v politice není odpovídající akce.

Nastavení Minio, aby uživatel mohl pracovat pouze se svým bucketem

Vytvoříme soubor v bucketu user1bucket.

Nastavení Minio, aby uživatel mohl pracovat pouze se svým bucketem

Připojíme se k Minio s MINIO_ACCESS_KEY=user2. Pro nás je dostupný bucket user2bucket.

A nevidíme ani user1bucket, ani soubory z user1bucket.

Nastavení Minio, aby uživatel mohl pracovat pouze se svým bucketem

Vytvořil jsem Telegram chat ohledně Minio. https://t.me/minio_s3_ru

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster