Ρύθμιση του Minio έτσι ώστε ο χρήστης να μπορεί να δουλεύει μόνο με τον δικό του κάδο

Το Minio είναι ένα απλό, γρήγορο, συμβατό με το AWS S3 κατάστημα αντικειμένων. Το Minio έχει σχεδιαστεί για να φιλοξενεί μη δομημένα δεδομένα όπως φωτογραφίες, βίντεο, αρχεία καταγραφής, αντίγραφα ασφαλείας. Το minio υποστηρίζει επίσης κατανεμημένη λειτουργία, η οποία παρέχει τη δυνατότητα σύνδεσης πολλών δίσκων σε έναν διακομιστή αποθήκευσης αντικειμένων, συμπεριλαμβανομένων εκείνων που βρίσκονται σε διαφορετικά μηχανήματα.

Ο σκοπός αυτής της ανάρτησης είναι να διαμορφώσει το minio έτσι ώστε κάθε χρήστης να μπορεί να δουλεύει μόνο με το δικό του bucket.

Γενικά, το Minio είναι κατάλληλο για τις ακόλουθες περιπτώσεις:

  • αποθήκευση χωρίς αναπαραγωγή πάνω από ένα αξιόπιστο σύστημα αρχείων με πρόσβαση μέσω S3 (μικρός και μεσαίος χώρος αποθήκευσης που φιλοξενείται σε NAS και SAN).
  • μη αναπαραγόμενος χώρος αποθήκευσης πάνω από ένα αναξιόπιστο σύστημα αρχείων με πρόσβαση S3 (για ανάπτυξη και δοκιμή).
  • αποθήκευση με αναπαραγωγή σε μια μικρή ομάδα διακομιστών σε ένα rack με πρόσβαση μέσω του πρωτοκόλλου S3 (αποθήκευση ανακατεύθυνσης με τομέα αποτυχίας ίσο με το rack).

Στα συστήματα RedHat συνδέουμε το ανεπίσημο αποθετήριο Minio.

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

Δημιουργήστε και προσθέστε στα MINIO_ACCESS_KEY και MINIO_SECRET_KEY στο /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=

Εάν δεν θα χρησιμοποιήσετε το nginx πριν από το Minio, τότε πρέπει να το αλλάξετε.

--address 127.0.0.1:9000

επί

--address 0.0.0.0:9000

Ας ξεκινήσουμε το Minio.

systemctl start minio

Δημιουργούμε μια σύνδεση με το Minio που ονομάζεται myminio.

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

Δημιουργήστε ένα bucket user1bucket.

minio-mc mb myminio/user1bucket

Δημιουργήστε ένα bucket user2bucket.

minio-mc mb myminio/user2bucket

Δημιουργήστε ένα αρχείο πολιτικής 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": ""
    }
  ]
}

Δημιουργήστε ένα αρχείο πολιτικής 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": ""
    }
  ]
}

Δημιουργήστε έναν χρήστη χρήστη1 με τον κωδικό πρόσβασης test12345.

minio-mc admin user add myminio user1 test12345

Δημιουργήστε έναν χρήστη χρήστη2 με τον κωδικό πρόσβασης test54321.

minio-mc admin user add myminio user2 test54321

Δημιουργούμε μια πολιτική στο Minio που ονομάζεται user1-policy από το αρχείο user1-policy.json.

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

Δημιουργούμε μια πολιτική στο Minio που ονομάζεται user2-policy από το αρχείο user2-policy.json.

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

Εφαρμόστε την πολιτική user1-policy στον χρήστη user1.

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

Εφαρμόστε την πολιτική user2-policy στον χρήστη user2.

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

Έλεγχος της σύνδεσης των πολιτικών με τους χρήστες

minio-mc admin user list myminio

Ο έλεγχος της σύνδεσης των πολιτικών με τους χρήστες θα μοιάζει κάπως έτσι

enabled    user1                 user1-policy
enabled    user2                 user2-policy

Για σαφήνεια, μεταβείτε από το πρόγραμμα περιήγησης στη διεύθυνση http://ip-сервера-где-запущен-minio:9000/minio/

Βλέπουμε ότι συνδεθήκαμε στο Minio κάτω από MINIO_ACCESS_KEY=user1. Ο κάδος user1bucket είναι διαθέσιμος σε εμάς.

Ρύθμιση του Minio έτσι ώστε ο χρήστης να μπορεί να δουλεύει μόνο με τον δικό του κάδο

Δεν θα είναι δυνατή η δημιουργία κάδου, αφού δεν υπάρχει αντίστοιχη Ενέργεια στην πολιτική.

Ρύθμιση του Minio έτσι ώστε ο χρήστης να μπορεί να δουλεύει μόνο με τον δικό του κάδο

Ας δημιουργήσουμε ένα αρχείο στο bucket user1bucket.

Ρύθμιση του Minio έτσι ώστε ο χρήστης να μπορεί να δουλεύει μόνο με τον δικό του κάδο

Ας συνδεθούμε στο Minio κάτω από MINIO_ACCESS_KEY=user2. Ο κάδος user2bucket είναι διαθέσιμος σε εμάς.

Και δεν βλέπουμε ούτε user1bucket ούτε αρχεία από user1bucket.

Ρύθμιση του Minio έτσι ώστε ο χρήστης να μπορεί να δουλεύει μόνο με τον δικό του κάδο

Δημιούργησε μια συνομιλία Telegram χρησιμοποιώντας το Minio https://t.me/minio_s3_ru

Πηγή: www.habr.com