Compartir a través de


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

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:

Este ejemplo requiere:

Cómo ejecutar esta muestra

  1. Descargar o clonar el informe de Muestras para que tenga una copia local.

  2. Abra la carpeta ColumnLevelSecurity mediante Visual Studio Code.

  3. Cree un archivo con nombre .env utilizando los datos que se encuentran en el archivo .env.example.

  4. 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-dddd2222eeee
    
  5. Establezca el BASE_URL en la URL del entorno contra el que desea ejecutar la muestra

  6. Consulte la sección Configurar usuarios para obtener instrucciones sobre cómo establecer los valores CLIENT_ID, CLIENT_SECRET y TENANT_ID.

  7. Presione F5 para ejecutar el ejemplo. El archivo .vscode/launch.json está configurado para ejecutar el archivo ColumnLevelSecurity.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:

  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

La función Run de este ejemplo realiza las operaciones siguientes:

Recuperar información acerca de las columnas

  1. Utilice la función Dump-ColumnSecurityInfo-Example para descargar un archivo CSV con datos sobre qué columnas del sistema se pueden proteger.
  2. Utilice la función Get-SecuredColumnList-Example 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 la función Set-ColumnIsSecured-Example 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 la función Grant-ColumnAccess-Example 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 la función Modify-ColumnAccess-Example 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 la función Revoke-ColumnAccess-Example 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 solicitud de GET en la colección sample_examples para devolver varios registros al usar el parámetro opcional UnMaskedData.
  6. Demuestre que el usuario de la aplicación ahora puede recuperar valores desenmascarados con una solicitud de GET para 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.

  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

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.

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