Republication (C++)
Vue d’ensemble
Cette vue d’ensemble se concentre sur la republication dans le SDK MIP est un scénario spécifique rencontré lorsqu’une application doit autoriser un utilisateur à modifier le fichier, mais souhaite conserver les informations de la licence de publication d’origine sur le propriétaire, les droits, la clé de contenu, etc.
Le modèle peut ressembler à ceci :
- Un utilisateur ouvre un document protégé pour modification.
- L’utilisateur ne doit être autorisé à modifier le fichier que s’il a reçu les droits appropriés.
- L’utilisateur modifie puis enregistre le document.
Le pseudocode du SDK MIP pour accomplir cette tâche peut ressembler à ceci :
- Créez un
mip::FileHandler
qui pointe vers le fichier cible. - Stockez le
mip::ProtectionHandler
exposé par la méthodeGetProtection()
dumip::FileHandler
. - Vérifiez que l’utilisateur dispose de droits EDIT en appelant la méthode
AccessCheck()
. - Utilisez
GetDecryptedTemporaryFileAsync()
ouGetDecryptedTemporaryStreamAsync()
dumip::FileHandler
pour obtenir une sortie déchiffrée temporaire. - Modifiez le contenu du fichier temporaire ou du flux et enregistrez-le.
- Créez une nouvelle instance de
mip::FileHandler
pointant vers le fichier temporaire et utilisez la méthodeSetProtection()
, en fournissant lemip::ProtectionHandler
stocké en tant que paramètre. - Validez la modification.
L’utilisation du mip::ProtectionHandler
du fichier d’origine, du propriétaire, de l’ID de contenu, de la clé de contenu, etc. est conservée sur le document modifié. Ce scénario de republication nécessite que l’application conserve une référence à au mip::ProtectionHandler
original.
Implémentation
Comme indiqué précédemment, la classe mip::FileHandler
expose les méthodes de lecture, écriture et suppression des étiquettes et des informations de protection. Pour obtenir la liste complète des opérations prises en charge, passez en revue la référence de mip ::FileHandler.
Ce scénario utilise les méthodes suivantes de mip::FileHandler
:
GetProtection()
CommitAsync()
GetDecryptedTemporaryFileAsync()
SetProtection()
Le scénario utilise également mip::ProtectionHandler
qui expose les fonctions de chiffrement et de déchiffrement des flux protégés et des mémoires tampons, en effectuant des vérifications d’accès , en obtenant la licence de publication ainsi que des attributs à partir des informations protégées. La méthode AccessCheck()
sera utilisée pour vérifier que l’utilisateur dispose des droits nécessaires pour modifier le fichier.
Pour terminer correctement ce scénario de reprotection, consultez Démarrage rapide sous « Étapes suivantes » et vérifiez que l’application se compile et peut répertorier correctement les étiquettes.
Créer un gestionnaire de protection à partir du fichier et déchiffrer le fichier
mip::ProtectionHandler
expose les fonctions de chiffrement et de déchiffrement des flux protégés et des mémoires tampons, en effectuant des vérifications d’accès , en obtenant la licence de publication ainsi que des attributs à partir des informations protégées. Les objets mip::ProtectionHandler
sont construits en fournissant un ProtectionDescriptor ou une licence de publication sérialisée. Pour ce cas d’utilisation, nous utiliserions implicitement la licence de publication, car la licence de publication est utilisée lors du déchiffrement du contenu déjà protégé ou lors de la protection du contenu quand la licence a déjà été construite.
mip::FileHandler
expose une méthode nommée GetProtection()
qui extrait mip::ProtectionHandler
du fichier associé au fichier mip::FileHandler
. Une fois que l’objet mip::ProtectionHandler
est récupéré, vous pouvez l’utiliser pour valider les niveaux d’accès de l’utilisateur pour le fichier, déchiffrer le fichier et le chiffrer ultérieurement une fois qu’il est modifié.
La fonction AccessCheck()
de mip::ProtectionHandler
utilisée pour vérifier que l’utilisateur a un droit spécifique sur le fichier et retourne une réponse booléenne, en fonction du résultat. Par exemple, pour vérifier que l’utilisateur a les droits de modification, appelez la méthode en passant la valeur EDIT. Si le résultat est vrai, autorisez l’utilisateur à modifier le fichier. Une fois le droit EDIT est vérifié, utilisez la fonction GetDecryptedTemporaryFileAsync()
de mip::FileHandler
pour récupérer le fichier déchiffré temporaire.
Pour plus d’informations sur les différents droits d’utilisateur, consultez les droits de l’utilisateur pour Azure Information Protection.
Important
Les contrôles d’accès et l’application reviennent uniquement au développeur d’applications. Un utilisateur disposant de droits VIEW est capable de déchiffrer les informations protégées. Il appartient à l’application de valider l’ensemble des droits accordés à l’utilisateur et d’appliquer ces droits via des contrôles de protection des données, tels que la prévention de la copie, de la modification ou de la capture d’écran. L’échec de l’implémentation correcte des contrôles de protection peut entraîner une exposition d’informations sensibles.
Enregistrer et publier le fichier modifié en appliquant Protection
Une fois que le fichier est déchiffré, il peut être modifié. Une fois que l’opération de modification est terminée, les modifications peuvent être commitées. Créez un objet IFileHandler
à l’aide du fichier temporaire ci-dessus pour gérer le fichier commité. Le fichier temporaire peut ensuite être protégé à l’aide de l’objet IProtectionHandler
récupéré à partir du fichier d’origine.