Minio is een eenvoudige, snelle, AWS S3-compatibele objectwinkel. Minio is ontworpen om ongestructureerde gegevens te hosten, zoals foto's, video's, logbestanden en back-ups. minio ondersteunt ook de gedistribueerde modus, die de mogelijkheid biedt om meerdere schijven aan te sluiten op één objectopslagserver, inclusief schijven die zich op verschillende machines bevinden.
Het doel van dit bericht is om minio zo te configureren dat elke gebruiker alleen met zijn eigen bucket kan werken.
Over het algemeen is Minio geschikt voor de volgende gevallen:
- niet-replicatieopslag bovenop een betrouwbaar bestandssysteem met toegang via S3 (kleine en middelgrote opslag gehost op NAS en SAN);
- niet-gerepliceerde opslag bovenop een onbetrouwbaar bestandssysteem met S3-toegang (voor ontwikkeling en testen);
- opslag met replicatie op een kleine groep servers in één rack met toegang via het S3-protocol (failover-opslag met een storingsdomein gelijk aan het rack).
Op RedHat-systemen verbinden we de onofficiële Minio-repository.
yum -y install yum-plugin-copr
yum copr enable -y lkiesow/minio
yum install -y minio minio-mc
Genereer en voeg MINIO_ACCESS_KEY en MINIO_SECRET_KEY toe in /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 u nginx niet vóór Minio gaat gebruiken, moet u dit wijzigen.
--address 127.0.0.1:9000
op
--address 0.0.0.0:9000
Laten we Minio lanceren.
systemctl start minio
We maken een verbinding met Minio genaamd myminio.
minio-mc config host add myminio http://localhost:9000 MINIO_ACCESS_KEY
MINIO_SECRET_KEY
Maak een bucket user1bucket.
minio-mc mb myminio/user1bucket
Maak een bucket user2bucket.
minio-mc mb myminio/user2bucket
Maak een beleidsbestand 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": ""
}
]
}
Maak een beleidsbestand 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": ""
}
]
}
Maak een gebruiker user1 aan met het wachtwoord test12345.
minio-mc admin user add myminio user1 test12345
Maak een gebruiker user2 aan met het wachtwoord test54321.
minio-mc admin user add myminio user2 test54321
We maken een beleid in Minio met de naam user1-policy uit het bestand user1-policy.json.
minio-mc admin policy add myminio user1-policy user1-policy.json
We maken een beleid in Minio met de naam user2-policy uit het bestand user2-policy.json.
minio-mc admin policy add myminio user2-policy user2-policy.json
Pas het user1-beleidsbeleid toe op de gebruiker user1.
minio-mc admin policy set myminio user1-policy user=user1
Pas het user2-beleidsbeleid toe op de gebruiker user2.
minio-mc admin policy set myminio user2-policy user=user2
Het controleren van de verbinding van beleid met gebruikers
minio-mc admin user list myminio
Het controleren van de verbinding van beleid met gebruikers zal er ongeveer zo uitzien
enabled user1 user1-policy
enabled user2 user2-policy
Voor de duidelijkheid, ga via de browser naar het adres
We zien dat we verbinding hebben gemaakt met Minio onder MINIO_ACCESS_KEY=user1. De user1bucket-bucket is voor ons beschikbaar.
Het is niet mogelijk om een bucket te maken, omdat er geen overeenkomstige actie in het beleid staat.
Laten we een bestand maken in de bucket user1bucket.
Laten we verbinding maken met Minio onder MINIO_ACCESS_KEY=user2. De user2bucket-bucket is voor ons beschikbaar.
En we zien geen user1bucket of bestanden van user1bucket.
Een Telegram-chat gemaakt met Minio
Bron: www.habr.com