Procedimiento para configurar el control de acceso para el área de trabajo de Azure Synapse

En este artículo, se describen los pasos a seguir para controlar el acceso a un área de trabajo de Microsoft Azure Synapse. Para lograrlo, usaremos una combinación de roles de Azure, roles Azure Synapse, permisos de SQL y permisos de GIT.

Al seguir los pasos de esta guía, configurará un área de trabajo y un sistema de control de acceso básico. Esta información puede usarse en muchos tipos de proyectos de Synapse. Asimismo, encontrará algunas opciones más avanzadas que le permitirán realizar un control más preciso si fuera necesario.

El control de acceso de Synapse puede simplificarse mediante el uso de grupos de seguridad que estén alineados con los roles y los perfiles de la organización. Esto le permite administrar el acceso a los grupos de seguridad de forma sencilla, mediante la adición y eliminación de usuarios.

Antes de comenzar esta guía, lee la visión general del control de acceso al espacio de trabajo de Azure Synapse para familiarizarte con los mecanismos de control de acceso utilizados por Synapse Analytics.

Mecanismos de control de acceso

Nota

El método que se usa en esta guía consiste en crear grupos de seguridad. Si asigna roles a estos grupos de seguridad, solo tendrá que administrar la pertenencia a esos grupos para controlar el acceso a las áreas de trabajo.

Para proteger un área de trabajo de Synapse, deberá configurar los siguientes elementos:

  • Grupos de seguridad, para agrupar usuarios con requisitos de acceso similares.
  • Roles de Azure, para controlar quién puede crear y administrar grupos SQL, grupos de Apache Spark y entornos de ejecución de integración, y acceder al almacenamiento de ADLS Gen2.
  • Roles de Synapse, para controlar el acceso a los artefactos de código publicados, el uso de recursos de proceso de Apache Spark y los entornos de ejecución de integración.
  • Permisos de SQL, para controlar el acceso administrativo y del plano de datos a los pools de SQL.
  • Permisos de GIT, para controlar quién puede acceder a los artefactos de código en el control de versiones si se configura la compatibilidad con GIT en las áreas de trabajo.

Pasos para proteger un área de trabajo de Synapse

En este documento se usan nombres estándar para simplificar las instrucciones. Reemplácelos por nombres de su elección.

Configuración Nombre estándar Description
Área de trabajo de Synapse workspace1 Nombre que tendrá el área de trabajo de Azure Synapse.
Cuenta de ADLSGEN2 storage1 Cuenta de ADLS que se usará con el área de trabajo.
Contenedor container1 Contenedor en storage1 que el área de trabajo usará de forma predeterminada.
Inquilino de Microsoft Entra ID contoso El nombre del tenant de Microsoft Entra ID.
Entidad de servicio SERVICEPRINCIPAL Una entidad de servicio en su inquilino de Microsoft Entra ID.

Paso 1: Configura los grupos de seguridad

Sugerencia

Utiliza opciones granulares para controlar el acceso a tu espacio de trabajo. Concede a los desarrolladores acceso a recursos individuales, en lugar de a un espacio de trabajo completo. Para más información sobre Synapse RBAC, consulte ¿Qué es el control de acceso basado en roles (RBAC) de Synapse?

Cree los siguientes grupos de seguridad para su área de trabajo:

  • workspace1_SynapseAdministrators, para usuarios que necesiten un control completo del área de trabajo. Agréguese a usted mismo a este grupo de seguridad, al menos inicialmente.
  • workspace1_SynapseContributors, para desarrolladores que necesiten desarrollar, depurar y publicar código en un servicio.
  • workspace1_SynapseComputeOperators , para los usuarios que necesitan administrar y supervisar los grupos de Apache Spark y los entornos de ejecución de integración.
  • workspace1_SynapseCredentialUsers, para los usuarios que necesitan depurar y ejecutar canalizaciones de orquestación mediante credenciales de MSI (identidad del servicio administrada) del área de trabajo y cancelar las ejecuciones de canalización.

En breve, asignará roles de Synapse a estos grupos en el ámbito del área de trabajo.

Cree también este grupo de seguridad:

  • workspace1_SQLAdmins, grupo para los usuarios que necesitan autoridad de administrador de Active Directory de SQL en los grupos de SQL del área de trabajo.

El grupo workspace1_SQLAdmins, que se usará para configurar los permisos de SQL al crear grupos de SQL.

Estos 5 grupos son suficientes para llevar a cabo una configuración básica. Más adelante, podrá agregar grupos de seguridad que le ayudarán a gestionar los usuarios que necesiten un acceso más especializado o a restringir el acceso únicamente a recursos concretos.

Nota

Sugerencia

Los usuarios individuales de Synapse pueden usar Microsoft Entra ID en Azure Portal para ver los grupos a los que pertenecen. Esto les permitirá determinar qué roles se les han concedido.

Paso 2: Prepare la cuenta de almacenamiento de ADLS Gen2

En las áreas de trabajo de Synapse se usan contenedores de almacenamiento predeterminados para los siguientes fines:

  • Almacenamiento de los archivos de datos subyacentes para las tablas de Spark
  • Los registros de ejecución de los trabajos de Spark
  • Administración de las bibliotecas que decida instalar

Identifique la siguiente información sobre su almacenamiento:

  • Cuenta de ADLS Gen2 que usará para el área de trabajo. En este documento, se llama storage1. storage1 se considera la cuenta de almacenamiento "principal" del área de trabajo.

  • Contenedor dentro de storage1 que el área de trabajo de Synapse usará de forma predeterminada. En este documento, se llama container1.

  • Seleccione Access control (IAM).

  • Seleccione Agregar>Agregar asignación de roles para abrir la página Agregar asignación de roles.

  • Asigne el siguiente rol. Para acceder a los pasos detallados, consulte Asignación de roles de Azure mediante Azure Portal.

    Configuración Valor
    Rol Colaborador de datos de Storage Blob
    Asignar acceso a SERVICEPRINCIPAL
    Miembros workspace1_SynapseAdministrators, workspace1_SynapseContributors y workspace1_SynapseComputeOperators

    Página Agregar asignación de roles en Azure Portal.

Paso 3: Creación y configuración del área de trabajo de Synapse

En Azure Portal, cree un área de trabajo de Synapse de la siguiente manera:

  • Seleccione su suscripción

  • Seleccione o cree un grupo de recursos en el que posea el rol Propietario de Azure.

  • Asigne el nombre workspace1 al área de trabajo.

  • Seleccione storage1 para la cuenta de almacenamiento.

  • Elija container1 para el contenedor que se usará como "sistema de archivos".

  • Abrir workspace1 en Synapse Studio

  • En Synapse Studio, vaya a Administrar>Control de acceso. En la sección ámbito del workspace, asigne roles de Synapse a los grupos de seguridad de la siguiente manera:

    • Asigne el rol Administrador de Synapse en workspace1_SynapseAdministrators.
    • Asigne el rol Colaborador de Synapse a workspace1_SynapseContributors.
    • Asigne el rol Operador de proceso de Synapse a workspace1_SynapseComputeOperators.

Paso 4: Concesión de acceso al MSI del área de trabajo al contenedor de almacenamiento predeterminado

Para ejecutar canalizaciones y realizar tareas del sistema, Azure Synapse necesita que la identidad de servicio administrada tenga acceso a container1 en la cuenta predeterminada de ADLS Gen2 del área de trabajo. Para más información, consulte Identidades gestionadas para Azure Synapse Analytics.

  • Abra Azure Portal

  • Busque la cuenta de almacenamiento, storage1, y luego container1.

  • Seleccione Access control (IAM).

  • Para abrir la página Agregar asignación de roles, seleccione Agregar>Agregar asignación de roles.

  • Asigne el siguiente rol. Para acceder a los pasos detallados, consulte Asignación de roles de Azure mediante Azure Portal.

    Configuración Valor
    Rol Colaborador de datos de Storage Blob
    Asignar acceso a MANAGEDIDENTITY
    Miembros Nombre de la identidad administrada

    Nota

    El nombre de la identidad administrada también es el nombre del área de trabajo.

    Página Agregar asignación de roles en Azure Portal.

Paso 5: Concesión del rol Colaborador de Azure a los administradores de Synapse en el área de trabajo

Para crear grupos SQL, grupos de Apache Spark y entornos de ejecución de integración, los usuarios necesitan como mínimo un rol de colaborador de Azure para el área de trabajo. El rol Colaborador también permite que estos usuarios administren los recursos, incluyendo pausar y escalar. Para utilizar Azure Portal o Synapse Studio para crear grupos SQL, grupos de Apache Spark y entornos de ejecución de integración, necesita un rol de colaborador en el nivel del grupo de recursos.

  • Abra Azure Portal

  • Busque el área de trabajo workspace1.

  • Seleccione Access control (IAM).

  • Para abrir la página Agregar asignación de roles, seleccione Agregar>Agregar asignación de roles.

  • Asigne el siguiente rol. Para acceder a los pasos detallados, consulte Asignación de roles de Azure mediante Azure Portal.

    Configuración Valor
    Rol Colaborador (enumerado en «Roles de administrador con privilegios»)
    Asignar acceso a SERVICEPRINCIPAL
    Miembros workspace1_SynapseAdministrators

    Agregar página de asignación de roles en el portal de Azure.

Paso 6: Asignar un rol de administrador SQL Microsoft Entra ID

Al creador del área de trabajo se le asigna automáticamente como Administrador de SQL Active Directory de esa área de trabajo. Este rol solo se puede conceder a un solo usuario o grupo. Este paso consistirá en la asignación del rol Administrador de SQL Active Directory del área de trabajo al grupo de seguridad workspace1_SQLAdmins. De esta manera, le proporcionará a este grupo un acceso de administrador con privilegios elevados para todas las bases de datos y grupos de SQL del el área de trabajo.

  • Abra Azure Portal
  • Ir a workspace1
  • En Configuración, seleccione Microsoft Entra ID
  • Seleccione Establecer administrador y elija workspace1_SQLAdmins.

Nota

El paso 6 es opcional. Puede optar por conceder al grupo workspace1_SQLAdmins un rol menos privilegiado. Para asignar db_owner u otros roles SQL, debe ejecutar scripts en cada base de datos SQL.

Paso 7: Concesión de acceso a grupos de SQL

De forma predeterminada, el administrador de Synapse también tendrá el rol de SQL db_owner para los grupos de SQL sin servidor del área de trabajo.

El acceso a los pools de SQL por parte de otros usuarios se controla mediante permisos de SQL. Para asignar permisos de SQL, es necesario que se ejecuten ciertos scripts de SQL tras la creación de cada base de datos SQL. A continuación se muestran ejemplos en los que es necesario ejecutar estos scripts:

  1. Para conceder a los usuarios acceso al grupo de SQL sin servidor, "Built-in" y sus bases de datos.

  2. Para conceder a ciertos usuarios acceso a las bases de datos dedicadas de grupos de SQL. Encontrará scripts de ejemplo de SQL en una sección posterior de este artículo.

  3. Para conceder acceso a la base de datos dedicada de un grupo de SQL, el creador del área de trabajo o cualquier miembro del grupo workspace1_SynapseAdministrators puede ejecutar los scripts correspondientes.

  4. Para conceder acceso a un grupo de SQL sin servidor ("integrado"), cualquier miembro del grupo workspace1_SQLAdmins o workspace1_SynapseAdministrators puede ejecutar los scripts correspondientes.

Sugerencia

Puede conceder acceso a todas las bases de datos de SQL si sigue los siguientes pasos en cada grupo de SQL. La sección Configurar permisos con ámbito de área de trabajo supone una excepción a la regla, ya que te permite asignar a un usuario el rol de sysadmin en el nivel del área de trabajo.

Paso 7a: Grupo de SQL sin servidor, integrado

Puede usar los ejemplos de script que encontrará en esta sección para conceder a los usuarios permisos de acceso a una base de datos individual o a todas las bases de datos de un grupo de SQL sin servidor (Built-in).

Nota

En los ejemplos de script que se proporcionan a continuación, reemplace el valor alias por el alias del usuario o grupo al que se le concede acceso. Reemplace domain por el dominio de la empresa que va a usar.

Configurar permisos con ámbito de base de datos

Si sigue los pasos que se describen en el siguiente ejemplo, podrá conceder a los usuarios acceso a una sola base de datos SQL sin servidor:

  1. Cree un inicio de sesión. Cambie al contexto de base de datos master.

    --In the master database
    CREATE LOGIN [alias@domain.com] FROM EXTERNAL PROVIDER;
    
  2. Cree un usuario en la base de datos. Cambie el contexto a la base de datos.

    -- In your database
    CREATE USER alias FROM LOGIN [alias@domain.com];
    
  3. Agregue el usuario como miembro del rol especificado en la base de datos (en este caso, el rol db_owner).

    ALTER ROLE db_owner ADD member alias; -- Type USER name from step 2
    

Configuración de permisos de acceso en el ámbito de un área de trabajo

También es posible conceder acceso completo a todos los grupos de SQL sin servidor de un área de trabajo. Para ello, ejecute el script que se incluye en el siguiente ejemplo en la base de datos master:

CREATE LOGIN [alias@domain.com] FROM EXTERNAL PROVIDER;
ALTER SERVER ROLE sysadmin ADD MEMBER [alias@domain.com];

Paso 7b: Configuración de grupos de SQL dedicados

Es posible conceder acceso a una sola base de datos dedicada correspondiente a un pool de SQL. Para ello, complete los siguientes pasos en el editor de scripts de Azure Synapse SQL:

  1. Cree un usuario en la base de datos mediante la ejecución de los siguientes comandos. Seleccione la base de datos de destino en la lista desplegable Conectar con:

    --Create user in the database
    CREATE USER [<alias@domain.com>] FROM EXTERNAL PROVIDER;
    -- For Service Principals you would need just the display name and @domain.com is not required
    
  2. Conceda al usuario un rol para acceder a la base de datos:

    --Grant role to the user in the database
    EXEC sp_addrolemember 'db_owner', '<alias@domain.com>';
    

Importante

Los roles de base de datos db_datareader y de db_datawriter pueden proporcionar permisos de lectura y escritura en los escenarios en los que no desee conceder permisos de db_owner. Sin embargo, el permiso db_owner es necesario para que los usuarios de Spark lean y escriban directamente desde Spark en o desde un pool SQL.

Tras el proceso de creación de los usuarios, puede ejecutar consultas para confirmar que los grupos de SQL sin servidor pueden consultar cuentas de almacenamiento.

Paso 8: Adición de usuarios a grupos de seguridad

A estas alturas, la configuración inicial del sistema de control de acceso ya está completa.

Puede agregar usuarios a los grupos de seguridad que configuró, así como quitarlos, para administrar su acceso a estos. Puede asignar manualmente a usuarios a los roles de Azure Synapse, pero esto establecerá los permisos de forma incoherente. En su lugar, solo tiene que agregar o quitar usuarios de los grupos de seguridad.

Paso 9: Seguridad de redes

Como último paso para asegurar tu espacio de trabajo, asegura el acceso a la red utilizando el cortafuegos del espacio de trabajo.

Paso 10: Finalización

El área de trabajo ahora está completamente configurada y protegida.

Compatibilidad con escenarios más avanzados

Esta guía se centra en la configuración de un sistema de control de acceso básico. Para admitir escenarios más avanzados, puede crear otros grupos de seguridad y asignarles roles más precisos en ámbitos más específicos. Considere los casos siguientes:

Habilite la compatibilidad con GIT para el área de trabajo a fin de obtener escenarios de desarrollo más avanzados, como CI/CD. En el modo GIT, los permisos de GIT y RBAC de Synapse determinarán si un usuario puede hacer commit de los cambios en su rama de trabajo. La publicación en el servicio solo tiene lugar desde la rama de colaboración. Considere la posibilidad de crear un grupo de seguridad para los desarrolladores que necesitan desarrollar y depurar las actualizaciones en una rama de trabajo, pero que no necesitan publicar los cambios en el servicio en directo.

Restrinja el acceso de los desarrolladores a recursos específicos. Cree otros grupos de seguridad más precisos para los desarrolladores que solo necesitan acceder a recursos específicos. Asigne a estos grupos los roles de Azure Synapse adecuados que tengan como ámbito pools de Spark específicos, entornos de ejecución de integración o credenciales.

Restrinja a los operadores el acceso a los artefactos de código. Cree grupos de seguridad para los operadores que deban supervisar el estado operativo de los recursos de proceso de Synapse y ver los registros, pero que no necesitan acceder al código ni publicar actualizaciones en el servicio. Asigne a estos grupos el rol Compute Operator en el ámbito de pools de Spark y de entornos de ejecución de integración específicos.

Deshabilitar la autenticación local. Al permitir solo la autenticación de Microsoft Entra, puede administrar de forma centralizada el acceso a los recursos de Azure Synapse, como grupos de SQL. La autenticación local de todos los recursos dentro del área de trabajo se puede deshabilitar durante la creación del área de trabajo o después de esta. Para obtener más información sobre la autenticación solo de Microsoft Entra, consulte Deshabilitación de la autenticación local en Azure Synapse Analytics.