Konfiguration von Minio, damit der Benutzer nur mit seinem eigenen Bucket arbeiten kann

Minio ist ein einfaches, schnelles und mit AWS S3 kompatibles Objektspeicher-System. Minio wurde entwickelt, um unstrukturierte Daten wie Fotos, Videos, Protokolldateien und Backups zu speichern. Minio unterstützt auch den verteilten Modus, der die Verbindung mehrerer Festplatten zu einem Objektspeicherserver ermöglicht, auch wenn diese auf verschiedenen Maschinen liegen.

Ziel dieses Beitrags ist es, Minio so zu konfigurieren, dass jeder Benutzer nur mit seinem eigenen Bucket arbeiten kann.

Im Allgemeinen eignet sich Minio für folgende Anwendungsfälle:

  • Speicherung ohne Replikation auf einem zuverlässigen Dateisystem mit S3-Zugriff (kleine und mittlere Speicherlösungen, die auf NAS und SAN gehostet werden);
  • Speicherung ohne Replikation auf einem unzuverlässigen Dateisystem mit S3-Zugriff (für Entwicklung und Testing);
  • Speicherung mit Replikation auf einer kleinen Gruppe von Servern in einem Rack mit Zugriff über das S3-Protokoll (ausfallsichere Speicherung mit einem Ausfall-Domäne gleich dem Rack).

Auf RedHat-Systemen binden wir das inoffizielle Minio-Repository ein.

yum -y install yum-plugin-copr
yum copr enable -y lkiesow/minio
yum install -y minio minio-mc

Generieren und hinzufügen von MINIO_ACCESS_KEY und MINIO_SECRET_KEY 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=

Wenn Sie nginx nicht vor Minio verwenden, müssen Änderungen vorgenommen werden.

--address 127.0.0.1:9000

findet man

--address 0.0.0.0:9000

Minio wird gestartet.

systemctl start minio

Wir erstellen eine Verbindung zu Minio mit dem Namen myminio.

minio-mc config host add myminio http://localhost:9000 MINIO_ACCESS_KEY 
MINIO_SECRET_KEY

Wir erstellen den Bucket user1bucket.

minio-mc mb myminio/user1bucket

Wir erstellen den Bucket user2bucket.

minio-mc mb myminio/user2bucket

Wir erstellen die Datei der Richtlinie 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 der Richtlinie 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": ""
    }
  ]
}

Wir erstellen den Benutzer user1 mit dem Passwort test12345.

minio-mc admin user add myminio user1 test12345

Wir erstellen den Benutzer user2 mit dem Passwort test54321.

minio-mc admin user add myminio user2 test54321

Wir erstellen eine Richtlinie in Minio namens user1-policy aus der Datei user1-policy.json.

minio-mc admin policy add myminio user1-policy user1-policy.json

Wir erstellen eine Richtlinie in Minio namens user2-policy aus der Datei user2-policy.json.

minio-mc admin policy add myminio user2-policy user2-policy.json

Wir wenden die Richtlinie user1-policy auf den Benutzer user1 an.

minio-mc admin policy set myminio user1-policy user=user1

Wir wenden die Richtlinie user2-policy auf den Benutzer user2 an.

minio-mc admin policy set myminio user2-policy user=user2

Wir überprüfen die Zuordnung der Richtlinien zu den Benutzern.

minio-mc admin user list myminio

Die Überprüfung der Zuordnung der Richtlinien zu den Benutzern sieht ungefähr so aus:

enabled    user1                 user1-policy
enabled    user2                 user2-policy

Zur Visualisierung gehen wir über den Browser zu der Adresse http://ip-des-servers-auf-dem-minio-ausgeführt-wird:9000/minio/

Wir sehen, dass wir uns bei Minio als MINIO_ACCESS_KEY=user1 angemeldet haben. Der Bucket user1bucket steht uns zur Verfügung.

Konfiguration von Minio, damit der Benutzer nur mit seinem eigenen Bucket arbeiten kann

Ein Bucket kann nicht erstellt werden, da die entsprechende Aktion in der Richtlinie fehlt.

Konfiguration von Minio, damit der Benutzer nur mit seinem eigenen Bucket arbeiten kann

Wir werden eine Datei im Bucket user1bucket erstellen.

Konfiguration von Minio, damit der Benutzer nur mit seinem eigenen Bucket arbeiten kann

Wir verbinden uns mit Minio unter MINIO_ACCESS_KEY=user2. Der Bucket user2bucket steht uns zur Verfügung.

Und wir sehen weder user1bucket noch Dateien aus user1bucket.

Konfiguration von Minio, damit der Benutzer nur mit seinem eigenen Bucket arbeiten kann

Ich habe einen Telegram-Chat über Minio erstellt. https://t.me/minio_s3_ru

Quelle: habr.com

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster