Minio to proste, szybkie i zgodne z AWS S3 repozytorium obiektów. Minio zostało zaprojektowane do przechowywania danych niestrukturalnych, takich jak zdjęcia, filmy, pliki dzienników, kopie zapasowe. W minio obsługiwany jest również tryb rozproszony (distributed mode), który umożliwia podłączenie do jednego serwera przechowywania obiektów wielu dysków, w tym z różnych maszyn.
Celem tego posta jest skonfigurowanie minio, aby każdy użytkownik mógł pracować tylko ze swoim bucketem.
Ogólnie rzecz biorąc, Minio nadaje się do następujących przypadków:
- repozytorium bez replikacji na solidnym systemie plików z dostępem po S3 (małe i średnie repozytoria umieszczone na NAS i SAN);
- repozytorium bez replikacji na niepewnym systemie plików z dostępem po S3 (do rozwoju i testowania);
- repozytorium z replikacją w niewielkiej grupie serwerów w jednej szafie z dostępem przez protokół S3 (odporne na awarie repozytorium z domeną awarii równą szafie).
Na systemach RedHat podłączamy nieoficjalne repozytorium Minio.
yum -y install yum-plugin-copr
yum copr enable -y lkiesow/minio
yum install -y minio minio-mcGenerujemy i dodajemy do MINIO_ACCESS_KEY i MINIO_SECRET_KEY w /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=Jeśli nie będziesz używać nginx przed Minio, musisz zmienić.
--address 127.0.0.1:9000na
--address 0.0.0.0:9000Uruchamiamy Minio.
systemctl start minioTworzymy połączenie z Minio o nazwie myminio.
minio-mc config host add myminio http://localhost:9000 MINIO_ACCESS_KEY
MINIO_SECRET_KEYTworzymy bucket user1bucket.
minio-mc mb myminio/user1bucketTworzymy bucket user2bucket.
minio-mc mb myminio/user2bucketTworzymy plik polityki 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": ""
}
]
}Tworzymy plik polityki 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": ""
}
]
}Tworzymy użytkownika user1 z hasłem test12345.
minio-mc admin user add myminio user1 test12345Tworzymy użytkownika user2 z hasłem test54321.
minio-mc admin user add myminio user2 test54321Tworzymy politykę w Minio o nazwie user1-policy z pliku user1-policy.json.
minio-mc admin policy add myminio user1-policy user1-policy.jsonTworzymy politykę w Minio o nazwie user2-policy z pliku user2-policy.json.
minio-mc admin policy add myminio user2-policy user2-policy.jsonStosujemy politykę user1-policy do użytkownika user1.
minio-mc admin policy set myminio user1-policy user=user1Stosujemy politykę user2-policy do użytkownika user2.
minio-mc admin policy set myminio user2-policy user=user2Sprawdzamy połączenie polityk z użytkownikami
minio-mc admin user list myminioSprawdzenie połączenia polityk z użytkownikami będzie wyglądać mniej więcej tak
enabled user1 user1-policy
enabled user2 user2-policyDla przejrzystości wchodzimy przez przeglądarkę pod adres
Widzimy, że połączyliśmy się z Minio jako MINIO_ACCESS_KEY=user1. Dla nas dostępny jest bucket user1bucket.

Nie uda się stworzyć bucket, ponieważ w polityce brakuje odpowiedniego działania.

Stworzymy plik w buckecie user1bucket.

Połączymy się z Minio jako MINIO_ACCESS_KEY=user2. Dla nas dostępny jest bucket user2bucket.
I nie widzimy ani user1bucket, ani plików z user1bucket.

Stworzyłem czat Telegramowy dotyczący Minio.
Źródło: habr.com
