Minio Π΅ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½Π°, Π±ΡΠ·Π°, ΠΊΠΎΠΌΠΏΠ°ΡΠΈΠ±ΠΈΠ»Π½Π° ΡΠΎ AWS S3 ΠΏΡΠΎΠ΄Π°Π²Π½ΠΈΡΠ° Π·Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΈ. Minio Π΅ Π΄ΠΈΠ·Π°ΡΠ½ΠΈΡΠ°Π½ Π΄Π° Ρ ΠΎΡΡΠΈΡΠ° Π½Π΅ΡΡΡΡΠΊΡΡΡΠΈΡΠ°Π½ΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΈ, Π²ΠΈΠ΄Π΅Π°, Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ Π·Π° Π΄Π½Π΅Π²Π½ΠΈΡΠΈ, ΡΠ΅Π·Π΅ΡΠ²Π½ΠΈ ΠΊΠΎΠΏΠΈΠΈ. Minio ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π° ΠΈ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½ ΡΠ΅ΠΆΠΈΠΌ, ΠΊΠΎΡ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΏΠΎΠ²ΡΠ·ΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΠΎΠ²Π΅ΡΠ΅ Π΄ΠΈΡΠΊΠΎΠ²ΠΈ Π½Π° Π΅Π΄Π΅Π½ ΡΠ΅ΡΠ²Π΅Ρ Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ Π½Π° ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠΈ, Π²ΠΊΠ»ΡΡΡΠ²Π°ΡΡΠΈ Π³ΠΈ ΠΈ ΠΎΠ½ΠΈΠ΅ Π»ΠΎΡΠΈΡΠ°Π½ΠΈ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ.
Π¦Π΅Π»ΡΠ° Π½Π° ΠΎΠ²Π°Π° ΠΎΠ±ΡΠ°Π²Π° Π΅ Π΄Π° ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ° ΠΌΠΈΠ½ΠΈΠΎ ΡΠ°ΠΊΠ° ΡΡΠΎ ΡΠ΅ΠΊΠΎΡ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΡΠ°ΠΌΠΎ ΡΠΎ ΡΠΎΠΏΡΡΠ²Π΅Π½Π°ΡΠ° ΠΊΠΎΡΠ°.
ΠΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏ, Minio Π΅ ΠΏΠΎΠ³ΠΎΠ΄Π΅Π½ Π·Π° ΡΠ»Π΅Π΄Π½ΠΈΠ²Π΅ ΡΠ»ΡΡΠ°ΠΈ:
- ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ Π±Π΅Π· ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π½Π° Π²ΡΠ²ΠΎΡ Π½Π° ΡΠΈΠ³ΡΡΠ΅Π½ Π΄Π°ΡΠΎΡΠ΅ΡΠ΅Π½ ΡΠΈΡΡΠ΅ΠΌ ΡΠΎ ΠΏΡΠΈΡΡΠ°ΠΏ ΠΏΡΠ΅ΠΊΡ S3 (ΠΌΠ°Π»ΠΎ ΠΈ ΡΡΠ΅Π΄Π½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ Ρ ΠΎΡΡΠΈΡΠ°Π½ΠΎ Π½Π° NAS ΠΈ SAN);
- Π½Π΅-ΡΠ΅ΠΏΠ»ΠΈΡΠΈΡΠ°Π½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ Π½Π° Π²ΡΠ²ΠΎΡ Π½Π° Π½Π΅ΡΠΈΠ³ΡΡΠ΅Π½ Π΄Π°ΡΠΎΡΠ΅ΡΠ΅Π½ ΡΠΈΡΡΠ΅ΠΌ ΡΠΎ S3 ΠΏΡΠΈΡΡΠ°ΠΏ (Π·Π° ΡΠ°Π·Π²ΠΎΡ ΠΈ ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅);
- ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ ΡΠΎ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π½Π° ΠΌΠ°Π»Π° Π³ΡΡΠΏΠ° ΡΠ΅ΡΠ²Π΅ΡΠΈ Π²ΠΎ Π΅Π΄Π΅Π½ rack ΡΠΎ ΠΏΡΠΈΡΡΠ°ΠΏ ΠΏΡΠ΅ΠΊΡ S3 ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΡ (failover ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ ΡΠΎ Π΄ΠΎΠΌΠ΅Π½ Π½Π° Π΄Π΅ΡΠ΅ΠΊΡ Π΅Π΄Π½Π°ΠΊΠΎΠ² Π½Π° rack).
ΠΠ° ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ 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
ΠΡΠΈΠΌΠ΅Π½Π΅ΡΠ΅ ΡΠ° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° Π·Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ1 Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ1.
minio-mc admin policy set myminio user1-policy user=user1
ΠΡΠΈΠΌΠ΅Π½Π΅ΡΠ΅ ΡΠ° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° Π·Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ2 Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ2.
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. ΠΠΎΡΠ°ΡΠ° user1bucket Π½ΠΈ Π΅ Π΄ΠΎΡΡΠ°ΠΏΠ½Π°.
ΠΠ΅ΠΌΠ° Π΄Π° Π±ΠΈΠ΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄Π΅ ΠΊΠΎΡΠ°, Π±ΠΈΠ΄Π΅ΡΡΠΈ Π½Π΅ΠΌΠ° ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½ΠΎ Π΄Π΅ΡΡΡΠ²ΠΎ Π²ΠΎ ΠΏΠΎΠ»ΠΈΡΠ°ΡΠ°.
ΠΡΠ΄Π΅ Π΄Π° ΡΠΎΠ·Π΄Π°Π΄Π΅ΠΌΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° Π²ΠΎ ΠΊΠΎΡΠΏΠ°ΡΠ° user1bucket.
ΠΡΠ΄Π΅ Π΄Π° ΡΠ΅ ΠΏΠΎΠ²ΡΠ·Π΅ΠΌΠ΅ ΡΠΎ Minio ΠΏΠΎΠ΄ MINIO_ACCESS_KEY=user2. ΠΠΎΡΠ°ΡΠ° user2bucket Π½ΠΈ Π΅ Π΄ΠΎΡΡΠ°ΠΏΠ½Π°.
Π Π½Π΅ Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π½ΠΈΡΡ user1bucket Π½ΠΈΡΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ ΠΎΠ΄ user1bucket.
Π‘ΠΎΠ·Π΄Π°Π΄Π΅ ΡΠ°Π·Π³ΠΎΠ²ΠΎΡ Π·Π° Telegram ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Minio
ΠΠ·Π²ΠΎΡ: www.habr.com