Risque et conformité
L'écran Risque et conformité permet d'évaluer le risque d'un agent ou d'un modèle (catégorie AI Act), d'enregistrer les contrôles du tenant et de les relier aux référentiels, de demander une dérogation limitée dans le temps à un contrôle et de lire les preuves collectées pour chaque contrôle. Chemin dans le portail : /security/risk, menu Sécurité et gouvernance > Risque et conformité. Il sert aux responsables sécurité, aux administrateurs de tenant, aux responsables de la gouvernance de l'IA et aux développeurs qui préparent un audit.
Ce que montre l'écran
L'écran (Risk dans portal/src/screens/security.tsx) comporte quatre onglets.
- Évaluations : tableau lu dans
GET /v1/risk/assessments, colonnes Type de cible (target.type), Cible (target.ref), Cas d'usage, Catégorie AI Act, Risque, Statut, Créé. Un clic sur une ligne affiche la ligne (justification, obligations, réponses). - Contrôles : tableau lu dans
GET /v1/risk/controls, colonnes Code, Titre, Référentiels, Statut, Propriétaire, Preuves (nombre de preuves), Exceptions actives. - Dérogations : le formulaire Demander une dérogation (« Dérogation limitée dans le temps à un contrôle, avec justification. »), puis le tableau Exceptions lu dans
GET /v1/risk/exceptions, colonnes Contrôle, Cible, Raison, Approbateur, Demandé par, Statut (active,expired,revoked), Expire. - Preuves : tableau lu dans
GET /v1/risk/evidence, les preuves enregistrées suivies des preuves collectées automatiquement dans la plateforme, colonnes Contrôle, Titre, Type, Référentiels, Métriques, Collecté.
Formulaires de l'écran :
| Formulaire | Champ | Obligatoire | Remarques |
|---|---|---|---|
| Nouvelle évaluation | Cible | oui | type:ref, par exemple agent:invoice-assistant ou model:claude-sonnet-eu. |
| Cas d'usage | non | Séparés par des virgules, par exemple customer_support, credit_scoring. | |
| Réponses | non | Objet JSON du questionnaire, par défaut {}. | |
| Propriétaire | non | Par défaut : vous. | |
| Nouveau contrôle | Code | oui | Jusqu'à 64 caractères ; un code existant est mis à jour. |
| Titre | oui | ||
| Description | non | ||
| Référentiels | non | JSON, clés eu_ai_act, gdpr, iso_42001, nist_ai_rmf. | |
| Propriétaire | non | Par défaut : vous. | |
| Statut | non | Choix planned, partial, implemented. | |
| Demander une dérogation | Contrôle (control_code ou control_id) ou Cible (target_ref) | l'un des deux | Par exemple AC-1 ou agent:invoice-assistant. |
| Raison | oui | Au moins 3 caractères. | |
| Contrôles compensatoires | non | ||
| Approbateur | oui | Doit être une autre personne que vous. | |
| Expire | oui | Date ISO dans le futur, au plus 365 jours plus tard (2026-12-31T00:00:00Z). |
Actions
| Bouton ou action | Effet | Appel API | Rôles |
|---|---|---|---|
| Nouvelle évaluation (puis Créer) | Classe la cible d'après ses cas d'usage et ses réponses, enregistre l'évaluation et, pour un agent, recopie la catégorie dans son niveau de risque (registry_synced). | POST /v1/risk/assessments | tenant_admin, security_officer, developer, ai_governance_officer |
| Nouveau contrôle (puis Créer) | Crée le contrôle, ou met à jour le contrôle de même code. | POST /v1/risk/controls | tenant_admin, security_officer |
| Exécuter (Demander une dérogation) | Enregistre la dérogation avec son approbateur et son échéance ; auditée sous risk.exception.create. | POST /v1/risk/exceptions | tenant_admin, security_officer, developer |
| Clic sur une ligne (Évaluations, Exceptions, Preuves) | Affiche la ligne dans un panneau latéral, sans autre appel. | Aucun | Tout utilisateur du tenant |
| Icône d'actualisation d'un tableau | Relit la liste. | GET /v1/risk/assessments, GET /v1/risk/controls, GET /v1/risk/exceptions ou GET /v1/risk/evidence | Tout utilisateur du tenant |
| Réessayer (état d'erreur) | Relit la liste en erreur. | La route de l'onglet | Tout utilisateur du tenant |
Rôles
Le portail ne masque aucun bouton sur cet écran. Le Control Plane contrôle les rôles (services/control-plane/src/eai/domains/risk/__init__.py) :
- lecture de tous les onglets : tout utilisateur du tenant ;
- évaluation :
tenant_admin,security_officer,developerouai_governance_officer; seulstenant_admin,security_officerouai_governance_officerpeuvent l'enregistrer au statutapproved; - contrôle :
tenant_adminousecurity_officer; - dérogation :
tenant_admin,security_officeroudeveloper, et l'approbateur doit différer du demandeur (séparation des tâches) ; platform_adminpasse tous les contrôles de rôle.
Tâches courantes
Classer un nouvel agent avant la production
- Ouvrir le formulaire. La catégorie détermine les obligations de l'AI Act. Dans Évaluations, cliquez Nouvelle évaluation. Résultat attendu : un panneau latéral avec Cible, Cas d'usage, Réponses, Propriétaire. En cas d'échec : sans bouton, la liste ne s'est pas chargée ; cliquez Réessayer.
- Décrire la cible. Saisissez
agent:<nom>dans Cible et ses cas d'usage, par exemplecustomer_support. Résultat attendu : le formulaire accepte les valeurs. En cas d'échec : « JSON invalide » sous Réponses signale un JSON illisible. - Créer. Cliquez Créer. Résultat attendu : le message Créé et une nouvelle ligne avec sa Catégorie AI Act. En cas d'échec :
forbidden(HTTP 403) signale un rôle manquant. - Vérifier le registre. Pour un agent, la catégorie est recopiée dans son niveau de risque. Ouvrez le Registre de gouvernance, onglet Agents. Résultat attendu : la colonne Risque montre la catégorie. En cas d'échec : le nom de la cible ne correspond ni au nom ni à l'identifiant de l'agent.
Enregistrer une dérogation temporaire à un contrôle
- Trouver le contrôle. La dérogation se réfère à son code. Dans Contrôles, notez le Code, par exemple
AC-1. Résultat attendu : le code du contrôle. En cas d'échec : créez d'abord le contrôle avec Nouveau contrôle. - Remplir la demande. Onglet Dérogations, formulaire Demander une dérogation : Contrôle, Raison, Contrôles compensatoires, Approbateur (une autre personne) et Expire. Résultat attendu : le formulaire est complet. En cas d'échec : rien à relancer à cette étape.
- L'envoyer. Cliquez Exécuter. Résultat attendu : le panneau de résultat montre la dérogation au statut
active; cliquez l'icône d'actualisation de Exceptions pour voir la nouvelle ligne. En cas d'échec :invalid_exception(HTTP 422) signale une échéance passée ou à plus de 365 jours ;separation_of_duties(HTTP 409) signale que vous vous êtes désigné comme approbateur ;not_foundsignale un code de contrôle inconnu.
Réunir les preuves d'un contrôle
- Ouvrir les preuves. Elles sont collectées dans les événements d'audit et les évaluations. Onglet Preuves. Résultat attendu : les preuves enregistrées, puis les preuves automatiques (par exemple
EAI-LOG-01avec l'état de la chaîne d'audit). En cas d'échec : « Aucune preuve collectée » signifie que rien n'est encore enregistré. - Lire les métriques. Les lignes automatiques comptent ce que la plateforme détient (agents, modèles, évaluations, règles DLP, clés, exécutions). Lisez Métriques pour le contrôle. Résultat attendu : les nombres servant de preuve. En cas d'échec : une métrique vide signifie que la table source n'existe pas dans ce déploiement.
Dépannage
| Symptôme | Cause | Correction |
|---|---|---|
invalid_request (HTTP 400) avec status à la création d'un contrôle | L'API accepte planned, implemented, partially_implemented ou not_applicable ; le choix partial du formulaire est refusé. | Choisissez planned ou implemented, ou envoyez partially_implemented par l'API. |
invalid_request avec frameworks | Une clé de référentiel hors de iso_42001, nist_ai_rmf, gdpr, eu_ai_act. | N'utilisez que ces clés dans Référentiels. |
invalid_exception (HTTP 422) | Expire est dans le passé ou à plus de 365 jours. | Choisissez une date dans les 365 prochains jours. |
separation_of_duties (HTTP 409) | L'approbateur est le demandeur. | Désignez une autre personne comme Approbateur. |
invalid_request avec required sur une dérogation | Ni Contrôle ni Cible n'est rempli. | Indiquez un code de contrôle, un identifiant de contrôle ou une cible. |
not_found avec risk_control | Le code ou l'identifiant du contrôle est inconnu. | Vérifiez le code dans l'onglet Contrôles. |
forbidden (HTTP 403) avec required_roles | Vos rôles ne permettent pas cette écriture. | Demandez l'un des rôles listés. |
tenant_required (HTTP 403) | Le compte agit sans tenant. | Connectez-vous avec un compte du tenant. |