Comprobaciones de acceso en el SDK de Microsoft Purview Information Protection
El cumplimiento de los derechos de administración de derechos de la información definidos en el portal de cumplimiento es responsabilidad del desarrollador de aplicaciones. El SDK proporciona una API y un conjunto de enumeradores para simplificar estas comprobaciones de acceso.
Los ejemplos y tablas siguientes muestran los escenarios que requieren una comprobación de acceso, la lista de derechos que se deben comprobar y cómo realizar la comprobación.
Lista de derechos y resultados
Para obtener una lista completa de los derechos de uso y sus descripciones, consulte Configuración de derechos de uso para Azure Information Protection. En este artículo se definen las responsabilidades de un desarrollador de aplicaciones en relación con el cumplimiento de derechos y las funciones habilitadas cuando se aplican o no se aplican derechos específicos.
Importante
Es responsabilidad de los desarrolladores de aplicaciones comprobar y aplicar derechos. Si no se realizan comprobaciones, es posible que se pierdan datos.
Escenarios
El lugar y el método que utilice la aplicación para realizar las comprobaciones de acceso dependerán del tipo de aplicación que esté compilando. Las aplicaciones que controlan la salida de archivo completo y no tienen ninguna interfaz de usuario suelen usar los derechos EXTRACT
o OWNER
. Las aplicaciones con una interfaz de usuario requieren controles más exhaustivos, lo que bloqueará el acceso a los controles de usuario y las rutas de acceso de exportación en la aplicación. Consulte la sección sobre la realización de comprobaciones de acceso para ver ejemplos de código.
Aplicaciones sin una interfaz de usuario
Las aplicaciones sin una interfaz de usuario suelen ser interfaces de línea de comandos (CLI) o basadas en servicios. Si la aplicación controla archivos protegidos mediante Purview Information Protection, debe asegurarse de que un usuario sin los derechos correspondientes no pueda usar el servicio o la CLI para exportar el archivo en un formato desprotegido.
Estas aplicaciones deben validar que los derechos OWNER o EXTRACT estén presentes. Los usuarios con el derecho OWNER pueden realizar cualquier operación. Los usuarios con el derecho EXTRACT pueden quitar directamente la protección o guardar el archivo en un nuevo formato, incluso si ese formato no admite la protección.
Aplicaciones con una interfaz de usuario
Las aplicaciones del SDK de archivos con una interfaz de usuario deben implementar controles que restrinjan el acceso a las operaciones que el usuario no puede realizar. Un ejemplo de este tipo de aplicación es el Visor de Azure Information Protection. El visor descifra temporalmente el archivo y representa el contenido en la ventana de la aplicación. Realiza comprobaciones de acceso pormenorizadas antes de mostrar el documento y deshabilita los elementos de la interfaz de usuario en función de los resultados de las comprobaciones de acceso.
Un flujo de trabajo parcial de comprobaciones de acceso podría tener el siguiente aspecto:
- ¿El usuario tiene el derecho OWNER? Si es así, habilite todos los controles y detenga el procesamiento del resto de derechos.
- ¿El usuario tiene el derecho PRINT? Si es así, habilite el control de impresión. Si no es así, deshabilite el control de impresión.
- ¿El usuario tiene el derecho EXPORT? Si es así, habilite los controles de exportación y los elementos de la interfaz de usuario. Si no es así, deshabilite estos elementos.
- ¿El usuario tiene el derecho EXTRACT? Si es así, habilite la copia y las capturas de pantalla. Si no es así, deshabilite estas funciones.
- ¿El usuario tiene el derecho EDIT? Si es así, habilite la edición y el guardado del elemento actual. Si no es así, haga que el elemento sea de solo lectura.
Estas comprobaciones deben realizarse para todos los permisos de la tabla de lista de derechos y resultados, excepto en el caso del derecho VIEW. El archivo no será accesible sin este derecho.
Realización de comprobaciones de acceso
Los modelos para realizar la comprobación de acceso son similares en el SDK de archivos y protección para C++, .NET y Java.
En estos ejemplos de código se presupone que ha realizado los pasos necesarios para inicializar el SDK y ha creado instancias de un motor y un controlador.
- Inicio rápido: Inicialización de la aplicación cliente (C++)
- Inicio rápido: Inicialización de la aplicación cliente (C#)
- Inicio rápido: Inicialización de aplicaciones cliente para SDK de protección (C++)
- Inicio rápido: Inicialización de aplicaciones cliente para SDK de protección (C#)
Realización de comprobaciones de acceso en el SDK de archivos con .NET
En este fragmento de código se presupone que se ha creado un FileHandler y que este apunta a un archivo válido.
// 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.");
}
}
Realización de comprobaciones de acceso en el SDK de protección con .NET
En este fragmento de código se presupone que se ha creado un ProtectionHandler para su consumo.
// 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);
}
}
Realización de comprobaciones de acceso en el SDK de archivos con C++
En este fragmento de código se presupone que se ha creado un FileHandler y que este apunta a un archivo válido.
// 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.");
}
}
Realización de comprobaciones de acceso en el SDK de protección con C++
En este fragmento de código se presupone que se ha creado un ProtectionHandler para su consumo.
// 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);
}
}
Pasos siguientes
Ahora que tiene una idea de cómo realizar correctamente las comprobaciones de acceso y aplicar los derechos asociados a esas comprobaciones, continúe con los conceptos del controlador de archivos para obtener más información sobre cómo quitar la protección de los archivos.