Configurazione di Minio affinché l'utente possa lavorare solo con il proprio bucket

Minio è un archivio oggetti semplice, rapido e compatibile con AWS S3. Minio è progettato per memorizzare dati non strutturati, come foto, video, file di registro e backup. In Minio è supportata anche la modalità distribuita, che consente di collegare a un singolo server di archiviazione oggetti molteplici dischi, anche se collocati su macchine diverse.

L'obiettivo di questo post è configurare Minio in modo che ogni utente possa lavorare solo con il proprio bucket.

In generale, Minio è adatto ai seguenti casi d'uso:

  • archivio senza replica su un file system affidabile con accesso S3 (archivi piccoli e medi ospitati su NAS e SAN);
  • archivio senza replica su un file system non affidabile con accesso S3 (per sviluppo e test);
  • archivio con replica su un piccolo gruppo di server in un singolo rack con accesso tramite protocollo S3 (archivio resistente agli errori con dominio di guasto pari al rack).

Nei sistemi RedHat colleghiamo il repository non ufficiale di Minio.

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

Generiamo e aggiungiamo MINIO_ACCESS_KEY e 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=

Se non utilizzerai nginx davanti a Minio, devi cambiare.

--address 127.0.0.1:9000

in

--address 0.0.0.0:9000

Avviamo Minio.

systemctl start minio

Creiamo una connessione a Minio chiamata myminio.

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

Creiamo il bucket user1bucket.

minio-mc mb myminio/user1bucket

Creiamo il bucket user2bucket.

minio-mc mb myminio/user2bucket

Creiamo il file di politica 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": ""
    }
  ]
}

Creiamo il file di politica 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": ""
    }
  ]
}

Creiamo l'utente user1 con password test12345.

minio-mc admin user add myminio user1 test12345

Creiamo l'utente user2 con password test54321.

minio-mc admin user add myminio user2 test54321

Creiamo una politica in Minio chiamata user1-policy dal file user1-policy.json.

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

Creiamo una politica in Minio chiamata user2-policy dal file user2-policy.json.

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

Applichiamo la politica user1-policy all'utente user1.

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

Applichiamo la politica user2-policy all'utente user2.

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

Verifichiamo la connessione delle politiche agli utenti

minio-mc admin user list myminio

La verifica della connessione delle politiche agli utenti sarà più o meno così

abilitato    user1                 user1-policy
abilitato    user2                 user2-policy

Per chiarezza, accediamo tramite browser all'indirizzo http://ip-server-dove-é-stato-lanciato-minio:9000/minio/

Vediamo che ci siamo connessi a Minio con MINIO_ACCESS_KEY=user1. Per noi è disponibile il bucket user1bucket.

Configurazione di Minio affinché l'utente possa lavorare solo con il proprio bucket

Non sarà possibile creare un bucket, poiché non c'è l'Action corrispondente nella politica.

Configurazione di Minio affinché l'utente possa lavorare solo con il proprio bucket

Creiamo un file nel bucket user1bucket.

Configurazione di Minio affinché l'utente possa lavorare solo con il proprio bucket

Colleghiamoci a Minio con MINIO_ACCESS_KEY=user2. Per noi è disponibile il bucket user2bucket.

E non vediamo né user1bucket né i file di user1bucket.

Configurazione di Minio affinché l'utente possa lavorare solo con il proprio bucket

Ho creato un chat Telegram su Minio https://t.me/minio_s3_ru

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster