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 :
- Policy : définit les droits (actions autorisées sur S3)
- User : identité logique à laquelle on attache des policies
- 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
mcdisponible - Alias
mcconfiguré 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)