Clocknet fonctionne sur un serveur privé virtuel géré, avec une base de données PostgreSQL. Cloudflare est placé devant ce serveur et gère le DNS et le trafic entrant. [TO CONFIRM: l'hébergeur et le pays où se trouve le serveur.]
Les photos de visage sont stockées dans le stockage objet Cloudflare R2. Les autres fichiers envoyés, comme les photos de profil et les pièces jointes des demandes de congé, sont stockés sur le disque du serveur.
Tous les espaces de travail partagent une même base de données. Chaque requête sur les données d'un espace de travail est limitée à l'espace de la personne qui la fait, de sorte qu'un client ne peut pas lire les données d'un autre client. Au sein d'un espace de travail, l'accès peut être restreint davantage à certaines filiales et équipes. [TO CONFIRM: une base de données distincte pour chaque client est prévue. Mettre ce paragraphe à jour si elle est en service au moment de la publication.]
Sauvegardes : il est prévu de faire une copie chiffrée de la base de données et des fichiers envoyés toutes les 6 heures, conservée hors du serveur, dans un espace de stockage séparé, pendant 35 jours. [TO CONFIRM: que les sauvegardes fonctionnent en production, avec leur fréquence et leur durée de conservation réelles. Elles ne sont pas encore installées et bloquent le lancement.]
Les photos de visage et les collections de visages AWS Rekognition sont volontairement exclues des sauvegardes, pour que leur suppression soit définitive.
Le trafic entre votre navigateur ou l'application et Clocknet est chiffré en HTTPS. Le site demande aux navigateurs de s'y connecter uniquement en HTTPS (HSTS). [TO CONFIRM: la version minimale de TLS configurée sur Cloudflare, par exemple TLS 1.2.]
Certaines valeurs sensibles sont chiffrées une seconde fois dans la base de données :
- les secrets et les codes de récupération de l'authentification à deux facteurs
- les secrets client et les certificats des fournisseurs d'identité pour l'authentification unique
- les identifiants qui relient une personne à son modèle facial
Les mots de passe sont hachés avec bcrypt et ne sont jamais stockés sous une forme lisible. Les jetons de connexion et les jetons de provisionnement SCIM ne sont stockés que sous forme de hachage.
Les sauvegardes sont chiffrées sur le serveur avant d'en être copiées, et la clé qui permet de les déchiffrer n'est pas conservée sur le serveur. [TO CONFIRM: dépend de la mise en service des sauvegardes en production.]
[TO CONFIRM: si le disque de la base de données et le stockage des fichiers sont chiffrés au repos, et comment. Ne citer aucun algorithme, comme AES-256, avant de l'avoir vérifié.]
Dans l'application mobile, votre jeton de connexion est conservé dans le stockage sécurisé du téléphone (le trousseau sur iOS, le Keystore sur Android). Les pointages enregistrés hors ligne attendent dans l'espace privé de l'application jusqu'à leur synchronisation. La déconnexion supprime les données locales de l'application, les photos en attente et le jeton enregistré. L'application n'ajoute pas son propre chiffrement à sa base de données locale.
Chaque personne d'un espace de travail a un rôle, et ce rôle détermine ce qu'elle peut voir et modifier. L'accès peut aussi être limité à certaines filiales ou équipes, pour qu'un responsable ne voie que les personnes qu'il encadre.
Les administrateurs de l'espace de travail peuvent activer :
- l'authentification à deux facteurs avec une application d'authentification, et les clés d'accès
- une règle qui oblige chaque membre à utiliser l'authentification à deux facteurs, avec un délai de grâce
- l'authentification unique avec SAML ou OpenID Connect, et le provisionnement des utilisateurs avec SCIM
- une liste d'adresses IP autorisées, une limite du nombre de sessions par personne, et la déconnexion après une période d'inactivité
Certaines de ces options dépendent de l'offre.
Nous limitons le nombre de tentatives de connexion avec une même adresse e-mail ou depuis une même adresse IP, ainsi que le nombre de requêtes API qu'un utilisateur peut faire. Un jeton de connexion de l'application expire au bout de 30 jours et il est remplacé chaque fois que l'application le renouvelle. Il est révoqué par la déconnexion, la réinitialisation du mot de passe ou une déconnexion forcée par un administrateur.
Un journal enregistre les modifications faites dans l'espace de travail, comme les changements de rôle et les modifications de feuilles de temps. Il est conservé 2 ans.
Le personnel de Clocknet utilise une console d'exploitation distincte, avec ses propres comptes. Quand le support doit consulter un espace de travail, l'opérateur doit indiquer un motif. La session prend fin au bout de 60 minutes, bloque la plupart des modifications, affiche un bandeau et est consignée dans un journal d'audit.
Les secrets de production, comme les clés d'API, sont conservés dans le coffre de secrets de notre hébergeur et jamais dans le code source.
Les modifications de Clocknet passent par des pull requests. Des hooks Git recherchent les secrets dans chaque commit et lancent une analyse statique avant que le code soit poussé. [TO CONFIRM: comment décrire la recherche de secrets, la relecture du code et les tests automatisés, qui ne couvrent pas toutes les modifications aujourd'hui.]
Dependabot surveille nos dépendances et propose des mises à jour.
Le site et les pages d'administration envoient des en-têtes de sécurité qui empêchent d'autres sites de les intégrer dans un cadre et empêchent les navigateurs de deviner le type des fichiers.
Nous prévoyons de faire réaliser un test d'intrusion indépendant. [TO CONFIRM: si un test a déjà eu lieu, par qui et quand.]
La vérification faciale est facultative et reste désactivée tant que l'espace de travail ne l'active pas. Chaque membre doit donner son consentement explicite avant de la configurer.
- La comparaison des visages utilise AWS Rekognition, dans la région eu-west-1 (Irlande). Chaque espace de travail a sa propre collection de visages, de sorte que les visages ne sont jamais comparés d'un espace de travail à l'autre.
- La photo utilisée pour configurer la vérification faciale est supprimée dès que le modèle facial est créé, sauf si l'espace de travail fixe une durée de conservation des photos. Les photos conservées sont privées et ne s'ouvrent que par des liens qui expirent au bout de 10 minutes.
- Quand un membre retire son consentement ou supprime son compte, son modèle facial est supprimé d'AWS Rekognition.
- Nos règles de développement interdisent d'écrire dans les journaux les photos de visage, les modèles faciaux, les coordonnées exactes ou les jetons de connexion. Les rapports de plantage sont configurés pour ne pas joindre les noms, les adresses e-mail ni les adresses IP.
La Politique de confidentialité explique la vérification faciale plus en détail.
- Le partage de la position pendant le service reste désactivé tant que chaque membre ne l'active pas, et la position n'est enregistrée que pendant qu'il est pointé.
- Les relevés de position sont supprimés après la durée de conservation de l'espace de travail, 90 jours par défaut, et sous 24 heures si le membre désactive le partage.
- Les membres peuvent télécharger une copie de leurs données et supprimer leur propre compte eux-mêmes.
La Politique de confidentialité et la page RGPD expliquent comment nous traitons les données personnelles.
Les erreurs de l'application et du serveur sont signalées à Sentry, ce qui nous permet de repérer vite les problèmes. [TO CONFIRM: quelles alertes sont configurées en production, par exemple sur les taux d'erreur et le contrôle des sauvegardes.]
Si un incident de sécurité touche vos données, nous préviendrons les clients concernés dans les meilleurs délais [TO CONFIRM: un délai fixe, par exemple dans les 48 heures après en avoir pris connaissance]. Nous décrirons ce qui s'est passé, les données concernées et ce que nous faisons, et nous compléterons ces informations à mesure que nous en apprendrons davantage.
[TO CONFIRM: le plan de réponse aux incidents qui sous-tend cet engagement, qui n'a pas encore été rédigé.]
Si vous pensez avoir trouvé une vulnérabilité de sécurité dans Clocknet, écrivez-nous à [TO CONFIRM: adresse e-mail de contact pour la sécurité].
Merci d'indiquer :
- une description du problème et l'endroit où il se trouve
- les étapes pour le reproduire
- ce qu'un attaquant pourrait en faire
Nous confirmerons la réception de votre signalement [TO CONFIRM: délai de réponse, par exemple sous 3 jours ouvrés] et vous tiendrons informé pendant la correction.
Laissez-nous un délai raisonnable pour corriger le problème avant de le rendre public. N'accédez pas aux données d'autres personnes et ne les modifiez pas, et ne perturbez pas le service. Si vous respectez ces règles et agissez de bonne foi, nous n'engagerons pas de poursuites contre vous pour vos recherches. [TO CONFIRM: le texte de protection juridique, relu par un juriste.]
Nous ne proposons pas de programme de bug bounty rémunéré. [TO CONFIRM: s'il faut en proposer un.]
Notre page RGPD explique comment Clocknet traite les données personnelles pour ses clients au titre du RGPD, et décrit notre accord de traitement des données.
Clocknet ne détient aucune certification de sécurité comme SOC 2 ou ISO 27001.
[TO CONFIRM: Maroc. L'état de nos déclarations auprès de la CNDP au titre de la loi 09-08.]
Si vous avez besoin de plus de détails pour une évaluation de sécurité ou un questionnaire, contactez-nous. [TO CONFIRM: le contact pour les questionnaires de sécurité.]