Compartir a través de


Ejemplo: Seguridad de nivel de columna mediante SDK de Dataverse para .NET

En este ejemplo se muestra cómo realizar operaciones de seguridad de nivel de columna mediante el SDK de Dataverse para .NET.

Requisitos previos

  • Microsoft Visual Studio 2022
  • Acceso a Dataverse con privilegios de administrador del sistema.

Cómo ejecutar esta muestra

  1. Descargar o clonar el informe de Muestras para que tenga una copia local.
  2. Siga las instrucciones de la sección Configurar usuarios para crear una segunda cuenta de usuario de la aplicación sin el rol de administrador del sistema.
  3. Edite el archivo /ColumnLevelSecurity/appsettings.json para definir una cadena de conexión que especifique la instancia de Microsoft Dataverse a la que desea conectar tanto para el administrador del sistema como para el segundo usuario de la aplicación.
  4. Abra la solución de ejemplo en Visual Studio y presione F5 para ejecutar la muestra.

Qué hace este ejemplo

En este ejemplo se muestran las funcionalidades descritas en Seguridad de nivel de columna con código:

  • Descubrir qué columnas se pueden proteger en un entorno de Dataverse
  • Descubra qué columnas están protegidas actualmente
  • Proteger columnas en un entorno de Dataverse
  • Conceder acceso de lectura o escritura a los campos seleccionados a usuarios individuales
  • Modificar el acceso a los campos protegidos para usuarios individuales
  • Revocar el acceso a los campos seleccionados para usuarios individuales
  • Proporcionar acceso de lectura y escritura a grupos específicos de usuarios
  • Habilitar enmascaramiento de columnas protegidas
  • Recuperar valores desenmascarados para columnas protegidas

Archivo de muestra

El código de este ejemplo se encuentra en los siguientes archivos:

Archivo Description
Program.cs Controla el flujo de la muestra. Contiene la definición de los métodos Setup, Run y Cleanup y los llama en el método Main.
Examples.cs Contiene métodos que muestran operaciones relacionadas con las operaciones de seguridad a nivel de columna.
Helpers.cs Contiene los métodos utilizados por el ejemplo para administrar, configurar y ejecutar el ejemplo. Estos métodos no son el foco de este ejemplo.

Este ejemplo está diseñado para ser resistente cuando se producen errores, por lo que debería poder volver a ejecutar el ejemplo si se produjo un error anteriormente.

Cómo funciona este ejemplo

Para crear el escenario descrito en Qué hace este ejemplo, el ejemplo hace las siguientes operaciones:

Configurar

El método Setup estático de este ejemplo realiza las operaciones siguientes:

  1. Cree un editor de soluciones llamado ColumnLevelSecuritySamplePublisher con el prefijo de personalización de sample si no existe.

  2. Cree una solución llamada ColumnLevelSecuritySampleSolution asociada al editor si no existe.

    Todos los elementos posteriores compatibles con la solución se crean en el contexto de esta solución.

  3. Cree una tabla llamada sample_Example si no existe.

  4. Cree cuatro columnas de cadena en la tabla sample_Example si no existen. Los nombres del esquema de tabla son:

    • sample_Email
    • sample_GovernmentId
    • sample_TelephoneNumber
    • sample_DateOfBirth
  5. Elimine los datos de ejemplo existentes en la tabla sample_Example.

  6. Agregue tres filas de datos de ejemplo con información en cada columna de la tabla sample_Example.

  7. Cree un nuevo rol de seguridad denominado Rol de ejemplo de seguridad de nivel de columna.

  8. Agregue privilegios para la tabla sample_Example al rol de seguridad.

  9. Asocie el usuario al rol de seguridad.

  10. Cree un registro de Perfil de seguridad de campo denominado Perfil de seguridad de campo de ejemplo que se usa en la sección Administrar el acceso mediante perfiles de seguridad de campo del ejemplo.

  11. Asocie el usuario de la aplicación al perfil de seguridad de campo.

  12. Espere 30 segundos para que la caché se ponga al día con los nuevos objetos creados.

Demostración

El método Run estático de este ejemplo realiza las operaciones siguientes:

Recuperar información acerca de las columnas

  1. Utilice el método Examples.DumpColumnSecurityInfo para descargar un archivo CSV con datos sobre qué columnas del sistema se pueden proteger.
  2. Utilice el método Examples.GetSecuredColumnList para recuperar y mostrar una lista de columnas de entorno que ya están protegidas.

Proteger columnas

  1. Demostrar que el usuario de la aplicación puede recuperar datos de todas las columnas de la tabla sample_Example.
  2. Use el método Examples.SetColumnIsSecured para proteger las cuatro columnas
  3. Demostrar que el usuario de la aplicación ya no puede recuperar datos de las columnas protegidas de la tabla sample_Example.

Conceder acceso a datos de columnas protegidas a particulares

  1. Utilice el método Examples.GrantColumnAccess para conceder a los usuarios de la aplicación acceso de lectura a valores de campo de registro específicos mediante la creación de un registro de uso compartido de campos (PrincipalObjectAttributeAccess).
  2. Demostrar que el usuario de la aplicación ahora puede recuperar datos de los campos de registros protegidos de la tabla sample_Example.
  3. Demuestre que el usuario de la aplicación no tiene permiso para escribir datos en las columnas protegidas.
  4. Utilice el método Examples.ModifyColumnAccess para conceder acceso de escritura a un campo de registro específico.
  5. Demuestre que el usuario de la aplicación ahora puede escribir datos en el campo de registro específico.
  6. Use el método Examples.RevokeColumnAccess para eliminar los registros PrincipalObjectAttributeAccess que daban acceso al usuario de la aplicación a las columnas protegidas.

Administrar el acceso a datos de columna seguros para grupos

  1. Agregue permisos de campo al registro dePerfil de seguridad de campo de ejemplo que se creó en Setup creando registros de Permisos de campo (FieldPermission)
  2. Demuestre que el usuario de la aplicación solo puede ver las columnas protegidas especificadas en los registros de permisos de campo.
  3. Demostrar que el usuario de la aplicación no puede escribir datos en el campo de registro específico no habilitado con permisos de campo.

Enmascaramiento

  1. Recupere los valores de id. para las reglas de enmascaramiento existentes. Cree nuevos registros de Columna de enmascaramiento protegido (AttributeMaskingRule) para especificar las reglas de enmascaramiento para las columnas de la tabla sample_Example.
  2. Actualice los valores de columna canreadunmasked de los registros de Permiso de campo (FieldPermission) creados anteriormente.
  3. Espere 30 segundos para que la caché se ponga al día con los nuevos objetos creados.
  4. Demuestre que el usuario de la aplicación ahora puede recuperar datos con valores enmascarados.
  5. Demuestre que el usuario de la aplicación ahora puede recuperar valores desenmascarados con una clase de RetrieveMultipleRequest al usar el parámetro opcional UnMaskedData.
  6. Demuestre que el usuario de la aplicación ahora puede recuperar valores desenmascarados con una clase de RetrieveMultipleRequest al usar el parámetro opcional UnMaskedData.

Exportar solución

Use una solución exportada para probar la funcionalidad de las configuraciones de ejemplo fuera de esta muestra.

  1. Exporte la solución creada con todas las configuraciones como solución no administrada.
  2. Exporte la solución creada con todas las configuraciones como solución administrada.

Limpiar

El método Cleanup estático de este ejemplo realiza las operaciones siguientes:

Cuando la configuración de SampleSettings.DeleteCreatedObjects en appsettings.json es true, el método Cleanup intenta eliminar todos los componentes creados durante Setup o Run. El objetivo es devolver el entorno al estado original. Si no desea que se eliminen los elementos, puede cambiar la configuración a false.

Ejemplo: Seguridad de nivel de columna mediante API Web de Dataverse (PowerShell)