Configurer Minio afin que l'utilisateur puisse travailler uniquement avec son propre bucket

Minio est un stockage d'objets simple, rapide et compatible avec AWS S3. Minio est conçu pour le stockage de données non structurées telles que des photos, des vidéos, des fichiers journaux et des sauvegardes. Minio prend également en charge le mode distribué, qui permet de connecter plusieurs disques d'un serveur de stockage d'objets, y compris ceux situés sur des machines différentes.

L'objectif de ce post est de configurer Minio afin que chaque utilisateur puisse travailler uniquement avec son propre bucket.

En général, Minio est adapté aux cas suivants :

  • stockage sans rĂ©plication sur un systĂšme de fichiers fiable avec accĂšs via S3 (petits et moyens stockages hĂ©bergĂ©s sur NAS et SAN) ;
  • stockage sans rĂ©plication sur un systĂšme de fichiers non fiable avec accĂšs via S3 (pour le dĂ©veloppement et les tests) ;
  • stockage avec rĂ©plication sur un petit groupe de serveurs dans un mĂȘme rack avec accĂšs via le protocole S3 (stockage tolĂ©rant aux pannes avec un domaine de dĂ©faillance Ă©gal au rack).

Sur les systÚmes RedHat, nous connectons le dépÎt non officiel de Minio.

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

Générez et ajoutez MINIO_ACCESS_KEY et MINIO_SECRET_KEY dans /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=

Si vous n'utilisez pas nginx devant Minio, vous devrez changer.

--address 127.0.0.1:9000

sur

--address 0.0.0.0:9000

Démarrons Minio.

systemctl start minio

Créons une connexion à Minio appelée myminio.

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

Créons le bucket user1bucket.

minio-mc mb myminio/user1bucket

Créons le bucket user2bucket.

minio-mc mb myminio/user2bucket

Créons le fichier de politique 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": ""
    }
  ]
}

Créons le fichier de politique 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": ""
    }
  ]
}

Créons l'utilisateur user1 avec le mot de passe test12345.

minio-mc admin user add myminio user1 test12345

Créons l'utilisateur user2 avec le mot de passe test54321.

minio-mc admin user add myminio user2 test54321

Créons une politique dans Minio intitulée user1-policy à partir du fichier user1-policy.json.

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

Créons une politique dans Minio intitulée user2-policy à partir du fichier user2-policy.json.

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

Appliquons la politique user1-policy Ă  l'utilisateur user1.

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

Appliquons la politique user2-policy Ă  l'utilisateur user2.

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

Vérifions la connexion des politiques aux utilisateurs

minio-mc admin user list myminio

La vérification de la connexion des politiques aux utilisateurs sera approximativement la suivante

enabled    user1                 user1-policy
enabled    user2                 user2-policy

Pour plus de clartĂ©, accĂ©dons via le navigateur Ă  l'adresse http://ip-serveur-oĂč-minio-est-exĂ©cutĂ©:9000/minio/

Nous voyons que nous sommes connectés à Minio avec MINIO_ACCESS_KEY=user1. Le bucket user1bucket est disponible pour nous.

Configurer Minio afin que l'utilisateur puisse travailler uniquement avec son propre bucket

Il ne sera pas possible de créer un bucket, car l'action correspondante dans la politique n'est pas présente.

Configurer Minio afin que l'utilisateur puisse travailler uniquement avec son propre bucket

Créons un fichier dans le bucket user1bucket.

Configurer Minio afin que l'utilisateur puisse travailler uniquement avec son propre bucket

Connectons-nous Ă  Minio avec MINIO_ACCESS_KEY=user2. Le bucket user2bucket est disponible pour nous.

Et nous ne voyons ni user1bucket ni les fichiers de user1bucket.

Configurer Minio afin que l'utilisateur puisse travailler uniquement avec son propre bucket

J'ai créé un chat Telegram sur Minio. https://t.me/minio_s3_ru

Source : habr.com

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster