Gérer les utilisateurs et les rôles Harbor
Le service managé Container Registry (Harbor) fournit un compte administrateur lors de la création. Pour une gestion fine des accès, créez des utilisateurs supplémentaires et configurez les permissions par projet.
L'API Numspot permet uniquement de gérer le mot de passe administrateur. La création d'utilisateurs et la gestion des permissions s'effectuent via l'interface Harbor ou l'API Harbor.
Se connecter à Harbor
Avant de gérer les utilisateurs, connectez-vous à l'interface Harbor :
- Récupérez le mot de passe administrateur (voir Récupérer le mot de passe) ;
- Accédez à
https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com; - Connectez-vous avec
adminet le mot de passe.
Types d'utilisateurs
Administrateur système
- Accès complet à toutes les fonctions ;
- Gestion des utilisateurs, projets et configuration système ;
- Accès à tous les projets.
Utilisateur standard
- Accès aux projets selon les permissions attribuées ;
- Opérations push/pull selon le rôle dans le projet.
Compte robot
- Utilisateur pour l'automatisation (CI/CD, Kubernetes) ;
- Permissions définies par projet ;
- Secret token au lieu de mot de passe.
Pour plus de détails sur les comptes robot, consultez Comptes robot.
Créer un utilisateur
Via l'interface Harbor
- Connectez-vous en tant qu'administrateur ;
- Accédez à Administration → Users ;
- Cliquez sur New User ;
- Renseignez les champs :
| Champ | Description |
|---|---|
| Username | Nom d'utilisateur unique |
| Adresse email | |
| Real Name | Nom complet (optionnel) |
| Password | Mot de passe |
| Confirm Password | Confirmation du mot de passe |
| Comments | Commentaires (optionnel) |
- Cliquez sur OK.
Via API
curl -X POST "https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/users" \
-u "admin:{password}" \
-H "Content-Type: application/json" \
-d '{
"username": "dev-user",
"email": "dev@example.com",
"realname": "Developer User",
"password": "SecurePassword123!",
"comment": "Developer account"
}'
Gérer les projets
Créer un projet
Via l'interface Harbor
- Cliquez sur New Project ;
- Renseignez :
| Champ | Description |
|---|---|
| Project Name | Nom du projet |
| Access Level | Public ou Private |
| Quota | Limite de stockage (optionnel) |
- Cliquez sur OK.
Via API
curl -X POST "https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/projects" \
-u "admin:{password}" \
-H "Content-Type: application/json" \
-d '{
"project_name": "my-project",
"public": false,
"metadata": {
"public": "false"
}
}'
Lister les projets
curl -X GET "https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/projects" \
-u "admin:{password}"
Rôles et permissions
Niveaux de rôle
| Rôle | Permissions |
|---|---|
| Guest | Lire les images et les métadonnées |
| Developer | Push/Pull des images, lire les logs |
| Master | Gérer les membres, configurer le projet, push/pull |
| Admin | Administration complète du projet |
| Limited Guest | Lire les images dans certains dépôts uniquement |
Attribuer un rôle à un utilisateur
Via l'interface Harbor
- Accédez au projet ;
- Cliquez sur Members ;
- Cliquez sur Add User ;
- Entrez le nom d'utilisateur ou l'email ;
- Sélectionnez le rôle ;
- Cliquez sur OK.
Via API
curl -X POST "https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/projects/{project_id}/members" \
-u "admin:{password}" \
-H "Content-Type: application/json" \
-d '{
"role_id": 2,
"member_user": {
"username": "dev-user"
}
}'
| role_id | Rôle |
|---|---|
| 1 | Limited Guest |
| 2 | Guest |
| 3 | Developer |
| 4 | Master |
| 5 | Admin |
Modifier un utilisateur
Modifier les informations
Via l'interface Harbor
- Accédez à Administration → Users ;
- Sélectionnez l'utilisateur ;
- Cliquez sur Edit ;
- Modifiez les informations ;
- Cliquez sur OK.
Via API
curl -X PUT "https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/users/{user_id}" \
-u "admin:{password}" \
-H "Content-Type: application/json" \
-d '{
"email": "new-email@example.com",
"realname": "New Name"
}'
Changer le mot de passe
Via l'interface Harbor
- Accédez à Administration → Users ;
- Sélectionnez l'utilisateur ;
- Cliquez sur Change Password ;
- Entrez le nouveau mot de passe.
Via API
curl -X PUT "https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/users/{user_id}/password" \
-u "admin:{password}" \
-H "Content-Type: application/json" \
-d '{
"old_password": "{old_password}",
"new_password": "{new_password}"
}'
Définir un administrateur
Pour accorder ou révoquer les privilèges administrateur :
curl -X PUT "https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/users/{user_id}/sysadmin" \
-u "admin:{password}" \
-H "Content-Type: application/json" \
-d '{
"sysadmin_flag": true
}'
Gérer les permissions
Lister les membres d'un projet
Via l'interface Harbor
- Accédez au projet ;
- Cliquez sur Members.
Via API
curl -X GET "https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/projects/{project_id}/members" \
-u "admin:{password}"
Modifier le rôle d'un membre
Via l'interface Harbor
- Accédez au projet → Members ;
- Sélectionnez le membre ;
- Changez le rôle ;
- Cliquez sur OK.
Via API
curl -X PUT "https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/projects/{project_id}/members/{member_id}" \
-u "admin:{password}" \
-H "Content-Type: application/json" \
-d '{
"role_id": 3
}'
Retirer un membre d'un projet
Via l'interface Harbor
- Accédez au projet → Members ;
- Sélectionnez le membre ;
- Cliquez sur Delete.
Via API
curl -X DELETE "https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/projects/{project_id}/members/{member_id}" \
-u "admin:{password}"
Désactiver ou supprimer un utilisateur
Désactiver un utilisateur
La désactivation empêche temporairement la connexion :
Via l'interface Harbor
- Accédez à Administration → Users ;
- Sélectionnez l'utilisateur ;
- Cliquez sur Disable.
Via API
curl -X PUT "https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/users/{user_id}" \
-u "admin:{password}" \
-H "Content-Type: application/json" \
-d '{
"disabled": true
}'
Réactiver un utilisateur
Pour réactiver l'accès :
Via l'interface Harbor
- Accédez à Administration → Users ;
- Sélectionnez l'utilisateur désactivé ;
- Cliquez sur Enable.
Via API
curl -X PUT "https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/users/{user_id}" \
-u "admin:{password}" \
-H "Content-Type: application/json" \
-d '{
"disabled": false
}'
Supprimer un utilisateur
La suppression est irréversible. L'historique des opérations de l'utilisateur est conservé.
Via l'interface Harbor
- Accédez à Administration → Users ;
- Sélectionnez l'utilisateur ;
- Cliquez sur Delete ;
- Confirmez la suppression.
Via API
curl -X DELETE "https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/users/{user_id}" \
-u "admin:{password}"
Audit des accès
Lister tous les utilisateurs
curl -X GET "https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/users" \
-u "admin:{password}"
Lister les administrateurs système
curl -X GET "https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/users" \
-u "admin:{password}" | jq '.[] | select(.sysadmin_flag == true)'
Exporter les permissions
#!/bin/bash
REGISTRY="registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com"
AUTH="admin:password"
echo "=== Export des permissions Harbor ==="
echo ""
echo "Projets et membres :"
for project in $(curl -s -X GET "https://$REGISTRY/api/v2.0/projects" -u "$AUTH" | jq -r '.[] | @base64'); do
project_json=$(echo $project | base64 --decode)
project_id=$(echo $project_json | jq -r '.project_id')
project_name=$(echo $project_json | jq -r '.name')
echo ""
echo "Projet: $project_name (ID: $project_id)"
curl -s -X GET "https://$REGISTRY/api/v2.0/projects/$project_id/members" -u "$AUTH" | jq '.[] | {username: .entity_name, role_id: .role_id, role_name: .role_name}'
done
Vérification des accès sensibles
- Projets publics : Quels projets sont accessibles publiquement ?
- Administrateurs : Qui a les droits admin système ?
- Comptes robot actifs : Quels comptes robot sont utilisés ?
Bonnes pratiques
Principe du moindre privilège
- Accordez les permissions minimales nécessaires ;
- Utilisez le rôle Guest pour les utilisateurs en lecture seule ;
- Limitez les rôles Admin et Master.
Organisation des projets
| Type de projet | Permissions recommandées |
|---|---|
| Production | Restricted - Master/Admin uniquement |
| Staging | Developer pour l'équipe de dev |
| Public | Developer pour push, accès public pour pull |
Rotation des identifiants
- Changez régulièrement les mots de passe des utilisateurs ;
- Rafraîchissez les secrets des comptes robot ;
- Révoquez les accès inutilisés.
Audit régulier
- Revue mensuelle des accès aux projets sensibles ;
- Suppression des comptes inactifs ;
- Vérification des comptes robot expirés.
Limitations
| Action | Support |
|---|---|
| Récupérer le mot de passe admin | Via l'API Numspot |
| Créer des utilisateurs | Via Harbor UI ou API Harbor |
| Gérer les permissions | Via Harbor UI ou API Harbor |
| Créer des projets | Via Harbor UI ou API Harbor |
| Configurer les quotas | Via Harbor UI ou API Harbor |
Automatisez la gestion des utilisateurs avec des scripts utilisant l'API Harbor. Intégrez la gestion des accès dans vos processus de provisioning des environnements.