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 la API web de Dataverse con PowerShell.
Requisitos previos
Antes de ejecutar este ejemplo, debe leer estos artículos que explican los conceptos y patrones utilizados por ejemplos de PowerShell de Dataverse:
- Inicio rápido de la API web con PowerShell y Visual Studio Code
- Use PowerShell y Visual Studio Code con la API web de Dataverse
Este ejemplo requiere:
Código de Visual Studio. Descargar Visual Studio Code
Extensión de PowerShell para Visual Studio Code. Instalar PowerShell para Visual Studio Code
PowerShell 7.4 o superior. Consulte Instalar PowerShell en Windows, Linux y macOS
Versión del módulo Az PowerShell 11.1.0 o superior. Consulte Instalar Azure PowerShell
Para actualizar una instalación existente a la última versión, use
Update-Module -Name Az -ForceAcceso a Dataverse con privilegios de administrador del sistema.
Una cuenta de usuario de la aplicación con acceso de Usuario básico. Consulte la sección Configurar usuarios para ver instrucciones sobre cómo crear este usuario.
Cómo ejecutar esta muestra
Descargar o clonar el informe de Muestras para que tenga una copia local.
Abra la carpeta ColumnLevelSecurity mediante Visual Studio Code.
Cree un archivo con nombre
.envutilizando los datos que se encuentran en el archivo .env.example.En el archivo
.env, reemplace los valores de los marcadores de posición:# The environment this application will connect to. BASE_URL=https://<yourorg>.api.crm.dynamics.com/ # The application user application id CLIENT_ID=00001111-aaaa-2222-bbbb-3333cccc4444 # The application user secret CLIENT_SECRET=Aa1Bb~2Cc3.-Dd4Ee5Ff6Gg7Hh8Ii9_Jj0Kk1Ll2 # The Entra tenant id TENANT_ID=aaaabbbb-0000-cccc-1111-dddd2222eeeeEstablezca el
BASE_URLen la URL del entorno contra el que desea ejecutar la muestraConsulte la sección Configurar usuarios para obtener instrucciones sobre cómo establecer los valores
CLIENT_ID,CLIENT_SECRETyTENANT_ID.Presione F5 para ejecutar el ejemplo. El archivo
.vscode/launch.jsonestá configurado para ejecutar el archivoColumnLevelSecurity.ps1.
Cuando se ejecute el ejemplo, se le solicita en el navegador predeterminado que seleccione una cuenta de usuario del entorno e introduzca una contraseña.
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 |
|---|---|
ColumnLevelSecurity.ps1 |
Controla el flujo de la muestra. Contiene la definición de funciones Setup, Run y Cleanup y las llama al final. |
Examples.ps1 |
Contiene 12 funciones que muestran operaciones relacionadas con las operaciones de seguridad a nivel de columna. |
Helpers.ps1 |
Contiene constantes y funciones usadas por el ejemplo para administrar, configurar y ejecutar el ejemplo. Estas funciones 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
La función Setup 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
La función Run de este ejemplo realiza las operaciones siguientes:
Recuperar información acerca de las columnas
- Utilice la función
Dump-ColumnSecurityInfo-Examplepara descargar un archivo CSV con datos sobre qué columnas del sistema se pueden proteger. - Utilice la función
Get-SecuredColumnList-Examplepara 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 la función
Set-ColumnIsSecured-Examplepara 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 la función
Grant-ColumnAccess-Examplepara 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 la función
Modify-ColumnAccess-Examplepara 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 la función
Revoke-ColumnAccess-Examplepara 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 solicitud de
GETen la colecciónsample_examplespara devolver varios registros al usar el parámetro opcional UnMaskedData. - Demuestre que el usuario de la aplicación ahora puede recuperar valores desenmascarados con una solicitud de
GETpara recuperar un registro único 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
La función Cleanup estática de este ejemplo realiza las operaciones siguientes:
Cuando la configuración de $DELETE_CREATED_OBJECTS en Helpers.ps1 es true, la función 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 SDK de Dataverse para .NET