Aperçus des notifications d'approbation : protégez les détails des actions
Les aperçus de notifications d'approbation peuvent exposer des actions d'agents sur des écrans verrouillés. Découvrez quoi afficher, expurger et tester, et quelles informations conserver dans l'application authentifiée.

Les aperçus des notifications d'approbation méritent le même threat modeling que l'action qu'ils annoncent. Une demande de déploiement de code, d'appel à une API client ou d'exécution d'une commande à distance peut révéler des informations sensibles avant même que quelqu'un appuie sur « Approuver ». Si cette information apparaît sur un téléphone verrouillé, un ordinateur partagé, un écran de salle de réunion ou un wearable en miroir, le système d'approbation a déjà divulgué une partie de l'opération.
L'erreur habituelle consiste à traiter la notification comme un simple élément technique inoffensif. C'est un canal de sortie avec son propre public, sa propre durée de conservation et ses propres contrôles d'accès. Concevez-le comme une invitation volontairement limitée à entrer dans un espace de décision protégé. Ne le traitez pas comme une version miniature de l'écran d'approbation.
Un écran verrouillé est une frontière d'exposition
Un écran verrouillé peut être visible par des collègues, des membres de la famille, des visiteurs, des caméras et toute personne qui passe devant un bureau. Le propriétaire est peut-être à proximité, mais la proximité ne vaut pas authentification. La distinction paraît évidente, jusqu'à ce qu'une alerte d'approbation affiche un nom d'hôte de production, un nom de client, un libellé d'incident ou la première ligne d'une commande shell.
De nombreuses équipes classent une notification comme peu sensible parce qu'elle ne contient aucune valeur secrète. Ce critère est beaucoup trop étroit. Un point de terminaison comme billing-prod.internal, un chemin comme /customers/28471/refund ou un message comme Rotate compromised access token peuvent révéler des systèmes, des relations et un état opérationnel. Un attaquant qui rassemble ces fragments n'a pas besoin d'un bearer token pour en tirer parti.
Réfléchissez à ce qu'un observateur peut déduire de chaque champ :
- Une destination peut identifier un client, une région, un produit ou un service de production.
- Une opération peut révéler qu'un compte est en cours de modification, qu'un remboursement est en attente ou qu'un incident est en cours.
- L'identité d'un agent peut révéler sur quel dépôt ou quelle tâche travaille un développeur.
- Un champ de raison contient souvent du texte copié depuis un ticket, une saisie utilisateur ou des notes d'incident.
- Un résultat peut révéler des données récupérées par l'action avant que l'utilisateur ne prenne une décision.
L'écran verrouillé n'est que la première frontière d'exposition. Les systèmes d'exploitation peuvent afficher le même texte dans un centre de notifications après le déverrouillage. Une notification de bureau peut rester dans l'historique après le départ d'une personne d'un poste de travail partagé. Une montre peut la recopier. Un enregistrement d'écran, un logiciel d'assistance à distance ou un appel vidéo peuvent la capturer. L'aperçu doit rester sûr dans tous ces contextes.
La documentation Platform Security d'Apple décrit l'écran verrouillé comme un état protégé de l'appareil et place l'authentification de l'utilisateur au centre de l'accès aux données protégées. Ce modèle ne transforme pas automatiquement le texte des notifications en données protégées. Les applications doivent choisir ce qu'elles envoient au service de notifications et ce qu'elles affichent avant l'authentification de la personne. Considérez le réglage de confidentialité du système d'exploitation comme une couche parmi d'autres, et non comme une autorisation d'insérer du contenu sensible dans le message.
L'alerte doit attirer l'attention, pas révéler la demande
Un aperçu sûr indique qu'une action doit être examinée et donne suffisamment d'informations sur son urgence pour aider à la prioriser. Il ne reproduit pas l'action. C'est une distinction importante que les équipes brouillent souvent : le contexte de notification n'est pas le contexte d'approbation.
Le contexte d'approbation doit permettre à l'opérateur de prendre une décision éclairée. Il peut nécessiter la destination exacte, l'opération, la portée des identifiants, le processus agent, les arguments, l'effet attendu et l'expiration. Le contexte de notification sert à ramener la bonne personne vers cette vue protégée. Il en faut beaucoup moins.
Pour une action ordinaire, un aperçu utile sur un écran verrouillé pourrait dire :
Action à approuver
Un agent de développement demande l'accès à un service protégé.
Expire dans 4 minutes. Ouvrez l'application pour examiner la demande.
Ce texte établit l'urgence et la portée générale. Il ne dit pas si le service traite la paie, du code source, des paiements ou un incident interne. Il ne révèle ni l'URL, ni la méthode, ni la commande, ni la branche, ni la requête, ni l'identité d'un client.
Comparez avec le type de message que l'on retrouve dans les systèmes réels :
Approve POST https://payments.example.internal/v1/refunds/28471
Agent requests bearer token for customer refund. Reason: duplicate charge.
La seconde alerte n'affiche jamais le bearer token, mais elle révèle tout de même beaucoup trop d'informations. Elle identifie un service sensible, une action, un objet lié à un client et un événement financier. Toute personne capable de lire l'aperçu apprend quelque chose qu'elle n'était pas autorisée à connaître.
Utilisez un vocabulaire restreint pour le texte des aperçus. « Approbation requise », « demande d'accès en attente » et « examen requis » suffisent souvent. Ajoutez une classe de risque générale si elle change la rapidité avec laquelle la personne doit réagir : « action externe », « accès à la production » ou « lecture sensible ». Ne rendez pas le libellé si précis qu'il annule l'objectif. « Export de la base de données de production » n'est pas un libellé général.
L'écran authentifié doit faire l'inverse. Il doit rendre la demande assez concrète pour permettre un rejet sûr ou une approbation en connaissance de cause. Masquer les détails à cet endroit au nom de la confidentialité mène à une approbation aveugle, qui constitue simplement un autre échec.
L'expurgation doit avoir lieu avant la sortie de la notification
La charge utile d'une notification doit avoir son propre schéma. Ne la construisez pas en élaguant un enregistrement d'approbation complet au dernier moment, et ne comptez pas sur une liste de remplacements de chaînes. Les équipes prennent ce raccourci parce que l'enregistrement complet existe déjà et que son affichage semble simple. La méthode échoue lorsqu'un nouveau champ apparaît, qu'une URL se déplace dans un sous-titre ou qu'une chaîne de raison contient des données sensibles copiées.
Créez deux projections explicites à partir d'une demande d'action. L'une alimente la vue d'approbation authentifiée. L'autre alimente l'aperçu. Le modèle d'aperçu ne devrait même pas posséder de champs pour les URL brutes, les en-têtes, les arguments de commande, les extraits de réponse, les noms de secrets ou les raisons en texte libre.
Ce pseudocode montre la structure :
type ApprovalRecord {
requestId
agentAuthority
destination
operation
arguments
credentialReference
userReason
expiry
riskClass
}
type NotificationPreview {
requestId
title
body
expiryText
riskClass
}
function makePreview(record):
return NotificationPreview(
requestId = opaqueId(record.requestId),
title = "Action approval needed",
body = previewBody(record.riskClass),
expiryText = formatExpiry(record.expiry),
riskClass = record.riskClass
)
La propriété importante n'est pas la formulation. C'est la structure unidirectionnelle des données. NotificationPreview ne peut pas contenir accidentellement destination, puisque le champ n'existe pas. Un réviseur peut examiner cette frontière. Un test peut refuser tout nouveau champ d'aperçu qui contient une chaîne non bornée.
Ne faites pas transiter le texte brut d'une raison par un assainisseur en considérant le travail terminé. Les raisons contiennent régulièrement des titres de tickets, des commandes collées, des adresses e-mail, des identifiants de compte et des noms internes. Les règles d'expurgation manquent les formats que personne n'avait prévus. Une phrase fixe issue d'une énumération est plus sûre qu'une phrase contrôlée par l'utilisateur, même nettoyée.
Les identifiants opaques demandent eux aussi de l'attention. Un identifiant d'approbation comme APR-10482 peut sembler inoffensif, mais un numéro prévisible donne à un observateur un enregistrement qu'il peut mettre en relation avec un ticket visible ou une conversation ultérieure. Utilisez un identifiant sans signification métier et qui ne puisse pas servir de jeton d'autorisation. Mieux encore, omettez-le de l'aperçu, sauf si les workflows d'assistance en ont réellement besoin.
Conservez la demande complète dans le stockage chiffré de l'application ou dans un autre enregistrement authentifié, et non dans le corps de la notification. Un système de notifications peut conserver le texte plus longtemps que l'alerte ne reste visible. Vos choix de conservation des données ne s'appliquent plus si un autre sous-système en garde une copie.
Les réglages de confidentialité de l'appareil sont utiles, mais ne peuvent pas porter toute la conception
Les systèmes d'exploitation permettent généralement de masquer les aperçus de notifications lorsque l'appareil est verrouillé. Ce réglage est utile, mais un produit d'approbation ne peut pas supposer qu'il est activé, compris ou appliqué de manière cohérente sur tous les appareils d'une personne.
Certaines personnes ont besoin d'aperçus visibles pour trier leurs messages. Certaines organisations gèrent ces réglages. Certains appareils n'ont pas de code de verrouillage. Certains utilisateurs lisent des alertes sur un ordinateur de bureau déjà déverrouillé, tandis qu'un collègue se tient derrière eux. Une application qui envoie du texte sensible en disant « les utilisateurs peuvent désactiver les aperçus » confie une décision de sécurité au moment le moins fiable de la configuration du système.
Concevez votre système pour trois situations :
- Le système d'exploitation affiche la notification complète sur un écran verrouillé.
- Le système d'exploitation masque le corps, mais affiche un titre ou le nom de l'application.
- L'écran est déverrouillé, mais d'autres personnes peuvent le voir.
La première situation détermine votre charge utile. Si le texte y est sûr, les deux autres sont plus faciles à évaluer. S'il y est dangereux, un réglage utilisateur ne fait que rendre le défaut intermittent.
Ne déduisez pas trop de l'état de l'appareil. Une application peut savoir que sa propre fenêtre est déverrouillée, mais elle ne peut souvent pas savoir qui regarde la notification. Même un signal fiable indiquant que l'écran est verrouillé ne couvre ni un projecteur, ni un moniteur externe, ni le partage d'écran. L'aperçu sûr doit le rester après l'authentification, car les conditions de visionnage physique échappent au contrôle de l'application.
Une exception mérite d'être mentionnée : une notification locale et authentifiée à l'intérieur d'une fenêtre d'application peut afficher les mêmes détails que la vue d'approbation, puisque l'application contrôle déjà l'accès à cette fenêtre. Ce n'est pas une notification système. Ne confondez pas une boîte de réception protégée dans l'application avec une bannière sur écran verrouillé simplement parce que les deux utilisent le mot notification.
Les boutons d'approbation dans les notifications affaiblissent la frontière de décision
Un bouton « Approuver » dans une notification paraît efficace. C'est aussi un raccourci tentant vers la confirmation accidentelle, l'approbation sous contrainte et la décision prise sans contexte. Une personne voit une bannière tronquée, appuie sur un bouton familier et autorise une action sans examiner sa cible ni son effet réel.
La notification ne doit proposer que des actions qui préservent la frontière de décision. « Ouvrir pour examiner » est sûr, car cela mène l'opérateur vers l'application authentifiée. « Ignorer » est sûr si cette action ne refuse pas, n'approuve pas et ne prolonge pas discrètement la demande. Un bouton « Approuver » n'est pas sûr pour les actions importantes, même si le système d'exploitation demande de déverrouiller l'appareil avant de l'exécuter.
L'authentification et le consentement éclairé sont deux contrôles différents. L'authentification de l'appareil établit qu'une personne capable de le déverrouiller a appuyé sur le bouton. Elle n'établit pas que cette personne a vu la demande complète ou a eu le temps de l'évaluer. L'écran d'approbation doit associer la décision aux détails de la demande, indiquer si quelque chose a changé depuis l'apparition de l'alerte et demander une nouvelle confirmation pour une action sensible.
Cela compte encore davantage pour les demandes d'agents. Un agent peut produire de nombreuses actions qui se ressemblent de loin. Un titre de notification comme « Demande d'accès SSH » ne permet pas de distinguer une vérification d'état en lecture seule d'une commande destructive. La vue protégée doit afficher l'intention concrète avant que l'opérateur ne déclenche l'action.
Le flux d'autorisation de Sallyport conserve la décision réelle à l'intérieur de l'application authentifiée, au lieu de transformer une notification du système d'exploitation en télécommande pour l'accès des agents. Cette séparation est moins spectaculaire qu'une approbation en un clic, mais elle résiste mieux lorsque les demandes ont des conséquences.
Ne proposez pas non plus de contrôle « mémoriser ce choix » dans la notification. Les modifications persistantes d'autorisation méritent leur propre interface explicite, une portée claire et un moyen de les examiner ou de les révoquer. Un appui distrait sur un écran verrouillé est un mauvais endroit pour créer une autorité durable.
Les classes de risque doivent décrire les conséquences sans nommer les ressources
Une alerte vague habitue les utilisateurs à ouvrir chaque notification. Une alerte trop détaillée divulgue la ressource protégée. Les classes de risque réduisent en partie cette tension lorsqu'elles décrivent la catégorie de conséquence plutôt que la ressource.
Utilisez des catégories fondées sur ce que l'action peut faire. Par exemple, une action peut lire des informations protégées, modifier un service interne, envoyer une requête externe ou effectuer une opération difficile à annuler. Ces catégories donnent au réviseur une raison d'interrompre son travail sans révéler la base de données, le client ou le nom d'hôte concernés.
Évitez de mélanger la sensibilité de l'accès et l'urgence opérationnelle dans les libellés. « Priorité élevée » n'apprend pas grand-chose sur l'effet de l'approbation. « Écriture en production » en dit davantage, mais peut toujours révéler qu'un système de production est concerné. La sécurité de cette formulation dépend de l'environnement. Une personne seule sur un appareil personnel peut l'accepter ; un poste d'assistance partagé devrait utiliser un libellé plus général.
Définissez le vocabulaire par écrit et associez-le à l'action avant de générer la notification. Si les développeurs peuvent improviser le texte du titre, le schéma le plus rigoureux du monde ne vous sauvera pas. Une règle de revue peut rester simple : toute chaîne provenant d'un agent, d'un utilisateur, d'une URL, d'une commande, du corps d'une requête ou d'une réponse distante est interdite dans les aperçus.
Une correspondance pratique ressemble à ceci :
| Propriété de l'action | Formulation dans l'aperçu | Formulation dans la vue protégée |
|---|---|---|
| Lit un service protégé | Lecture sensible | Service, méthode, chemin et portée exacts |
| Modifie un état interne | Modification interne | Cible, champs modifiés et effet attendu |
| Envoie des données hors de l'organisation | Action externe | Destinataire, résumé de la charge utile et destination |
| Peut être difficile à annuler | Impact élevé | Commande ou requête complète et instructions de récupération |
Ce tableau constitue une règle pour les rédacteurs et les ingénieurs, pas la promesse que chaque action entrera parfaitement dans quatre catégories. Lorsqu'une action a des effets mixtes, choisissez la catégorie la plus sérieuse. Une notification qui demande de l'attention un peu trop tôt coûte un instant. Une notification qui masque un transfert externe sous « demande d'accès » entraîne une mauvaise décision.
L'historique des notifications et les appareils en miroir doivent être examinés séparément
Les équipes testent souvent la première bannière, puis s'arrêtent là. Le chemin d'exposition complet inclut les notifications conservées, les résumés de notifications, les appareils portables en miroir, les relais de bureau et tout appareil géré qui reçoit les mêmes alertes de compte.
Commencez par une demande réelle contenant des données de test volontairement reconnaissables : un faux nom de client, un faux hôte interne, une fausse adresse e-mail et un faux argument de commande. N'utilisez pas de valeurs de production réelles pour les tests de confidentialité. Déclenchez la demande, puis examinez chaque endroit où le texte peut apparaître.
Suivez cette séquence de test avant une mise en production :
- Verrouillez l'appareil principal et déclenchez la demande d'approbation.
- Vérifiez la bannière, la liste de l'écran verrouillé et le centre de notifications après le déverrouillage.
- Activez tout relais de notifications ou miroir de wearable configuré et examinez son historique.
- Capturez l'écran via les chemins d'assistance à distance et de partage d'écran utilisés par votre équipe.
- Faites expirer ou résolvez la demande, puis vérifiez si du texte obsolète reste visible.
Notez le titre et le corps rendus exactement à chaque étape. Un test réussi ne signifie pas « l'aperçu est masqué sur mon téléphone ». Il signifie « aucun marqueur de test n'est apparu en dehors de l'application authentifiée ». Cela permet aussi de détecter les problèmes de localisation. Un modèle anglais sûr peut devenir dangereux lorsqu'une chaîne traduite s'allonge et pousse un identifiant interne sur une ligne visible.
Accordez une attention particulière aux notifications regroupées. Le système peut afficher le message le plus récent, un nombre ou un résumé assemblé à partir de plusieurs alertes. Si chaque aperçu individuel est sûr, le groupe doit l'être aussi. Si votre code de regroupement utilise un nom d'action comme « trois demandes de remboursement », il a réintroduit des détails sensibles par un chemin secondaire.
La persistance des notifications modifie également la réponse aux incidents. Révoquer une session d'agent empêche les demandes futures, mais ne peut pas retirer le texte déjà copié dans l'historique des notifications d'un utilisateur ou sur un appareil en miroir. C'est pourquoi la réduction des informations d'aperçu doit intervenir avant l'autorisation et la revue d'audit, et non après un incident.
Les enregistrements d'audit ont besoin de détails, les aperçus de retenue
Les équipes de sécurité rendent parfois les aperçus vagues parce qu'elles ont aussi rendu leurs enregistrements d'audit vagues. Elles craignent que des enregistrements détaillés ne provoquent des fuites. Cela mélange deux systèmes distincts, destinés à des publics différents.
Un enregistrement d'audit doit être assez complet pour reconstituer la décision d'autorisation : le processus agent qui a lancé l'action, l'autorité sous laquelle il fonctionnait, la destination, l'opération, l'heure, la décision et le résultat. Les valeurs sensibles exigent toujours une gestion prudente, mais les enquêteurs ont besoin de faits détaillés. Un aperçu ne devrait rien contenir de tout cela, sauf si la personne s'est authentifiée dans l'application.
La distinction compte lors d'un incident. Imaginez qu'un agent demande une commande à distance. L'alerte indique « Approbation requise » et le réviseur ouvre l'application. La vue protégée affiche la commande, l'hôte, l'identité de la session et l'expiration. Le réviseur la refuse. Plus tard, un ingénieur cherche à comprendre pourquoi et a besoin de l'enregistrement correspondant. La piste d'audit peut répondre à cette question sans obliger la notification d'origine à transporter la commande sur chaque surface d'affichage.
Sallyport sépare ses journaux de sessions et d'activité de la gestion des notifications, les deux journaux étant projetés à partir d'un journal d'audit chiffré et chaîné par hachage. Cette conception permet à un opérateur d'examiner les actions et de vérifier la chaîne d'audit hors ligne, sans utiliser les aperçus de l'écran verrouillé comme substitut aux preuves.
Ne placez pas de hachages d'audit, d'extraits d'enregistrement ou d'identifiants de corrélation bruts dans la notification. Ils sont utiles dans l'interface protégée et les outils d'enquête. Sur une surface publique, ils créent des identifiants que les observateurs peuvent collecter et mettre en relation.
Une notification doit expirer lorsque la décision sous-jacente expire, et son enregistrement protégé doit indiquer clairement cette expiration. Si une personne ouvre une ancienne alerte, l'application doit récupérer l'état actuel de la demande. Ne laissez jamais le corps mis en cache d'une notification convaincre quelqu'un qu'il approuve la même demande que celle qui existait cinq minutes plus tôt.
Transformez les règles d'aperçu en tests, puis essayez de les contourner
Une consigne en prose comme « évitez le contenu sensible » échouera sous la pression d'une livraison. Transformez-la en assertions exécutées avec le générateur de notifications et en cas de test que les réviseurs peuvent lire.
Le test le plus utile est une liste de refus fondée sur l'origine des données, et non une liste fragile de mots interdits. Refusez tout champ d'aperçu dérivé d'une URL, d'un hôte, d'un texte de commande, d'un en-tête, d'un corps, d'un libellé d'identifiant, d'une raison en texte libre, d'une réponse distante, d'une adresse e-mail ou d'un identifiant de compte. N'autorisez ensuite qu'un ensemble restreint de modèles fixes et de valeurs de catégories bornées.
Un dispositif de test compact pourrait ressembler à ceci :
record.destination = "https://claims-prod.internal/cases/FAKE-784"
record.arguments = "--account [email protected] --export"
record.userReason = "Customer Northstar reports a disputed claim"
record.riskClass = EXTERNAL_ACTION
preview = makePreview(record)
assert preview.title == "Action approval needed"
assert preview.body == "An external action requires review."
assert preview doesNotContain "claims"
assert preview doesNotContain "FAKE-784"
assert preview doesNotContain "fake.person"
assert preview doesNotContain "Northstar"
Les assertions positives comptent autant que les négatives. Elles empêchent une modification ultérieure de remplacer un message fixe sûr par une alerte vide et vague que les utilisateurs apprendront à ignorer. Testez aussi la formulation de l'expiration, la localisation, les alertes regroupées et le rendu d'accessibilité. Les lecteurs d'écran peuvent lire du contenu que la troncature visuelle masque, l'accessibilité doit donc utiliser le même modèle d'aperçu limité.
Enfin, demandez à une personne qui n'a pas écrit la fonctionnalité de lire les aperçus en cherchant des indices opérationnels. Elle repérera ce que l'auteur ne remarque plus : un nom de code de projet, un libellé d'environnement familier, un surnom de service interne. Si un observateur averti peut déduire l'action protégée, la notification contient trop d'informations.
Définissez par défaut l'aperçu comme le message le moins précis qui permette tout de même une réaction humaine rapide. Placez les éléments nécessaires à une véritable approbation derrière l'authentification et faites en sorte que chaque raccourci ramène vers ces éléments. Cette conception peut coûter un appui. Elle évite de transformer chaque écran verrouillé en canal de divulgation discret.
FAQ
Que doit afficher une notification d'approbation sur un écran verrouillé ?
Considérez l'écran verrouillé comme une surface publique ou semi-publique. Affichez qu'une approbation requiert votre attention, la classe de risque et une courte indication d'expiration, mais gardez les cibles, les identifiants, le contenu des requêtes, les arguments de commande et les résultats dans l'application authentifiée.
Est-il sûr d'afficher un point de terminaison d'API dans l'aperçu d'une notification ?
Dans la plupart des cas, non. Le nom de la ressource peut révéler un client, un projet interne, un environnement de production ou un incident de sécurité. Utilisez une catégorie de ressource neutre en dehors de l'application et n'affichez la destination exacte qu'après authentification.
Les alertes d'approbation peuvent-elles contenir un identifiant d'action ?
Un identifiant d'approbation simple peut convenir s'il n'a aucune signification en dehors de votre système et ne peut rien autoriser. N'utilisez ni URL, ni numéro de compte, ni nom de client, ni fragment de commande, ni séquence prévisible comme identifiant.
Les notifications d'approbation génériques provoquent-elles une lassitude face aux approbations ?
Les alertes génériques présentent leur propre danger, car les utilisateurs les approuvent sans contexte. Placez le contexte utile dans la vue d'approbation authentifiée, puis limitez l'aperçu aux informations nécessaires pour décider s'il faut l'ouvrir.
Les utilisateurs doivent-ils pouvoir approuver une action directement depuis une notification ?
Non. Une action de notification doit uniquement ouvrir l'écran de décision authentifié ou fermer l'alerte. Elle ne doit jamais approuver une action, prolonger une session, révéler des détails masqués ou transmettre un jeton d'approbation via le système de notifications.
Comment classer les actions risquées des agents pour les notifications ?
Classez l'opération avant de rédiger le message. Une lecture peut révéler des données, une écriture modifie l'état, et une action irréversible ou externe mérite une formulation plus forte et une alerte plus visible, même si l'aperçu reste privé.
Comment vérifier que les aperçus de notifications ne divulguent pas de détails sensibles ?
Testez séparément les conditions d'écran verrouillé, d'écran déverrouillé et d'affichage partagé. Examinez aussi l'historique du centre de notifications, les appareils portables qui recopient les alertes, les captures d'écran et tout appareil qui reçoit des alertes relayées, car chaque surface peut conserver davantage de contenu que la première bannière.
Que faire lorsqu'une application ne peut pas savoir si l'écran est verrouillé ?
L'application doit afficher une version de repli sûre lorsqu'elle ne peut pas déterminer l'état de l'appareil ou le réglage de confidentialité du lecteur. Une alerte plus tardive ou moins précise vaut mieux que l'affichage d'une commande de production ou de données client sur un écran non contrôlé.
Quand est-il acceptable d'afficher des aperçus complets de notifications ?
Uniquement lorsque le destinataire ne dispose d'aucune autre source utile de contexte et que le message n'expose rien de sensible. Pour les systèmes d'approbation, le meilleur choix par défaut reste une alerte courte qui invite la personne à ouvrir l'application protégée.
En quoi les données de notification doivent-elles différer de l'enregistrement d'audit ?
Séparez les données d'aperçu de l'enregistrement d'approbation authentifié. L'aperçu doit être une projection volontairement réduite et expurgée, tandis que l'enregistrement protégé contient la destination, la portée, l'identité, la raison et la décision finale.