Minio ist ein einfaches, schnelles und mit AWS S3 compatibles Objektspeicher. Minio wurde für die Speicherung unstrukturierter Daten entwickelt, wie z. B. Fotos, Videos, Protokolldateien, Backups. In Minio wird auch der verteilte Modus (distributed mode) unterstützt, der die Möglichkeit bietet, mehrere Festplatten, die auch auf verschiedenen Maschinen liegen können, mit einem einzigen Objektspeicherserver zu verbinden.
Ziel dieses Beitrags ist es, Minio so einzurichten, dass jeder Benutzer nur mit seinem eigenen Bucket arbeiten kann.
Im Allgemeinen eignet sich Minio für folgende Anwendungsfälle:
- Speicher ohne Replikation über ein zuverlässiges Dateisystem mit S3-Zugriff (kleine und mittlere Speicher, die auf NAS und SAN gehostet werden);
- Speicher ohne Replikation über ein unzuverlässiges Dateisystem mit S3-Zugriff (für Entwicklung und Tests);
- Speicher mit Replikation auf einer kleinen Gruppe von Servern in einem Rack mit Zugriff über das S3-Protokoll (ausfallsicherer Storage mit einer Ausfallzone, die dem Rack entspricht).
In RedHat-Systemen fügen wir das inoffizielle Minio-Repository hinzu.
yum -y install yum-plugin-copr
yum copr enable -y lkiesow/minio
yum install -y minio minio-mcWir generieren und fügen MINIO_ACCESS_KEY und MINIO_SECRET_KEY in /etc/minio/minio.conf hinzu.
# 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=Wenn Sie nginx nicht vor Minio verwenden, müssen Sie das ändern.
--address 127.0.0.1:9000auf
--address 0.0.0.0:9000Wir starten Minio.
systemctl start minioWir erstellen eine Verbindung zu Minio mit dem Namen myminio.
minio-mc config host add myminio http://localhost:9000 MINIO_ACCESS_KEY
MINIO_SECRET_KEYWir erstellen den Bucket user1bucket.
minio-mc mb myminio/user1bucketWir erstellen den Bucket user2bucket.
minio-mc mb myminio/user2bucketWir erstellen die Datei policy 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": ""
}
]
}Wir erstellen die Datei policy user2-policy.json.
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:PutBucketPolicy",
"s3:GetBucketPolicy",
"s3:DeleteBucketPolicy",
"s3:ListAllMyBuckets",
"s3:ListBucket"
],
"Effect": "Erlauben",
"Resource": [
"arn:aws:s3:::user2bucket"
],
"Sid": ""
},
{
"Action": [
"s3:AbortMultipartUpload",
"s3:DeleteObject",
"s3:GetObject",
"s3:ListMultipartUploadParts",
"s3:PutObject"
],
"Effect": "Erlauben",
"Resource": [
"arn:aws:s3:::user2bucket/*"
],
"Sid": ""
}
]
}Wir erstellen den Benutzer user1 mit dem Passwort test12345.
minio-mc admin user add myminio user1 test12345Wir erstellen den Benutzer user2 mit dem Passwort test54321.
minio-mc admin user add myminio user2 test54321Wir erstellen eine Richtlinie in Minio mit dem Namen user1-policy aus der Datei user1-policy.json.
minio-mc admin policy add myminio user1-policy user1-policy.jsonWir erstellen eine Richtlinie in Minio mit dem Namen user2-policy aus der Datei user2-policy.json.
minio-mc admin policy add myminio user2-policy user2-policy.jsonWir wenden die Richtlinie user1-policy auf den Benutzer user1 an.
minio-mc admin policy set myminio user1-policy user=user1Wir wenden die Richtlinie user2-policy auf den Benutzer user2 an.
minio-mc admin policy set myminio user2-policy user=user2Wir überprüfen die Zuordnung der Richtlinien zu den Benutzern.
minio-mc admin user list myminioDie Überprüfung der Zuordnung der Richtlinien zu den Benutzern könnte ungefähr so aussehen.
aktiviert user1 user1-policy
aktiviert user2 user2-policyZur Veranschaulichung rufen wir im Browser die Adresse auf.
Wir sehen, dass wir uns mit MINIO_ACCESS_KEY=user1 bei Minio angemeldet haben. Uns steht der Bucket user1bucket zur Verfügung.

Einen Bucket zu erstellen ist nicht möglich, da die entsprechende Aktion in der Richtlinie fehlt.

Wir erstellen eine Datei im Bucket user1bucket.

Wir melden uns bei Minio mit MINIO_ACCESS_KEY=user2 an. Uns steht der Bucket user2bucket zur Verfügung.
Und wir sehen weder user1bucket noch Dateien aus user1bucket.

Ich habe einen Telegram-Chat zu Minio erstellt.
Quelle: habr.com
