Aller au contenu principal

Utilisateurs et API d'administration

Le mode multi-utilisateur démarre quand S3_USERS_FILE est défini. Chaque utilisateur a un user_id, une clé d'accès et une clé secrète. Un seul utilisateur est root.

Fichier des utilisateurs​

Si le fichier n'existe pas, le serveur le crée au premier démarrage avec un utilisateur root et des clés aléatoires (mode 0600), et affiche la clé d'accès. Le secret se trouve dans le fichier.

Vous pouvez aussi l'écrire vous-même avant le premier démarrage :

{
"users": [
{"user_id": "root", "display_name": "Root", "access_key_id": "<20 random chars>", "secret_access_key": "<40 random chars>", "is_root": true},
{"user_id": "backup", "display_name": "Backup job", "access_key_id": "<20 random chars>", "secret_access_key": "<40 random chars>"}
]
}

Règles : un seul root, des user_id et access_key_id uniques, aucun champ vide. Un fichier invalide empêche le serveur de démarrer. Sans API d'administration, modifiez le fichier et redémarrez.

Activer l'API d'administration​

Donnez à S3_ADMIN_API_KEY une longue valeur aléatoire :

openssl rand -hex 32

L'API répond sur /_loch/users et s'authentifie avec Authorization: Bearer <key>. Elle écrit alors le fichier des utilisateurs, qui doit donc être modifiable.

attention

L'API d'administration n'est protégée que par cette clé. N'exposez jamais /_loch/users sur Internet : bloquez-le au niveau du reverse proxy, comme dans Déploiement en production.

CLI loch-s3​

loch-s3 est livrée dans l'image Docker et dans les archives des releases.

export LOCH_SERVER=http://localhost:8080 LOCH_ADMIN_KEY=<admin key>
loch-s3 users create "Backup job"

create dérive le user_id du nom (backup-job), génère les clés et les affiche une seule fois.

CommandeAction
loch-s3 users listLister les utilisateurs
loch-s3 users get <user_id>Afficher un utilisateur
loch-s3 users create <name>Créer un utilisateur avec des clés générées (remplace les clés s'il existe)
loch-s3 users put <user_id> --display-name <name> --access-key <id> --secret-key <secret>Créer ou modifier avec vos propres clés
loch-s3 users delete <user_id>Supprimer un utilisateur
OptionVariableDéfaut
--serverLOCH_SERVERhttp://localhost:8080
--api-keyLOCH_ADMIN_KEYobligatoire
--access-key, --secret-key (put)LOCH_ACCESS_KEY, LOCH_SECRET_KEYobligatoire

Préférez les variables aux options : les options apparaissent dans la liste des processus.

Depuis le conteneur :

docker compose exec s3 sh -c 'loch-s3 --api-key "$S3_ADMIN_API_KEY" users list'

Bon à savoir​

  • L'API ne renvoie jamais les clés secrètes : notez-les à la création de l'utilisateur.
  • L'API ne peut ni créer, ni modifier, ni supprimer root. Changez les clés root dans le fichier.
  • Un nouvel utilisateur ne possède aucun bucket. Donnez-lui accès par une politique de bucket sur arn:loch:iam:::user/<user_id>, ou laissez-le créer ses buckets.
  • Supprimer un utilisateur conserve ses buckets. Un nouvel utilisateur avec le même user_id en redevient propriétaire.
  • Le mode utilisateur unique (S3_ACCESS_KEY_ID) n'a pas d'API d'administration.

Endpoints : Référence de l'API d'administration.