Minio so einrichten, dass der Benutzer nur mit seinem eigenen Bucket arbeiten kann

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 http://ip-сервера-где-запущен-minio:9000/minio/

Wir sehen, dass wir uns unter MINIO_ACCESS_KEY=user1 mit Minio verbunden haben. Der Bucket user1bucket steht uns zur Verfügung.

Minio so einrichten, dass der Benutzer nur mit seinem eigenen Bucket arbeiten kann

Es ist nicht möglich, einen Bucket zu erstellen, da die Richtlinie keine entsprechende Aktion enthält.

Minio so einrichten, dass der Benutzer nur mit seinem eigenen Bucket arbeiten kann

Erstellen wir eine Datei im Bucket user1bucket.

Minio so einrichten, dass der Benutzer nur mit seinem eigenen Bucket arbeiten kann

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.

Minio so einrichten, dass der Benutzer nur mit seinem eigenen Bucket arbeiten kann

Mit Minio einen Telegram-Chat erstellt https://t.me/minio_s3_ru

Source: habr.com