Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
L'SDK di Microsoft Information Protection supporta due tipi principali di autorizzazioni basate su etichetta: basate su modello e definite dall'utente.
Autorizzazioni basate su modello: L'amministratore delle etichette definisce questi diritti nel Portale di Microsoft Purview. Queste etichette sono gestite centralmente e le modifiche alla configurazione influiscono sugli utenti che dispongono già di copie dei file. Ad esempio, se l'amministratore rimuove un utente dall'elenco di utenti autorizzati, l'utente non ha più accesso ai dati protetti al successivo tentativo di recuperare una licenza.
Autorizzazioni definite dall'utente: l'utente finale o l'applicazione definisce questi diritti al momento dell'etichettatura. Trasmettere le autorizzazioni all’SDK MIP sotto forma di una raccolta di associazioni utente-ruoli o utenti-diritti. MIP SDK scrive questi diritti nella licenza di pubblicazione per il documento protetto. A differenza delle autorizzazioni basate su modello, non è possibile gestire o modificare centralmente questi diritti dopo la condivisione senza accesso diretto e modifica del documento.
Utenti, diritti e ruoli
Poiché l'utente definisce i diritti al momento dell'etichettatura, l'applicazione deve fornire un'interfaccia per l'utente o il servizio per immettere indirizzi di posta elettronica e diritti o ruoli. Per configurare l'accesso, passare una raccolta di oggetti UserRoles o UserRights che definiscono chi ha quale livello di accesso ai documenti.
// Create a List<string> of the first set of permissions.
List<string> users = new List<string>()
{
"alice@contoso.com",
"bob@contoso.com"
};
// Create a List<string> of the Rights the above users should have.
List<string> rights = new List<string>()
{
Rights.View,
Rights.Edit
};
// Create a UserRights object containing the defined users and rights.
UserRights userRights = new UserRights(users, rights);
// Add them to a new List<UserRights>
List<UserRights> userRightsList = new List<UserRights>()
{
userRights
};
Il risultato è una List<UserRights> collezione che specifica che sia Alice che Bob hanno VIEW e EDIT sul file protetto. Per aggiungere altri utenti con un set diverso di autorizzazioni, ripetere il processo per creare un secondo UserRights oggetto, passare i nuovi utenti e le autorizzazioni e quindi aggiungerlo alla List<UserRights> raccolta chiamando userRightsList.Add(userRights2).
Lo stesso modello si applica a UserRoles. Per implementarla, sostituire i diritti con i ruoli e creare una List<UserRoles> raccolta.
Protezione per un dominio
L'applicazione di autorizzazioni definite dall'utente per un dominio richiede un prefisso di posta elettronica noto e il dominio di destinazione come indirizzo di posta elettronica. L'indirizzo è simile a AllStaff-7184AB3F-CCD1-46F3-8233-3E09E9CF0E66@contoso.com.
Nell'applicazione gli utenti devono essere in grado di specificare un dominio, ad esempio contoso.com o fabrikam.com. Quando l'applicazione crea il descrittore di protezione, antepone AllStaff-7184AB3F-CCD1-46F3-8233-3E09E9CF0E66@ al suffisso di dominio.
Questo gruppo noto è anche il modo in cui si concedono diritti a tutti gli utenti autenticati in un'organizzazione. Il AllStaff-7184AB3F-CCD1-46F3-8233-3E09E9CF0E66@ gruppo contiene ogni utente nel tenant di Microsoft Entra specificato, quindi è l'equivalente più vicino al gruppo ANYONE da Active Directory Rights Management Services (AD RMS). L'ambito è sempre limitato a un singolo tenant: non esiste alcuna identità cross-tenant che conceda diritti a qualsiasi utente autenticato in tutte le organizzazioni, quindi aggiungi una voce separata AllStaff-...@domain per ogni organizzazione che vuoi includere. Per altre informazioni, vedere Configurare i diritti di utilizzo per Azure Information Protection.
Nell'esempio seguente l'utente specifica alice@contoso.com e tutti i Fabrikam.com come destinatari validi.
// Create a List<string> of the first set of permissions.
List<string> users = new List<string>()
{
"alice@contoso.com",
"AllStaff-7184AB3F-CCD1-46F3-8233-3E09E9CF0E66@fabrikam.com"
};
// Create a List<string> of the Rights the above users should have.
List<string> rights = new List<string>()
{
Rights.View,
Rights.Edit
};
// Create a UserRights object containing the defined users and rights.
UserRights userRights = new UserRights(users, rights);
// Add them to a new List<UserRights>
List<UserRights> userRightsList = new List<UserRights>()
{
userRights
};
Applicare la protezione
Per impostare la protezione, creare un oggetto ProtectionDescriptor dall'oggetto List<UserRights> o List<UserRoles> e quindi passare tale descrittore a FileHandler.SetProtection(). Infine, eseguire il commit della modifica nel file per scrivere un nuovo file.
Quando applicare la protezione ai file
Quando si imposta un'etichetta usando FileHandler.SetLabel(), l'SDK MIP dispone di tutto il necessario per agire e applicare qualsiasi protezione necessaria. Quando un'etichetta usa autorizzazioni definite dall'utente (UDP), l'applicazione non è in grado di sapere in anticipo che l'etichetta è un'etichetta UDP. MIP SDK visualizza queste informazioni generando un'eccezione del tipo Microsoft.InformationProtection.Exceptions.AdhocProtectionRequiredException. Il FileHandler codice deve intercettare questa eccezione e quindi attivare l'interfaccia utente o del servizio per definire le autorizzazioni personalizzate. Al termine del processo, è possibile impostare la protezione. L'esempio seguente illustra il modello end-to-end, ma presuppone che sia già stata implementata una funzione per compilare l'oggetto List<UserRights> .
try
{
// Attempt to set the label. If it's a UDP label, this will throw.
handler.SetLabel(engine.GetLabelById(options.LabelId), labelingOptions, new ProtectionSettings());
}
catch (Microsoft.InformationProtection.Exceptions.AdhocProtectionRequiredException)
{
// Assumes you've create a function that returns the List<UserRights> as previously detailed.
List<UserRights> userRightsList = GetUserRights();
// Create a ProtectionDescriptor using the set of UserRights.
ProtectionDescriptor protectionDescriptor = new ProtectionDescriptor(userRightsList);
// Apply protection to the file using the new ProtectionDescriptor.
handler.SetProtection(protectionDescriptor, new ProtectionSettings());
// Set the label. This will now succeed as protection has been defined.
handler.SetLabel(engine.GetLabelById(options.LabelId), labelingOptions, new ProtectionSettings());
// Commit the change.
var result = Task.Run(async () => await handler.CommitAsync("myFileOutput.xlsx")).Result;
}
Protezione personalizzata
È anche possibile usare questo processo per impostare solo la protezione impostando la protezione e ignorando il SetLabel() passaggio. Se l'applicazione non deve applicare un'etichetta, il gestore eccezioni non è obbligatorio. Per impostare la protezione, seguire il ProtectionDescriptor modello ->SetProtection() ->CommitAsync() .