Aller au contenu principal

Mise en route MinIO – Hublot

Objectif

Permettre à l’application Hublot :

  • de créer des buckets
  • de lister leur contenu
  • de lire et écrire des objets

Sans jamais utiliser les credentials root de MinIO.

Modèle de sécurité MinIO

MinIO repose sur trois concepts distincts :

  1. Policy : définit les droits (actions autorisées sur S3)
  2. User : identité logique à laquelle on attache des policies
  3. Service Account (App) : génère une paire Access Key / Secret Key utilisable par une application

Relation :

Policy → User → Service Account → Application

L’application n’utilise que l’Access Key et le Secret Key.

Pré-requis

  • MinIO opérationnel
  • Client mc disponible
  • Alias mc configuré avec un compte admin MinIO
mc alias set local http://127.0.0.1:9000 MINIO_ROOT_USER MINIO_ROOT_PASSWORD

Étape 1 — Création de la policy

Policy autorisant :

  • création de buckets
  • listing de buckets
  • listing et manipulation d’objets
mc admin policy create local hublot-bucket-rw <(cat <<'EOF'
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:CreateBucket",
"s3:ListAllMyBuckets",
"s3:ListBucket",
"s3:HeadBucket"
],
"Resource": ["arn:aws:s3:::hublot-*"]
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject"
],
"Resource": ["arn:aws:s3:::hublot-*/*"]
}
]
}
EOF
)

Étape 2 — Création du user

mc admin user add local hublot-app

Le mot de passe demandé sert uniquement pour :

  • la console MinIO
  • l’usage interactif avec mc

Il n’est jamais utilisé par l’application.

Étape 3 — Attacher la policy au user

mc admin policy attach local hublot-bucket-rw --user hublot-app

Étape 4 — Création des credentials API (Service Account)

mc admin user svcacct add local hublot-app

Commande retournant :

  • Access Key
  • Secret Key

Ces valeurs doivent être copiées immédiatement. Le Secret Key ne pourra jamais être relu.

Étape 5 — Configuration de l’application

Variables d’environnement à injecter dans Hublot :

MINIO_ACCESS_KEY=AKIAxxxxxxxxxxxx
MINIO_SECRET_KEY=yyyyyyyyyyyyyyyyyyyy

Exemple d’initialisation du client MinIO :

new Client({
endPoint: 'minio.example.com',
port: 9000,
useSSL: false,
accessKey: process.env.MINIO_ACCESS_KEY!,
secretKey: process.env.MINIO_SECRET_KEY!,
});

Vérifications utiles

Lister les users :

mc admin user list local

Lister les service accounts d’un user :

mc admin user svcacct ls local hublot-app

Lister les buckets accessibles :

mc ls local

Nettoyage et rotation

Supprimer un service account :

mc admin user svcacct rm local hublot-app ACCESS_KEY

Supprimer un user :

mc admin policy detach local hublot-bucket-rw --user hublot-app
mc admin user remove local hublot-app

Notes importantes

  • Le quota des buckets n’est pas accessible via l’API S3 standard
  • La gestion des quotas nécessite des droits admin MinIO
  • Il est recommandé de séparer les rôles entre application (S3 uniquement) et opérations (admin MinIO)