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-mcVygenerujeme 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:9000na
--address 0.0.0.0:9000Spouštíme Minio.
systemctl start minioVytváříme připojení k Minio s názvem myminio.
minio-mc config host add myminio http://localhost:9000 MINIO_ACCESS_KEY
MINIO_SECRET_KEYVytváříme bucket user1bucket.
minio-mc mb myminio/user1bucketVytváříme bucket user2bucket.
minio-mc mb myminio/user2bucketVytváří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 test12345Vytváříme uživatele user2 s heslem test54321.
minio-mc admin user add myminio user2 test54321Vytváříme politiku v Minio s názvem user1-policy z souboru user1-policy.json.
minio-mc admin policy add myminio user1-policy user1-policy.jsonVytváříme politiku v Minio s názvem user2-policy z souboru user2-policy.json.
minio-mc admin policy add myminio user2-policy user2-policy.jsonAplikujeme politiku user1-policy na uživatele user1.
minio-mc admin policy set myminio user1-policy user=user1Aplikujeme politiku user2-policy na uživatele user2.
minio-mc admin policy set myminio user2-policy user=user2Kontrolujeme připojení politik k uživatelům
minio-mc admin user list myminioKontrola připojení politik k uživatelům bude vypadat přibližně takto
enabled user1 user1-policy
enabled user2 user2-policyPro přehlednost se přihlásíme přes prohlížeč na adresu
Vidíme, že jsme se připojili k Minio s MINIO_ACCESS_KEY=user1. Pro nás je dostupný bucket user1bucket.

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

Vytvoříme soubor v bucketu user1bucket.

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.

Vytvořil jsem Telegram chat ohledně Minio.
Zdroj: habr.com
