Minio ist ein einfacher, schneller, AWS S3-kompatibler Objektspeicher. Minio ist für das Hosten unstrukturierter Daten wie Fotos, Videos, Protokolldateien und Backups konzipiert. minio unterstützt auch den verteilten Modus, der die Möglichkeit bietet, mehrere Festplatten an einen Objektspeicherserver anzuschließen, auch solche, die sich auf verschiedenen Maschinen befinden.
Der Zweck dieses Beitrags besteht darin, minio so zu konfigurieren, dass jeder Benutzer nur mit seinem eigenen Bucket arbeiten kann.
Generell eignet sich Minio für folgende Fälle:
- Nicht replizierbarer Speicher auf einem zuverlässigen Dateisystem mit Zugriff über S3 (kleiner und mittlerer Speicher, gehostet auf NAS und SAN);
- nicht replizierter Speicher auf einem unzuverlässigen 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 (Failover-Speicher mit einer Fehlerdomäne, die dem Rack entspricht).
Auf RedHat-Systemen verbinden wir das inoffizielle Minio-Repository.
yum -y install yum-plugin-copr
yum copr enable -y lkiesow/minio
yum install -y minio minio-mc
Generieren und zu MINIO_ACCESS_KEY und MINIO_SECRET_KEY in /etc/minio/minio.conf hinzufügen.
# 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 es ändern.
--address 127.0.0.1:9000
auf
--address 0.0.0.0:9000
Lasst uns Minio starten.
systemctl start minio
Wir erstellen eine Verbindung zu Minio namens myminio.
minio-mc config host add myminio http://localhost:9000 MINIO_ACCESS_KEY
MINIO_SECRET_KEY
Erstellen Sie einen Bucket user1bucket.
minio-mc mb myminio/user1bucket
Erstellen Sie einen Bucket user2bucket.
minio-mc mb myminio/user2bucket
Erstellen Sie eine Richtliniendatei 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": ""
}
]
}
Erstellen Sie eine Richtliniendatei 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": ""
}
]
}
Erstellen Sie einen Benutzer user1 mit dem Passwort test12345.
minio-mc admin user add myminio user1 test12345
Erstellen Sie einen Benutzer user2 mit dem Passwort test54321.
minio-mc admin user add myminio user2 test54321
Wir erstellen in Minio eine Richtlinie namens user1-policy aus der Datei user1-policy.json.
minio-mc admin policy add myminio user1-policy user1-policy.json
Wir erstellen in Minio eine Richtlinie namens user2-policy aus der Datei user2-policy.json.
minio-mc admin policy add myminio user2-policy user2-policy.json
Wenden Sie die Richtlinie „user1-policy“ auf den Benutzer user1 an.
minio-mc admin policy set myminio user1-policy user=user1
Wenden Sie die Richtlinie „user2-policy“ auf den Benutzer user2 an.
minio-mc admin policy set myminio user2-policy user=user2
Überprüfen der Verbindung von Richtlinien zu Benutzern
minio-mc admin user list myminio
Die Überprüfung der Verbindung von Richtlinien zu Benutzern sieht in etwa so aus
enabled user1 user1-policy
enabled user2 user2-policy
Gehen Sie der Übersichtlichkeit halber über den Browser zur Adresse
Wir sehen, dass wir uns unter MINIO_ACCESS_KEY=user1 mit Minio verbunden haben. Der Bucket user1bucket steht uns zur Verfügung.
Es ist nicht möglich, einen Bucket zu erstellen, da die Richtlinie keine entsprechende Aktion enthält.
Erstellen wir eine Datei im Bucket user1bucket.
Stellen wir eine Verbindung zu Minio unter MINIO_ACCESS_KEY=user2 her. Der user2bucket-Bucket steht uns zur Verfügung.
Und wir sehen weder user1bucket noch Dateien von user1bucket.
Mit Minio einen Telegram-Chat erstellt
Source: habr.com