Partager via


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éthode GetProtection() du mip::FileHandler.
  • Vérifiez que l’utilisateur dispose de droits EDIT en appelant la méthode AccessCheck().
  • Utilisez GetDecryptedTemporaryFileAsync() ou GetDecryptedTemporaryStreamAsync() du mip::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éthode SetProtection(), en fournissant le mip::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.

Étapes suivantes