Minio гэта простае, хуткае і сумяшчальнае з AWS S3 сховішча аб'ектаў. Minio створаны для размяшчэння неструктураваных дадзеных, такіх як фатаграфіі, відэазапісы, файлы часопісаў, рэзервовыя копіі. У minio таксама падтрымліваецца размеркаваны рэжым (distributed mode), які дае магчымасць падлучэння да аднаго сервера захоўвання аб'ектаў мноства дыскаў, у тым ліку размешчаных на розных машынах.
Мэта гэтага паста наладзіць 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 не атрымаецца, дык які адпавядае Action у палітыцы няма.
Створым файл у bucket user1bucket.
Падлучымся да Minio пад MINIO_ACCESS_KEY=user2. Для нас даступны bucket user2bucket.
І не бачым ні user1bucket ні файлаў з user1bucket.
Стварыў Telegram чат па Minio
Крыніца: habr.com