Passer au contenu principal

Sécuriser l'authentification Harbor

Le service managé Container Registry (Harbor) intègre des mécanismes de sécurité pour protéger l'accès aux images et aux projets. Cette page présente les bonnes pratiques pour sécuriser l'authentification, notamment dans un contexte de conformité SecNumCloud.

Connexions sécurisées TLS

Toutes les communications avec Harbor sont chiffrées avec TLS (Transport Layer Security).

Vérifier le chiffrement TLS

# Vérifier que le registry utilise HTTPS
curl -v https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/v2/

Docker avec TLS

Docker utilise automatiquement TLS pour les connexions HTTPS :

docker login registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com

Authentification forte et conformité SecNumCloud

Pour répondre aux exigences SecNumCloud en matière d'authentification forte, combinez plusieurs couches de sécurité.

Architecture multi-facteurs recommandée

FacteurMécanismeProtection
Ce que vous savezMot de passe admin ou token robotAuthentification Harbor
Ce que vous possédezAccès VPNCouche réseau
Ce que vous êtesContrôle d'accès réseau (IP, VPC)Périmètre de sécurité

Configuration recommandée pour environnements sensibles

  1. Accès via réseau privé : Connectez-vous au registry via un VPN ou un VPC (Virtual Private Cloud) ;

  2. Restriction des IP : Limitez l'accès aux plages d'adresses IP autorisées ;

  3. Utilisation de comptes robot : Préférez les comptes robot aux identifiants admin pour l'automatisation.

Authentification multi-facteurs (MFA)

Harbor ne dispose pas de MFA natif configurable via l'API Numspot. Pour implémenter une authentification multi-facteurs, utilisez une architecture en couches.

Approche MFA recommandée

CoucheMécanismeFacteur
Couche 1Mot de passe ou token robotCe que vous savez
Couche 2VPN avec MFACe que vous possédez
Couche 3Certificat clientCe que vous possédez
Couche 4Restriction IP/VPCCe que vous êtes

Configuration MFA via bastion

Pour implémenter le MFA, déployez une architecture sécurisée :

  1. Bastion avec MFA :

    • Déployez un bastion avec authentification forte (TOTP, clé hardware) ;
    • Configurez l'accès au registry uniquement via le bastion.
  2. Accès via VPN avec MFA :

    • Configurez un VPN avec authentification MFA ;
    • Limitez l'accès au registry aux clients connectés au VPN.

Architecture MFA type

[Utilisateur/Docker]
→ [VPN avec MFA]
→ [Bastion/Proxy]
→ [Container Registry Harbor]

Configuration Docker avec proxy

Pour accéder au registry via un proxy avec MFA :

# Configurer Docker pour utiliser le proxy
export HTTP_PROXY=http://bastion:3128
export HTTPS_PROXY=http://bastion:3128

# Connexion au registry
docker login registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com
note

L'authentification multi-facteurs native Harbor n'est pas actuellement configurable via l'API Numspot. Pour une authentification forte, utilisez le contrôle d'accès au niveau réseau (VPN, bastion).

Politique de mots de passe

Mot de passe administrateur

Le mot de passe administrateur est généré automatiquement lors de la création du Container Registry.

Pour récupérer le mot de passe, consultez Récupérer le mot de passe.

Bonnes pratiques

  • Ne partagez jamais le mot de passe administrateur ;
  • Utilisez les comptes robot pour l'automatisation ;
  • Changez le mot de passe régulièrement via l'interface Harbor.

Créer un mot de passe robuste

Pour les utilisateurs additionnels créés dans Harbor :

  • Longueur minimale de 12 caractères ;
  • Combinaison de lettres majuscules, minuscules, chiffres et caractères spéciaux ;
  • Exclusion des mots du dictionnaire et des informations personnelles.

Gestion des utilisateurs Harbor

Types d'utilisateurs

TypeDescriptionCas d'usage
AdministrateurAccès completAdministration système
UtilisateurAccès aux projetsDéveloppeurs, ops
Compte robotAutomatisationCI/CD, déploiements

Créer un utilisateur (via interface Harbor)

  1. Connectez-vous à l'interface Harbor ;
  2. Accédez à AdministrationUsers ;
  3. Cliquez sur New User ;
  4. Renseignez les informations :
    • Username
    • Email
    • Password
  5. Cliquez sur OK.

Pour plus de détails sur les comptes robot, consultez Comptes robot.

Gestion des permissions par projet

Niveaux de permission

RolePermissions
GuestLecture seule sur les images
DeveloperPush/Pull des images
MasterGestion des membres, configuration du projet
AdminAdministration complète du projet

Attribuer des permissions

  1. Accédez au projet ;
  2. Cliquez sur Members ;
  3. Ajoutez un utilisateur ou groupe ;
  4. Sélectionnez le rôle approprié.

Audit des connexions

Harbor journalise les événements d'authentification et les opérations sur les images.

Événements journalisés

ÉvénementDescription
Connexion réussieAuthentification utilisateur
Échec d'authentificationTentatives avec identifiants invalides
Push/Pull d'imagesOpérations sur les dépôts
Création/SuppressionOpérations sur les projets et ressources

Consulter les logs d'audit

  1. Connectez-vous en tant qu'administrateur ;
  2. Accédez à AdministrationAudit Log ;
  3. Filtrez par :
    • Utilisateur
    • Opération
    • Période
    • Projet

Via API

curl -X GET "https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/logs" \
-u "admin:{password}"

Protection contre les attaques

Limitation des tentatives

Harbor applique des protections contre les attaques par force brute :

  • Verrouillage temporaire après échecs répétés ;
  • Rate limiting sur les opérations sensibles.
note

Harbor n'applique pas de blocage automatique configurable après un nombre défini d'échecs de connexion. Pour un blocage automatique, utilisez un pare-feu applicatif.

Détection des anomalies

Surveillez les comportements suspects dans les logs d'audit :

  • Multiples échecs de connexion ;
  • Push d'images depuis des IP inhabituelles ;
  • Tentatives d'accès à des projets non autorisés.

Bloquer un utilisateur en cas d'utilisation abusive

Si vous détectez une activité suspecte ou un compte compromis, vous pouvez bloquer immédiatement l'accès.

Désactiver un utilisateur

Via l'interface Harbor

  1. Accédez à AdministrationUsers ;
  2. Sélectionnez l'utilisateur ;
  3. 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
}'

Désactiver un compte robot

Via l'interface Harbor

  1. Accédez au projet → Robots ;
  2. Sélectionnez le compte robot ;
  3. Cliquez sur Disable.

Via API

curl -X PUT "https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/projects/{project_id}/robots/{robot_id}" \
-u "admin:{password}" \
-H "Content-Type: application/json" \
-d '{
"disable": true
}'

Révoquer les permissions d'un utilisateur

  1. Accédez au projet ;
  2. Cliquez sur Members ;
  3. Supprimez l'utilisateur du projet.

Vérifier le statut d'un utilisateur

curl -X GET "https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/users/{user_id}" \
-u "admin:{password}"

Supprimer définitivement un compte

Si le compte n'est plus nécessaire ou si la compromission est confirmée.

Supprimer un utilisateur

Via l'interface Harbor

  1. Accédez à AdministrationUsers ;
  2. Sélectionnez l'utilisateur ;
  3. Cliquez sur Delete.

Via API

curl -X DELETE "https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/users/{user_id}" \
-u "admin:{password}"

Supprimer un compte robot

Via l'interface Harbor

  1. Accédez au projet → Robots ;
  2. Sélectionnez le compte robot ;
  3. Cliquez sur Delete.

Via API

curl -X DELETE "https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/projects/{project_id}/robots/{robot_id}" \
-u "admin:{password}"
avertissement

La suppression est irréversible. Tous les systèmes utilisant le compte perdront immédiatement l'accès.

Procédure de réponse à un incident

En cas de détection d'utilisation abusive :

  1. Désactiver immédiatement le compte utilisateur ou robot ;
  2. Régénérer le secret du compte robot si nécessaire ;
  3. Analyser les logs pour identifier l'origine de l'attaque ;
  4. Restreindre l'accès réseau via les groupes de sécurité ou le VPN ;
  5. Supprimer le compte si nécessaire.

Réinitialiser le mot de passe administrateur

Si vous suspectez une compromission du mot de passe admin :

Via l'API Numspot

Utilisez l'API pour réinitialiser le mot de passe :

PUT /registry/spaces/{spaceId}/registries/{registryId}/password/reset

Consultez Récupérer le mot de passe pour plus de détails.

Extraire les droits pour audit

Lister les utilisateurs et leurs permissions

# 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 membres d'un projet
curl -X GET "https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/projects/{project_id}/members" \
-u "admin:{password}"

Lister les comptes robot et leurs permissions

# Robots au niveau projet
curl -X GET "https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/projects/{project_id}/robots" \
-u "admin:{password}"

# Robots au niveau système
curl -X GET "https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/robots" \
-u "admin:{password}"

Exporter les permissions pour audit

# Exporter les membres de tous les projets
curl -X GET "https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/projects" \
-u "admin:{password}" | jq '.[] | {project_id: .project_id, name: .name}' | while read project; do
project_id=$(echo $project | jq -r '.project_id')
curl -X GET "https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/projects/$project_id/members" \
-u "admin:{password}"
done

Audit croisé

Vérifiez que les permissions appliquées correspondent aux politiques de sécurité.

Vérifications recommandées

  1. Lister les administrateurs système : Qui a le rôle admin ?
  2. Vérifier les accès aux projets sensibles : Qui peut pousser des images ?
  3. Auditer les comptes robot : Quels systèmes ont accès ?
  4. Vérifier les permissions externes : Y a-t-il des accès publics ?

Script d'audit

#!/bin/bash
REGISTRY="registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com"
AUTH="admin:password"

echo "=== Audit Harbor ==="
echo ""
echo "1. Utilisateurs actifs :"
curl -s -X GET "https://$REGISTRY/api/v2.0/users" -u "$AUTH" | jq '.[] | select(.disabled == false) | {username: .username, email: .email, admin: .sysadmin_flag}'

echo ""
echo "2. Comptes robot système :"
curl -s -X GET "https://$REGISTRY/api/v2.0/robots" -u "$AUTH" | jq '.[] | {name: .name, disabled: .disable}'

echo ""
echo "3. Projets et membres :"
for project_id in $(curl -s -X GET "https://$REGISTRY/api/v2.0/projects" -u "$AUTH" | jq '.[].project_id'); do
echo "Projet $project_id :"
curl -s -X GET "https://$REGISTRY/api/v2.0/projects/$project_id/members" -u "$AUTH" | jq '.[].entity_name'
done

Résumé des bonnes pratiques SecNumCloud

ExigenceImplémentation recommandée
Chiffrement des connexionsTLS obligatoire (HTTPS)
Authentification forteRéseau privé (VPN/VPC) + mot de passe
Politique de mots de passeComplexité, rotation régulière
Audit des accèsLogs d'audit activés, revue régulière
Contrôle d'accèsPermissions par projet, principe du moindre privilège
Blocage de compteDésactivation immédiate en cas d'incident
Audit des droitsExport régulier des permissions, audit croisé
astuce

Pour les architectures critiques, utilisez un bastion SSH ou un proxy d'accès pour centraliser et auditer toutes les connexions au registry. Mettez en place une revue trimestrielle des accès et des comptes robot.