Language selection

Rechercher

Serveur

Alerte COVID a été mis hors service. Pour en savoir davantage, visitez la page d’accueil d’Alerte COVID du gouvernement du Canada.

Le serveur Alerte COVID est une application logicielle servant de serveur de diagnostic pour l’application. Il gère la génération et l’obtention de clés à usage unique, la soumission et la récupération des clés de diagnostic et la collecte et l’agrégation des mesures relatives à l’application. Le serveur agit comme un « tissu conjonctif » permettant à l’application de fonctionner.

L’équipe de produit responsable du serveur exploite et entretient également l’infrastructure infonuagique sur laquelle le serveur est basé.

Description technique

Le serveur Alerte COVID est une application Go basée sur l’application CovidShield server, laquelle a été développée par des bénévoles externes au Service numérique canadien. Il sert de serveur de diagnostic pour le cadre de notification d’exposition de Google/Apple (lien en anglais) et remplit les fonctions suivantes :

  • génération de clés à usage unique: une clé unique et aléatoire est créée et donnée à un·e utilisateur·rice ayant reçu un diagnostic positif à la COVID-19;
  • obtention de clés à usage unique: les utilisateur·rice·s ayant reçu un diagnostic positif à la COVID-19 soumettent la clé à usage unique qui leur a été fournie. De cette façon, l’ensemble des utilisateur·rice·s ayant été en contact avec ces personnes reçoit une notification d’exposition possible à la COVID-19;
  • soumission de clés de diagnostic : partage avec le serveur des clés issues du cadre EN;
  • obtention de clés de diagnostic : récupération d’une liste de toutes les clés téléversées par les autres utilisateur·rice·s.

Les ressources du serveur sont déployées sur la plateforme infonuagique Amazon Web Services (AWS) et gérées à l’aide de Terraform, une méthode de gestion déclarative des ressources d’infrastructure à l’aide de code (infrastructure en tant que code).

Article de blogue connexe : Keeping Canadians safe while protecting their privacy: COVID Alert app (blogue AWS en anglais)

Référentiel de code source

Le code du serveur est géré au sein des référentiels GitHub suivants :

  • covid-alert-server, application Go du serveur lié à la soumission et à la récupération de clés;
  • covid-alert-server-production-terraform, Terraform utilisé pour gérer l’infrastructure AWS du serveur lié à la soumission et à la récupération de clés;
  • covid-alert-metrics-terraform, Terraform utilisé pour gérer l’infrastructure AWS de l’API liée aux mesures de performance;
  • covid-alert-metrics-etl, modules Python utilisés pour regrouper les données relative à la charge utile de mesures de performances pour l’application Alerte COVID et pour générer des fichiers au format CSV (valeurs séparées par des virgules) enregistrés dans le référentiel covid-alert-data.

Pile technologique

Serveur

  • Go
  • Docker
  • Protocol Buffers de Google
  • JavaScript
  • Ruby
  • Ressources AWS gérées par Terraform :
    • Application Load Balancer;
    • CloudFront;
    • alarmes, groupes de journaux et mesures de performance CloudWatch;
    • cluster Elastic Container Service (Fargate);
    • service de base de données relationnelle (Aurora, compatible avec MySQL);
    • Route53;
    • S3;
    • pare-feu d’application Web.

Mesures de performance

  • TypeScript
  • Python
  • Docker
  • Ressources AWS gérées par Terraform :
    • passerelle API;
    • alarmes, groupes de journaux et mesures de performance CloudWatch;
    • DynamoDB;
    • cluster Elastic Container Service (Fargate);
    • Lambda;
    • Route53;

Sécurité et confidentialité

La sécurité des données et la confidentialité étaient cruciales pour la conception et le comportement du serveur. Par conséquent :

  • aucun renseignement identificatoire n’est jamais conservé;
  • aucune autre information que l’adresse IP n’est disponible pour le serveur;
  • aucune donnée n’est conservée au-delà de 21 jours; et
  • toutes les données en transit et au repos sont chiffrées à l’aide d’algorithmes et de protocoles cryptographiques robustes.

Pour valider la confidentialité et la sécurité du serveur, une évaluation a été réalisée par les organisations gouvernementales suivantes :

  • le Service numérique canadien (SNC);
  • la Division de la cybersécurité du secrétariat du Conseil du Trésor du Canada (SCT); et
  • le Centre canadien pour la cybersécurité (CCC).

L’évaluation de sécurité du CCC est disponible en ligne.

Services Partagés Canada (SPC) a également évalué le locataire AWS accueillant l’infrastructure du serveur pour vérifier la conformité aux garde-corps propres au nuage du GC.

En plus des évaluations de sécurité réalisées par le gouvernement du Canada, des analyses et tests de pénétration indépendants ont été réalisés par le secteur privé et toutes les vulnérabilités de gravité critique ou élevée ont été traitées.

Pour éviter les violations de données durant les opérations quotidiennes, les points de terminaison API du serveur utilisent des listes d’autorisation d’AWS WAF (Web Application Firewall ou « pare-feu d’applications Web ») basées sur l’adresse IP et appliquent la limite de taux d’AWS WAF. Des règles visant à détecter tout trafic ou toute saisie de nature malveillante sont également en place. Tous les journaux d’activité du service sont également enregistrés et comprennent des alarmes détectant les activités inhabituelles ou non autorisées.

Enfin, une analyse des vulnérabilités et une analyse du code statique sont réalisées dans le cadre des flux de travail d’intégration continue et de déploiement continus pour chaque modification de code et de configuration apportée au code et à l’infrastructure du serveur.

Mesures de performance

Les mesures de performance intégrées à l’application constituent un service soutenant le serveur. Il s’agit là de données d’utilisation anonymes envoyées par l’application Alerte COVID. Les données, qui servent à juger l’efficacité de l’application, sont recueillies de la manière suivante :

  1. L’application envoie des charges utiles de données vers un point de terminaison de passerelle API d’AWS appelé /save-metrics.
  2. L’API invoque une fonction de création de mesure Lambda pour sauvegarder la charge utile de données vers un tableau DynamoDB appelé raw_metrics. Les éléments de ce tableau n’existent que pour une durée de 24 heures avant d’être supprimés (exigence en matière de confidentialité).
  3. Un évènement DynamoDB déclenche une fonction d’agrégation de mesures Lambda entraînant le traitement et la charge des nouveaux éléments raw_metrics dans un nouveau tableau DynamoDB appelé aggregate_metrics. Cela entraîne soit la création d’un nouvel élément dans aggregate_metrics, soit l’augmentation du champ metricCount d’un élément existant.
  4. Chaque soir, nous exécutons le code ETL covid-alert-metrics pour générer des fichiers CSV à partir du tableau aggregate_metrics. Ces fichiers CSV sont ensuite sauvegardés dans le référentiel cds-snc/covid-alert-data.

Pour en savoir plus sur l’implémentation des mesures concernant l’application, cliquez ici.

Date de modification :