рдорд┐рдирд┐рдпреЛ рдПрдХ рд╕рд░рд▓, рддреЗрдЬрд╝, AWS S3 рд╕рдВрдЧрдд рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрдЯреЛрд░ рд╣реИред рдорд┐рдирд┐рдпреЛ рдХреЛ рдлрд╝реЛрдЯреЛ, рд╡реАрдбрд┐рдпреЛ, рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓реЗрдВ, рдмреИрдХрдЕрдк рдЬреИрд╕реЗ рдЕрд╕рдВрд░рдЪрд┐рдд рдбреЗрдЯрд╛ рдХреЛ рд╣реЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдорд┐рдирд┐рдпреЛ рд╡рд┐рддрд░рд┐рдд рдореЛрдб рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдорд╢реАрдиреЛрдВ рдкрд░ рд╕реНрдерд┐рдд рд╕рд╣рд┐рдд рдХрдИ рдбрд┐рд╕реНрдХ рдХреЛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрдЯреЛрд░реЗрдЬ рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдЗрд╕ рдкреЛрд╕реНрдЯ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдорд┐рдирд┐рдпреЛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реИ рддрд╛рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗрд╡рд▓ рдЕрдкрдиреА рдмрд╛рд▓реНрдЯреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХреЗред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдорд┐рдирд┐рдпреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ:
- S3 (NAS рдФрд░ SAN рдкрд░ рд╣реЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдЫреЛрдЯреЗ рдФрд░ рдордзреНрдпрдо рднрдВрдбрд╛рд░рдг) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╣реБрдВрдЪ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЧреИрд░-рдкреНрд░рддрд┐рдХреГрддрд┐ рднрдВрдбрд╛рд░рдг;
- S3 рдПрдХреНрд╕реЗрд╕ (рд╡рд┐рдХрд╛рд╕ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП) рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЧреИрд░-рдкреНрд░рддрд┐рдХреГрддрд┐ рднрдВрдбрд╛рд░рдг;
- S3 рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╣реБрдВрдЪ рдХреЗ рд╕рд╛рде рдПрдХ рд░реИрдХ рдореЗрдВ рд╕рд░реНрд╡рд░ рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рд╕рдореВрд╣ рдкрд░ рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЗ рд╕рд╛рде рднрдВрдбрд╛рд░рдг (рд░реИрдХ рдХреЗ рдмрд░рд╛рдмрд░ рд╡рд┐рдлрд▓рддрд╛ рдбреЛрдореЗрди рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓рддрд╛ рднрдВрдбрд╛рд░рдг)ред
рд░реЗрдбрд╣реИрдЯ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╣рдо рдЕрдиреМрдкрдЪрд╛рд░рд┐рдХ рдорд┐рдирд┐рдпреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
yum -y install yum-plugin-copr
yum copr enable -y lkiesow/minio
yum install -y minio minio-mc
рдЬрдирд░реЗрдЯ рдХрд░реЗрдВ рдФрд░ /etc/minio/minio.conf рдореЗрдВ MINIO_ACCESS_KEY рдФрд░ MINIO_SECRET_KEY рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред
# 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=
рдпрджрд┐ рдЖрдк Minio рд╕реЗ рдкрд╣рд▓реЗ nginx рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рддреЛ рдЖрдкрдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
--address 127.0.0.1:9000
рдкрд░
--address 0.0.0.0:9000
рдЖрдЗрдП рдорд┐рдирд┐рдпреЛ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВред
systemctl start minio
рд╣рдо рдорд┐рдирд┐рдпреЛ рд╕реЗ рдПрдХ рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдорд╛рдпрдорд┐рдирд┐рдпреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
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": ""
}
]
}
рдкрд╛рд╕рд╡рд░реНрдб test1 рдХреЗ рд╕рд╛рде рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ user12345 рдмрдирд╛рдПрдВред
minio-mc admin user add myminio user1 test12345
рдкрд╛рд╕рд╡рд░реНрдб test2 рдХреЗ рд╕рд╛рде рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ user54321 рдмрдирд╛рдПрдВред
minio-mc admin user add myminio user2 test54321
рд╣рдо Minio рдореЗрдВ user1-policy.json рдлрд╝рд╛рдЗрд▓ рд╕реЗ user1-policy рдирд╛рдо рд╕реЗ рдПрдХ рдиреАрддрд┐ рдмрдирд╛рддреЗ рд╣реИрдВред
minio-mc admin policy add myminio user1-policy user1-policy.json
рд╣рдо Minio рдореЗрдВ user2-policy.json рдлрд╝рд╛рдЗрд▓ рд╕реЗ user2-policy рдирд╛рдо рд╕реЗ рдПрдХ рдиреАрддрд┐ рдмрдирд╛рддреЗ рд╣реИрдВред
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_ACCESS_KEY=user1 рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдорд┐рдирд┐рдпреЛ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реИрдВред User1bucket рдмрдХреЗрдЯ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИред
рдмрдХреЗрдЯ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдиреАрддрд┐ рдореЗрдВ рдХреЛрдИ рд╕рдВрдЧрдд рдХрд╛рд░реНрд░рд╡рд╛рдИ рдирд╣реАрдВ рд╣реИред
рдЖрдЗрдП рдмрдХреЗрдЯ user1bucket рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБред
рдЖрдЗрдП MINIO_ACCESS_KEY=user2 рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдорд┐рдирд┐рдпреЛ рд╕реЗ рдЬреБрдбрд╝реЗрдВред User2bucket рдмрдХреЗрдЯ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИред
рдФрд░ рд╣рдо user1bucket рдпрд╛ user1bucket рдХреА рдлрд╝рд╛рдЗрд▓реЗрдВ рдирд╣реАрдВ рджреЗрдЦрддреЗ рд╣реИрдВред
рдорд┐рдирд┐рдпреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдЪреИрдЯ рдмрдирд╛рдИ рдЧрдИ
рд╕реНрд░реЛрдд: www.habr.com