Nastavenie Minia tak, aby používateľ mohol pracovať iba s vlastným vedierkom

Minio je jednoduchý a rýchly objektový obchod kompatibilný s AWS S3. Minio je navrhnuté tak, aby hostilo neštruktúrované údaje, ako sú fotografie, videá, protokolové súbory, zálohy. minio tiež podporuje distribuovaný režim, ktorý poskytuje možnosť pripojiť viacero diskov k jednému serveru na ukladanie objektov, vrátane diskov umiestnených na rôznych počítačoch.

Účelom tohto príspevku je nakonfigurovať minio tak, aby každý používateľ mohol pracovať iba s vlastným vedierkom.

Vo všeobecnosti je Minio vhodné pre nasledujúce prípady:

  • nereplikačné úložisko nad spoľahlivým súborovým systémom s prístupom cez S3 (malé a stredné úložisko hosťované na NAS a SAN);
  • nereplikované úložisko nad nespoľahlivým súborovým systémom s prístupom S3 (na vývoj a testovanie);
  • úložisko s replikáciou na malej skupine serverov v jednom racku s prístupom cez protokol S3 (failover storage s doménou zlyhania rovnajúcou sa racku).

Na systémoch RedHat pripájame neoficiálne úložisko Minio.

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

Vygenerujte a pridajte kľúče MINIO_ACCESS_KEY a MINIO_SECRET_KEY v súbore /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=

Ak nebudete používať nginx pred Minio, musíte to zmeniť.

--address 127.0.0.1:9000

na

--address 0.0.0.0:9000

Spustíme Minio.

systemctl start minio

Vytvárame spojenie s Miniom s názvom myminio.

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

Vytvorte segment user1bucket.

minio-mc mb myminio/user1bucket

Vytvorte segment user2bucket.

minio-mc mb myminio/user2bucket

Vytvorte súbor politiky 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": ""
    }
  ]
}

Vytvorte súbor politiky 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": ""
    }
  ]
}

Vytvorte užívateľa user1 s heslom test12345.

minio-mc admin user add myminio user1 test12345

Vytvorte užívateľa user2 s heslom test54321.

minio-mc admin user add myminio user2 test54321

V programe Minio vytvoríme politiku s názvom user1-policy zo súboru user1-policy.json.

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

V programe Minio vytvoríme politiku s názvom user2-policy zo súboru user2-policy.json.

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

Aplikujte politiku user1-policy na užívateľa user1.

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

Aplikujte politiku user2-policy na užívateľa user2.

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

Kontrola pripojenia politík k používateľom

minio-mc admin user list myminio

Kontrola pripojenia politík k používateľom bude vyzerať asi takto

enabled    user1                 user1-policy
enabled    user2                 user2-policy

Pre prehľadnosť prejdite cez prehliadač na adresu http://ip-сервера-где-запущен-minio:9000/minio/

Vidíme, že sme sa pripojili k Minio pod MINIO_ACCESS_KEY=user1. Je nám k dispozícii vedro user1bucket.

Nastavenie Minia tak, aby používateľ mohol pracovať iba s vlastným vedierkom

Nebude možné vytvoriť segment, pretože v politike nie je žiadna zodpovedajúca akcia.

Nastavenie Minia tak, aby používateľ mohol pracovať iba s vlastným vedierkom

Poďme vytvoriť súbor v bucket user1bucket.

Nastavenie Minia tak, aby používateľ mohol pracovať iba s vlastným vedierkom

Pripojme sa k Miniu pod MINIO_ACCESS_KEY=user2. Je nám k dispozícii vedro user2bucket.

A nevidíme ani user1bucket, ani súbory z user1bucket.

Nastavenie Minia tak, aby používateľ mohol pracovať iba s vlastným vedierkom

Vytvoril som telegramový chat pomocou Minio https://t.me/minio_s3_ru

Zdroj: hab.com