Konfigurace Minio tak, aby uživatel mohl pracovat pouze se svým vlastním kýblem

Minio je jednoduchý, rychlý a AWS S3 kompatibilní objektový obchod. Minio je navrženo pro hostování nestrukturovaných dat, jako jsou fotografie, videa, soubory protokolu, zálohy. minio také podporuje distribuovaný režim, který poskytuje možnost připojit více disků k jedinému serveru pro ukládání objektů, včetně disků umístěných na různých počítačích.

Účelem tohoto příspěvku je nastavit minio tak, aby každý uživatel mohl pracovat pouze se svým vlastním kýblem.

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

  • nereplikační úložiště nad zabezpečeným souborovým systémem s přístupem S3 (malé a střední úložiště hostované na NAS a SAN);
  • úložiště bez replikace přes nespolehlivý souborový systém s přístupem přes S3 (pro vývoj a testování);
  • úložiště s replikací na malé skupině serverů v jednom racku s přístupem přes protokol S3 (failover storage s chybovou doménou rovnou racku).

Na systémech RedHat připojujeme neoficiální úložiště Minio.

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

Generujeme a přidává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 to změnit.

--address 127.0.0.1:9000

na

--address 0.0.0.0:9000

Spouštíme Minio.

systemctl start minio

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

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

Vytvořit bucket user1bucket.

minio-mc mb myminio/user1bucket

Vytvořit bucket user2bucket.

minio-mc mb myminio/user2bucket

Vytvořte soubor zásad 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": ""
    }
  ]
}

Vytvořte soubor zásad 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": ""
    }
  ]
}

Vytvořte uživatele user1 s heslem test12345.

minio-mc admin user add myminio user1 test12345

Vytvořte uživatele user2 s heslem test54321.

minio-mc admin user add myminio user2 test54321

Vytvořte v Minio zásadu s názvem user1-policy ze souboru user1-policy.json.

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

Vytvořte v Minio zásadu s názvem user2-policy ze souboru user2-policy.json.

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

Zásadu user1-policy aplikujeme na uživatele user1.

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

Zásadu user2-policy aplikujeme na uživatele user2.

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

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

minio-mc admin user list myminio

Kontrola připojení politik k uživatelům bude něco takového

enabled    user1                 user1-policy
enabled    user2                 user2-policy

Pro přehlednost procházíme prohlížeč na adrese http://ip-сервера-где-запущен-minio:9000/minio/

Vidíme, že jsme se připojili k Minio pod MINIO_ACCESS_KEY=user1. Bucket user1bucket je pro nás k dispozici.

Konfigurace Minio tak, aby uživatel mohl pracovat pouze se svým vlastním kýblem

Vytvoření segmentu nebude fungovat, protože v zásadě není žádná odpovídající akce.

Konfigurace Minio tak, aby uživatel mohl pracovat pouze se svým vlastním kýblem

Vytvořme soubor v bucket user1bucket.

Konfigurace Minio tak, aby uživatel mohl pracovat pouze se svým vlastním kýblem

Připojte se k Minio pod MINIO_ACCESS_KEY=user2. Bucket user2bucket je pro nás k dispozici.

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

Konfigurace Minio tak, aby uživatel mohl pracovat pouze se svým vlastním kýblem

Minio vytvořil telegramový chat https://t.me/minio_s3_ru

Zdroj: www.habr.com