Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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
- Descargar o clonar el informe de Muestras para que tenga una copia local.
- 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.
- 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.
- 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:
Cree un editor de soluciones llamado
ColumnLevelSecuritySamplePublishercon el prefijo de personalización desamplesi no existe.Cree una solución llamada
ColumnLevelSecuritySampleSolutionasociada al editor si no existe.Todos los elementos posteriores compatibles con la solución se crean en el contexto de esta solución.
Cree una tabla llamada
sample_Examplesi no existe.Cree cuatro columnas de cadena en la tabla
sample_Examplesi no existen. Los nombres del esquema de tabla son:sample_Emailsample_GovernmentIdsample_TelephoneNumbersample_DateOfBirth
Elimine los datos de ejemplo existentes en la tabla
sample_Example.Agregue tres filas de datos de ejemplo con información en cada columna de la tabla
sample_Example.Cree un nuevo rol de seguridad denominado Rol de ejemplo de seguridad de nivel de columna.
Agregue privilegios para la tabla
sample_Exampleal rol de seguridad.Asocie el usuario al rol de seguridad.
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.
Asocie el usuario de la aplicación al perfil de seguridad de campo.
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
- Utilice el método
Examples.DumpColumnSecurityInfopara descargar un archivo CSV con datos sobre qué columnas del sistema se pueden proteger. - Utilice el método
Examples.GetSecuredColumnListpara recuperar y mostrar una lista de columnas de entorno que ya están protegidas.
Proteger columnas
- Demostrar que el usuario de la aplicación puede recuperar datos de todas las columnas de la tabla
sample_Example. - Use el método
Examples.SetColumnIsSecuredpara proteger las cuatro columnas - 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
- Utilice el método
Examples.GrantColumnAccesspara 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). - Demostrar que el usuario de la aplicación ahora puede recuperar datos de los campos de registros protegidos de la tabla
sample_Example. - Demuestre que el usuario de la aplicación no tiene permiso para escribir datos en las columnas protegidas.
- Utilice el método
Examples.ModifyColumnAccesspara conceder acceso de escritura a un campo de registro específico. - Demuestre que el usuario de la aplicación ahora puede escribir datos en el campo de registro específico.
- Use el método
Examples.RevokeColumnAccesspara eliminar los registrosPrincipalObjectAttributeAccessque daban acceso al usuario de la aplicación a las columnas protegidas.
Administrar el acceso a datos de columna seguros para grupos
- Agregue permisos de campo al registro dePerfil de seguridad de campo de ejemplo que se creó en
Setupcreando registros de Permisos de campo (FieldPermission) - Demuestre que el usuario de la aplicación solo puede ver las columnas protegidas especificadas en los registros de permisos de campo.
- 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
- 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. - Actualice los valores de columna
canreadunmaskedde los registros de Permiso de campo (FieldPermission) creados anteriormente. - Espere 30 segundos para que la caché se ponga al día con los nuevos objetos creados.
- Demuestre que el usuario de la aplicación ahora puede recuperar datos con valores enmascarados.
- 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.
- 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.
- Exporte la solución creada con todas las configuraciones como solución no administrada.
- 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.
Muestras relacionadas
Ejemplo: Seguridad de nivel de columna mediante API Web de Dataverse (PowerShell)