Ripubblicazione (C++)
Panoramica
Questa panoramica è incentrata sulla ripubblicazione in MIP SDK è uno scenario specifico rilevato quando un'applicazione deve consentire a un utente di modificare il file, ma vuole mantenere le informazioni di licenza di pubblicazione originali sul proprietario, i diritti, la chiave simmetrica e così via.
Il modello può essere simile al seguente:
- Un utente apre un documento protetto per la modifica.
- L'utente deve essere autorizzato a modificare il file solo se ha ottenuto i diritti appropriati.
- L'utente modifica e quindi salva il documento.
Lo pseudocodice di MIP SDK per eseguire questa attività può essere simile al seguente:
- Creare un oggetto
mip::FileHandler
che punta al file di destinazione. - Archiviare l'oggetto
mip::ProtectionHandler
esposto dalmip::FileHandler
metodo delGetProtection()
. - Verificare che l'utente disponga dei diritti EDIT chiamando
AccessCheck()
il metodo . - Usare
mip::FileHandler
oGetDecryptedTemporaryFileAsync()
GetDecryptedTemporaryStreamAsync()
per ottenere un output decrittografato temporaneo. - Modificare il contenuto del file temporaneo o del flusso e salvarlo.
- Creare una nuova
mip::FileHandler
istanza che punta al file temporaneo e usare ilSetProtection()
metodo , specificando l'oggetto archiviatomip::ProtectionHandler
come parametro . - Eseguire il commit della modifica.
Utilizzando dal mip::ProtectionHandler
file originale, il proprietario, l'ID contenuto, la chiave simmetrica e così via, verranno mantenuti nel documento modificato. Questo scenario di ripubblicazione richiede che l'applicazione mantenga un riferimento all'oggetto originale mip::ProtectionHandler
.
Implementazione
Come illustrato in precedenza, la mip::FileHandler
classe espone metodi per la lettura, la scrittura e la rimozione di etichette e informazioni di protezione. Per l'elenco completo delle operazioni supportate, vedere le informazioni di riferimento per mip::FileHandler.
Questo scenario usa i metodi seguenti di mip::FileHandler
:
GetProtection()
CommitAsync()
GetDecryptedTemporaryFileAsync()
SetProtection()
Lo scenario usa mip::ProtectionHandler
anche , che espone le funzioni per crittografare e decrittografare flussi e buffer protetti, eseguire controlli di accesso, ottenere la licenza di pubblicazione e ottenere attributi dalle informazioni protette. Il AccessCheck()
metodo verrà utilizzato per verificare che l'utente disponga dei diritti per modificare il file.
Per completare correttamente questo scenario di riprotezione, esaminare le guide introduttive in "Passaggi successivi" e assicurarsi che l'applicazione venga compilata e possa elencare correttamente le etichette.
Creare un gestore protezione dal file e decrittografare il file
mip::ProtectionHandler
espone le funzioni per crittografare e decrittografare flussi e buffer protetti, eseguire controlli di accesso, ottenere la licenza di pubblicazione e ottenere attributi dalle informazioni protette.
mip::ProtectionHandler
gli oggetti vengono costruiti fornendo un ProtectionDescriptor o una licenza di pubblicazione serializzata. Per questo caso d'uso, si userebbe in modo implicito la licenza di pubblicazione come licenza di pubblicazione quando si decrittografa il contenuto già protetto o quando si protegge il contenuto in cui è già stata costruita la licenza.
mip::FileHandler
espone un metodo denominato GetProtection()
che recupera mip::ProtectionHandler
dal file associato all'oggetto mip::FileHandler
. Una volta recuperato l'oggetto mip::ProtectionHandler
, è possibile usare per convalidare i livelli di accesso dell'utente per il file, decrittografare il file e successivamente crittografare il file dopo averlo modificato.
mip::ProtectionHandler
's AccessCheck()
viene usato per verificare che l'utente abbia un diritto specifico al file e restituisce una risposta booleana, a seconda del risultato. Ad esempio, per verificare che l'utente disponga dei diritti di modifica, chiamare il metodo passando il valore "EDIT". Se il risultato è true, consentire all'utente di modificare il file. Dopo aver verificato il diritto EDIT , usare mip::FileHandler
's GetDecryptedTemporaryFileAsync()
per recuperare il file decrittografato temporaneo.
Per altre informazioni sui vari diritti utente, vedere Diritti utente per Azure Information Protection.
Importante
I controlli di accesso e l'imposizione sono esclusivamente per lo sviluppatore dell'applicazione. Un utente con diritti VIEW è in grado di decrittografare le informazioni protette. Spetta all'applicazione convalidare il set di diritti concessi all'utente e applicare tali diritti tramite controlli di protezione delle informazioni, ad esempio impedire la copia, la modifica o l'acquisizione di screenshot. Se non si implementano correttamente i controlli di protezione, potrebbe verificarsi un'esposizione di informazioni riservate.
Salvare e pubblicare il file modificato applicando protezione
Dopo la decrittografia del file, è possibile modificare il file. Al termine dell'operazione di modifica, è possibile eseguire il commit delle modifiche. Creare un IFileHandler
oggetto usando il file temporaneo precedente per la gestione del file di cui è stato eseguito il commit. Il file temporaneo può quindi essere protetto usando l'oggetto IProtectionHandler
recuperato dal file originale.