Minio er en enkel, rask, AWS S3-kompatibel objektbutikk. Minio er designet for å være vert for ustrukturerte data som bilder, videoer, loggfiler, sikkerhetskopier. minio støtter også distribuert modus, som gir muligheten til å koble flere disker til én objektlagringsserver, inkludert de som er plassert på forskjellige maskiner.
Hensikten med dette innlegget er å konfigurere minio slik at hver bruker kun kan jobbe med sin egen bøtte.
Generelt er Minio egnet for følgende tilfeller:
- ikke-replikeringslagring på toppen av et pålitelig filsystem med tilgang via S3 (liten og mellomstor lagring hostet på NAS og SAN);
- ikke-replikert lagring på toppen av et upålitelig filsystem med S3-tilgang (for utvikling og testing);
- lagring med replikering på en liten gruppe servere i ett rack med tilgang via S3-protokollen (failover-lagring med et feildomene lik racket).
På RedHat-systemer kobler vi til det uoffisielle Minio-lageret.
yum -y install yum-plugin-copr
yum copr enable -y lkiesow/minio
yum install -y minio minio-mc
Generer og legg til MINIO_ACCESS_KEY og MINIO_SECRET_KEY i /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=
Hvis du ikke vil bruke nginx før Minio, må du endre.
--address 127.0.0.1:9000
på
--address 0.0.0.0:9000
La oss lansere Minio.
systemctl start minio
Vi oppretter en forbindelse til Minio kalt myminio.
minio-mc config host add myminio http://localhost:9000 MINIO_ACCESS_KEY
MINIO_SECRET_KEY
Opprett en bøtte user1bucket.
minio-mc mb myminio/user1bucket
Opprett en bøtte user2bucket.
minio-mc mb myminio/user2bucket
Opprett en policyfil 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": ""
}
]
}
Opprett en policyfil 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": ""
}
]
}
Opprett en bruker bruker1 med passordet test12345.
minio-mc admin user add myminio user1 test12345
Opprett en bruker bruker2 med passordet test54321.
minio-mc admin user add myminio user2 test54321
Vi lager en policy i Minio kalt user1-policy fra filen user1-policy.json.
minio-mc admin policy add myminio user1-policy user1-policy.json
Vi lager en policy i Minio kalt user2-policy fra filen user2-policy.json.
minio-mc admin policy add myminio user2-policy user2-policy.json
Bruk bruker1-policyen på brukeren bruker1.
minio-mc admin policy set myminio user1-policy user=user1
Bruk bruker2-policyen på brukeren bruker2.
minio-mc admin policy set myminio user2-policy user=user2
Kontrollere koblingen av policyer til brukere
minio-mc admin user list myminio
Å sjekke koblingen av policyer til brukere vil se omtrent slik ut
enabled user1 user1-policy
enabled user2 user2-policy
For klarhet, gå gjennom nettleseren til adressen
Vi ser at vi koblet til Minio under MINIO_ACCESS_KEY=bruker1. User1bucket-bøtten er tilgjengelig for oss.
Det vil ikke være mulig å opprette en bøtte, siden det ikke er noen tilsvarende handling i policyen.
La oss lage en fil i bøtte user1bucket.
La oss koble til Minio under MINIO_ACCESS_KEY=bruker2. User2bucket-bøtten er tilgjengelig for oss.
Og vi ser verken user1bucket eller filer fra user1bucket.
Laget en Telegram-chat ved hjelp av Minio
Kilde: www.habr.com