Minio is een eenvoudige, snelle en AWS S3-compatibele objectopslag. Minio is ontworpen voor het hosten van ongestructureerde gegevens zoals foto's, video's, logbestanden en back-ups. In Minio is ook een gedistribueerde modus beschikbaar, die de mogelijkheid biedt om meerdere schijven aan ƩƩn objectopslagserver te koppelen, zelfs als deze op verschillende machines zijn geplaatst.
Het doel van deze post is om Minio in te stellen zodat elke gebruiker alleen met zijn eigen bucket kan werken.
Over het algemeen is Minio geschikt voor de volgende gebruiksgevallen:
- opslag zonder replicatie bovenop een betrouwbare bestandssysteem met toegang via S3 (kleine en middelgrote opslag, gehost op NAS en SAN);
- opslag zonder replicatie bovenop een onbetrouwbaar bestandssysteem met toegang via S3 (voor ontwikkeling en testen);
- opslag met replicatie op een kleine groep servers in ƩƩn rek met toegang via het S3-protocol (faalbestendige opslag met een faalgebied gelijk aan de rek).
Op RedHat-systemen activeren we de onofficiƫle Minio-repository.
yum -y install yum-plugin-copr
yum copr enable -y lkiesow/minio
yum install -y minio minio-mcGenereer en voeg de MINIO_ACCESS_KEY en MINIO_SECRET_KEY toe aan /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=Als je nginx niet voor Minio gaat gebruiken, moet je dit aanpassen.
--address 127.0.0.1:9000en een werkende opdracht krijgen.
--address 0.0.0.0:9000Start Minio.
systemctl start minioMaak een verbinding met Minio genaamd myminio.
minio-mc config host add myminio http://localhost:9000 MINIO_ACCESS_KEY
MINIO_SECRET_KEYMaak de bucket user1bucket aan.
minio-mc mb myminio/user1bucketMaak de bucket user2bucket aan.
minio-mc mb myminio/user2bucketMaak het beleid bestand user1-policy.json aan.
{
"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": ""
}
]
}Maak het beleid bestand user2-policy.json aan.
{
"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": ""
}
]
}We create user user1 with password test12345.
minio-mc admin user add myminio user1 test12345We create user user2 with password test54321.
minio-mc admin user add myminio user2 test54321We create a policy in Minio called user1-policy from the file user1-policy.json.
minio-mc admin policy add myminio user1-policy user1-policy.jsonWe create a policy in Minio called user2-policy from the file user2-policy.json.
minio-mc admin policy add myminio user2-policy user2-policy.jsonWe apply the policy user1-policy to user user1.
minio-mc admin policy set myminio user1-policy user=user1We apply the policy user2-policy to user user2.
minio-mc admin policy set myminio user2-policy user=user2We check the connection of policies to users
minio-mc admin user list myminioThe check of policy connections to users will look something like this
enabled user1 user1-policy
enabled user2 user2-policyFor clarity, we access through the browser at the address
We see that we are connected to Minio under MINIO_ACCESS_KEY=user1. The bucket user1bucket is available to us.

Creating a bucket will not be possible, as there is no corresponding Action in the policy.

We will create a file in bucket user1bucket.

We will connect to Minio under MINIO_ACCESS_KEY=user2. The bucket user2bucket is available to us.
And we do not see either user1bucket or files from user1bucket.

I created a Telegram chat about Minio
Bron: habr.com
