# BC Security

# Vue d'ensemble

Le protocole est basĂ© sur le modĂšle requĂȘte-rĂ©ponse, utilisant le protocole Hypertext Transfer Protocol Secure (HTTPS). Tous les services utilisent les mĂ©thodes HTTP POST et GET. Les corps des requĂȘtes et des rĂ©ponses sont encodĂ©s en texte au format JSON.

# Termes

Termes ayant une signification spécifique et communément acceptée dans le Contexte Borné Sécurité.

Module Description
Fournisseurs Crypto Adaptateur qui fournit les services cryptographiques et les services de gestion de clés (KMS)
IAM Gestion des Identités et des AccÚs (Identity and Access Management). Adaptateur qui fournit les services de gestion des utilisateurs, menus, profils, rÎles et permissions.
AuthN Module d’authentification. NĂ©cessite un identifiant utilisateur et un mot de passe, et retourne un jeton JWT.
AuthZ Module d’autorisation. NĂ©cessite un JWT et un certificat (clĂ© publique). VĂ©rifie les ROLES du JWT et la signature.
JWT JSON Web Token. RenvoyĂ© aprĂšs une authentification utilisateur rĂ©ussie. Contient les dĂ©tails de l’utilisateur, les ROLES et la signature.
KMS SystÚme de Gestion de Clés (Key Management System). GÚre le cycle de vie des clés cryptographiques (définition, création et retrait). Fait partie du sous-systÚme Crypto.

# Cas d’Utilisation

# Connexion Utilisateur / Opérateur du BC (AuthN)

# Description

La fonction de connexion requiert que l’identifiant utilisateur et une clĂ© secrĂšte soient transmis dans le corps HTTP. La rĂ©ponse contient un jeton JWT signĂ©. La signature est gĂ©nĂ©rĂ©e par le sous-systĂšme Crypto. La connexion est rĂ©alisĂ©e par les services d’authentification ou l’IAM.

# Diagramme de flux

Cas d’Utilisation - Connexion Utilisateur / OpĂ©rateur du BC (AuthN)

Diagramme de workflow UC : Connexion Utilisateur / Opérateur du BC (AuthN)

# Modùle d’Autorisation du BC (AuthZ)

# Description

IAM fournit l'association des utilisateurs/groupes, rĂŽles et privilĂšges. Chaque BC dispose Ă©galement d’une liste de rĂŽles correspondants. Lorsqu’une fonction API ou un microservice est appelĂ©, la signature du JWT est vĂ©rifiĂ©e Ă  l’aide de la clĂ© publique et le rĂŽle fourni dans le JWT est comparĂ© au rĂŽle associĂ© au BC. Si la vĂ©rification de la signature et celle du rĂŽle sont rĂ©ussies, la fonction API ou le microservice est exĂ©cutĂ©.

# Diagramme de flux

Cas d’Utilisation - Modùle d’Autorisation du BC (AuthZ)

Diagramme de workflow UC : Modùle d’Autorisation du BC (AuthZ)

# Bootstrap du BC

# Description

Au dĂ©marrage ("bootstrap"), le BC envoie la liste des privilĂšges possibles. Cette opĂ©ration est effectuĂ©e une fois Ă  chaque dĂ©ploiement d’une nouvelle version.

# Diagramme de flux

Cas d’Utilisation - Bootstrap du BC

Diagramme de workflow UC : Bootstrap du BC

# Démarrage du BC

# Description

Au lancement, le BC demande les clĂ©s publiques de l’émetteur d’authentification auprĂšs des sous-systĂšmes Crypto / KMS du BC SĂ©curitĂ© ainsi que la liste des rĂŽles/privilĂšges auprĂšs du sous-systĂšme IAM du BC SĂ©curitĂ©. Une fonction locale de vĂ©rification de signature d'une bibliothĂšque cryptographique vĂ©rifie la signature JWT et les rĂŽles dans le JWT sont comparĂ©s Ă  la liste locale de rĂŽles obtenue du service central d’autorisation.

# Diagramme de flux

Cas d’Utilisation - DĂ©marrage du BC

Diagramme de workflow UC : Démarrage du BC

# Association RĂŽle / PrivilĂšge

# Description

Les rÎles sont associés à un certain nombre de privilÚges.

# Diagramme de flux

Cas d’Utilisation - Association Rîle / Privilùge

Diagramme de workflow UC : Association RĂŽle / PrivilĂšge

# Exemple de RequĂȘte / Appel

# Description

L’autorisation du client doit ĂȘtre rĂ©alisĂ©e Ă  l’aide d’un jeton d’accĂšs (access token). Un client doit d’abord demander au service d’autorisation de gĂ©nĂ©rer un jeton d’accĂšs pour l’utilisateur qui souhaite accĂ©der Ă  l’interface. Cet utilisateur est authentifiĂ© dans le service d’autorisation. Le jeton d’accĂšs gĂ©nĂ©rĂ© est ensuite utilisĂ© pour l’autorisation sur l’interface. Pour utiliser le jeton d’accĂšs, le client doit dĂ©finir l’en-tĂȘte HTTP Authorization Ă  la valeur Bearer [jeton_d_acces] sur chaque requĂȘte adressĂ©e Ă  l’interface.

# Diagramme de flux

Cas d’Utilisation - Exemple de RequĂȘte API/ Appel

Diagramme de workflow UC : Exemple de RequĂȘte API / Appel