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