Condividi tramite


Controlli di accesso in Microsoft Purview Information Protection SDK

L'applicazione dei diritti di Information Rights Management definiti nel portale di conformità è responsabilità dello sviluppatore dell'applicazione. L'SDK fornisce un'API e un set di enumeratori per semplificare questi controlli di accesso.

Gli esempi e le tabelle seguenti illustrano quali scenari richiedono un controllo di accesso, l'elenco dei diritti da verificare e come eseguire il controllo.

Elenco dei diritti e risultati

Per un elenco completo dei diritti di utilizzo e delle descrizioni, vedere Configurare i diritti di utilizzo per Azure Information Protection. Questo articolo definisce le responsabilità di uno sviluppatore di applicazioni nelle funzioni di imposizione dei diritti e abilitate quando sono presenti diritti specifici o meno.

Importante

È la responsbilità degli sviluppatori di applicazioni per controllare e applicare i diritti. Se non si eseguono controlli, è possibile che si verifichi una perdita di dati.

Scenari

La posizione e il modo in cui l'applicazione esegue i controlli di accesso dipenderà dal tipo di applicazione che si sta creando. Le applicazioni che gestiscono l'output full-file e non dispongono di un'interfaccia utente useranno i EXTRACT diritti o OWNER più frequentemente. Le applicazioni con un'interfaccia utente richiedono controlli più granulari, bloccando l'accesso ai controlli utente e ai percorsi di esportazione nell'applicazione. Per esempi di codice, vedere la sezione Esecuzione dei controlli di accesso.

Applicazioni senza interfaccia utente

Le applicazioni senza un'interfaccia utente sono spesso interfacce della riga di comando o basate sul servizio. Quando l'applicazione gestisce i file protetti da Purview Information Protection, deve assicurarsi che un utente senza i diritti corretti non possa usare il servizio o l'interfaccia della riga di comando per esportare il file in un formato non protetto.

Queste applicazioni devono verificare che siano presenti i diritti OWNER o EXTRACT . Gli utenti con OWNER possono eseguire qualsiasi operazione. Gli utenti con EXTRACT possono rimuovere direttamente la protezione o salvare in un nuovo formato, anche se tale formato non supporta la protezione.

Applicazioni con un'interfaccia utente

Le applicazioni File SDK con un'interfaccia utente devono implementare controlli che limitano l'accesso alle operazioni che l'utente non può eseguire. Un esempio di tale applicazione è azure Information Protection Viewer. Il visualizzatore decrittografa temporaneamente il file ed esegue il rendering del contenuto nella finestra dell'applicazione. Esegue controlli di accesso granulari prima di visualizzare il documento e disabilita gli elementi dell'interfaccia utente in base ai risultati dei controlli di accesso.

Un flusso di lavoro parziale di esecuzione dei controlli di accesso potrebbe essere simile al seguente:

  • L'utente ha il diritto DI PROPRIETARIO ? In caso affermativo, abilitare tutti i controlli e interrompere l'elaborazione di altri diritti.
  • L'utente ha il diritto PRINT ? In caso affermativo, abilitare il controllo stampa. In caso contrario, disabilitare il controllo stampa.
  • L'utente ha il diritto EXPORT ? In caso affermativo, abilitare i controlli di esportazione e gli elementi dell'interfaccia utente. In caso contrario, disabilitare questi elementi.
  • L'utente ha il diritto EXTRACT ? In caso affermativo, abilitare la copia e gli screenshot. In caso contrario, disabilitare queste funzioni.
  • L'utente ha il diritto EDIT ? In caso affermativo, abilitare la modifica e salvare l'elemento corrente. In caso contrario, rendere l'elemento di sola lettura.

Questi controlli devono essere eseguiti per tutte le autorizzazioni nell'elenco dei diritti e nella tabella dei risultati , ad eccezione del diritto VIEW . Il file non sarà accessibile senza questo diritto.

Esecuzione dei controlli di accesso

I modelli per l'esecuzione del controllo di accesso sono simili in File e Protection SDK per C++, .NET e Java.

Questi esempi di codice presuppongono che siano stati completare i passaggi per inizializzare l'SDK e aver creato un'istanza di un motore e un gestore.

Esecuzione di controlli di accesso in File SDK con .NET

Questo snip di codice presuppone che sia stato creato un FileHandler e punti a un file valido.

// Validate that the file referred to by the FileHandler is protected.
if(handler.Protection != null)
{                
    // Validate that user has rights to remove protection from the file.                    
    if(handler.Protection.AccessCheck(Rights.Extract))
    {
        // If user has Extract right, remove protection and commit the change. Otherwise, throw exception. 
        handler.RemoveProtection();
        bool result = handler.CommitAsync(outputPath).GetAwaiter().GetResult();     
        return result;   
    }
    else
    {
        throw new Microsoft.InformationProtection.Exceptions.AccessDeniedException("User lacks EXPORT right.");
    }
}

Esecuzione di controlli di accesso in Protection SDK con .NET

Questo snip del codice presuppone che sia stato creato un ProtectionHandler per l'utilizzo.

// Validate that the file referred to by the FileHandler is protected.
if(protectionHandler != null)
{                
    // Validate that user has rights to remove protection from the file.                    
    if(protectionHandler.AccessCheck(Rights.Print))
    {
        // If the user has the print right, enable the control.
        // SetPrintControlEnabled() is an example and not a MIP SDK function.  
        SetPrintControlEnabled(true);
    }
    else
    {
        // If the user does not have the print right, disable the control.
        // SetPrintControlEnabled() is an example and not a MIP SDK function.  
        SetPrintControlEnabled(false);
    }
}

Esecuzione di controlli di accesso in File SDK con C++

Questo snip di codice presuppone che sia stato creato un FileHandler e punti a un file valido.

// Validate that the file referred to by the FileHandler is protected.
if (fileHandler->GetProtection() != nullptr)
{
    if (fileHandler->GetProtection()->AccessCheck(mip::rights::Extract()))
    {
        auto commitPromise = std::make_shared<std::promise<bool>>();
        auto commitFuture = commitPromise->get_future();
        fileHandler->RemoveProtection();
        fileHandler->CommitAsync(outputFile, commitPromise);
        result = commitFuture.get();
    }
    else
    {
        throw std::runtime_error("User doesn't have EXTRACT right.");
    }
}

Esecuzione di controlli di accesso in Protection SDK con C++

Questo snip del codice presuppone che sia stato creato un ProtectionHandler per l'utilizzo.

// Validate that the file referred to by the FileHandler is protected.
if (protectionHandler != nullptr)
{
    if (protectionHandler->AccessCheck(mip::rights::Print()))
    {
        // If the user has the print right, enable the control.
        // SetPrintControlEnabled() is an example and not a MIP SDK function.  
        SetPrintControlEnabled(true);
    }
    else
    {
        // If the user does not have the print right, disable the control.
        // SetPrintControlEnabled() is an example and not a MIP SDK function.  
        SetPrintControlEnabled(false);
    }
}

Passaggi successivi

Ora che si ha un'idea di come eseguire correttamente i controlli di accesso e di applicare i diritti associati a tali controlli, continuare con i concetti relativi al gestore di file per altre informazioni sulla rimozione della protezione dai file.