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
