Minio Π΅ ΠΏΡΠΎΡΡΠΎ, Π±ΡΡΠ·ΠΎ ΠΈ ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎ Ρ AWS S3 Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ. Minio Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ°Π½ Π΄Π° Ρ ΠΎΡΡΠ²Π° Π½Π΅ΡΡΡΡΠΊΡΡΡΠΈΡΠ°Π½ΠΈ Π΄Π°Π½Π½ΠΈ ΠΊΠ°ΡΠΎ ΡΠ½ΠΈΠΌΠΊΠΈ, Π²ΠΈΠ΄Π΅ΠΎΠΊΠ»ΠΈΠΏΠΎΠ²Π΅, ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΡΠ΅Π·Π΅ΡΠ²Π½ΠΈ ΠΊΠΎΠΏΠΈΡ. minio ΡΡΡΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΡΠ΅ΠΆΠΈΠΌ, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΄ΠΈΡΠΊΠΎΠ²Π΅ ΠΊΡΠΌ Π΅Π΄ΠΈΠ½ ΡΡΡΠ²ΡΡ Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ΅Π·ΠΈ, ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ.
Π¦Π΅Π»ΡΠ° Π½Π° ΡΠ°Π·ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ Π΅ Π΄Π° Π½Π°ΡΡΡΠΎΠΈ minio, ΡΠ°ΠΊΠ° ΡΠ΅ Π²ΡΠ΅ΠΊΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΡΠ°ΠΌΠΎ ΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π°ΡΠ° ΡΠΈ ΠΊΠΎΡΠ°.
ΠΠ°ΡΠΎ ΡΡΠ»ΠΎ Minio Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π·Π° ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΡΠ»ΡΡΠ°ΠΈ:
- ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π±Π΅Π· ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ Π²ΡΡΡ Ρ Π·Π°ΡΠΈΡΠ΅Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠ° Ρ S3 Π΄ΠΎΡΡΡΠΏ (ΠΌΠ°Π»ΠΊΠΎ ΠΈ ΡΡΠ΅Π΄Π½ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, Ρ ΠΎΡΡΠ²Π°Π½ΠΎ Π½Π° NAS ΠΈ SAN);
- ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π±Π΅Π· ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ Π²ΡΡΡ Ρ Π½Π΅Π½Π°Π΄Π΅ΠΆΠ΄Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠ° Ρ Π΄ΠΎΡΡΡΠΏ ΠΏΡΠ΅Π· S3 (Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈ ΡΠ΅ΡΡΠ²Π°Π½Π΅);
- ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Ρ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ Π½Π° ΠΌΠ°Π»ΠΊΠ° Π³ΡΡΠΏΠ° ΡΡΡΠ²ΡΡΠΈ Π² Π΅Π΄ΠΈΠ½ ΡΡΠ΅Π»Π°ΠΆ Ρ Π΄ΠΎΡΡΡΠΏ ΠΏΡΠ΅Π· ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° S3 (failover storage Ρ Π΄ΠΎΠΌΠ΅ΠΉΠ½ Π·Π° Π³ΡΠ΅ΡΠΊΠ°, ΡΠ°Π²Π΅Π½ Π½Π° ΡΡΠ΅Π»Π°ΠΆΠ°).
Π ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ 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
Π‘ΡΠ·Π΄Π°ΠΉΡΠ΅ ΠΊΠΎΡΠ° user1bucket.
minio-mc mb myminio/user1bucket
Π‘ΡΠ·Π΄Π°ΠΉΡΠ΅ ΠΊΠΎΡΠ° 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 Π΅ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π·Π° Π½Π°Ρ.
Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΡΠ° Π½ΡΠΌΠ° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π² ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° Π½ΡΠΌΠ° ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅.
ΠΠ΅ΠΊΠ° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΡΠ°ΠΉΠ» Π² ΠΊΠΎΡΠ° user1bucket.
Π‘Π²ΡΡΠΆΠ΅ΡΠ΅ ΡΠ΅ Ρ Minio ΠΏΠΎΠ΄ MINIO_ACCESS_KEY=user2. Bucket user2bucket Π΅ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π·Π° Π½Π°Ρ.
Π Π½Π΅ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ Π½ΠΈΡΠΎ user1bucket, Π½ΠΈΡΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΎΡ user1bucket.
Π‘ΡΠ·Π΄Π°Π΄Π΅Π½ Telegram ΡΠ°Ρ ΠΎΡ Minio
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com