Minio е просто, бързо и съвместимо с AWS S3 хранилище за обекти. Minio е предназначен за съхраняване на неструктурирани данни, като снимки, видеозаписи, файлове с журнали, резервни копия. В minio също се поддържа разпределен режим, който позволява свързване на множество дискове към един сървър за съхранение на обекти, включително такива, разположени на различни машини.
Целта на този пост е да настрои minio така, че всеки потребител да може да работи само със своя bucket.
По принцип Minio е подходящ за следните случаи:
- хранилище без репликация върху надеждна файловата система с достъп по S3 (малки и средни хранилища, разположени на NAS и SAN);
- хранилище без репликация върху ненадеждна файловата система с достъп по S3 (за разработка и тестване);
- хранилище с репликация на малка група сървъри в една стоя с достъп по протокола S3 (устойчиво хранилище с домейн на отказа равен на стоята).
На системите RedHat свързваме неофициален репозитори на Minio.
yum -y install yum-plugin-copr
yum copr enable -y lkiesow/minio
yum install -y minio minio-mcГенерираме и добавяме в MINIO_ACCESS_KEY и MINIO_SECRET_KEY в /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=Ако не планирате да използвате nginx преди Minio, трябва да промените.
--address 127.0.0.1:9000на
--address 0.0.0.0:9000Стартираме Minio.
systemctl start minioСъздаваме връзка към Minio, наречена myminio.
minio-mc config host add myminio http://localhost:9000 MINIO_ACCESS_KEY
MINIO_SECRET_KEYСъздаваме bucket user1bucket.
minio-mc mb myminio/user1bucketСъздаваме bucket user2bucket.
minio-mc mb myminio/user2bucketСъздаваме файл на политиката 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": ""
}
]
}Създаваме файл на политиката 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": ""
}
]
}Създаваме потребител user1 с парола test12345.
minio-mc admin user add myminio user1 test12345Създаваме потребител user2 с парола test54321.
minio-mc admin user add myminio user2 test54321Създаваме политика в Minio с име user1-policy от файла user1-policy.json.
minio-mc admin policy add myminio user1-policy user1-policy.jsonСъздаваме политика в Minio с име user2-policy от файла user2-policy.json.
minio-mc admin policy add myminio user2-policy user2-policy.jsonПрилагаме политика user1-policy към потребителя user1.
minio-mc admin policy set myminio user1-policy user=user1Прилагаме политика user2-policy към потребителя user2.
minio-mc admin policy set myminio user2-policy user=user2Проверяваме свързаността на политиките с потребителите
minio-mc admin user list myminioПроверка на свързаността на политиките с потребителите ще изглежда така
enabled user1 user1-policy
enabled user2 user2-policyЗа по-голяма представа влизаме през браузъра на адрес
Виждаме, че сме свързани с Minio с MINIO_ACCESS_KEY=user1. За нас е достъпен bucket user1bucket.

Не можем да създадем bucket, тъй като в политиката няма съответно действие.

Ще създадем файл в bucket user1bucket.

Свързваме се с Minio с MINIO_ACCESS_KEY=user2. За нас е достъпен bucket user2bucket.
И не виждаме нито user1bucket, нито файловете от user1bucket.

Създадох Telegram чат за Minio.
Източник: habr.com
