Compartir vía


Configuración del control de acceso en objetos sincronizados en un grupo de SQL sin servidor

En Azure Synapse Analytics, las bases de datos y las tablas de Spark se comparten con el grupo de SQL sin servidor. Las bases de datos de lago, Parquet y las tablas de copia de seguridad CSV creadas con Spark están disponibles automáticamente en el grupo de SQL sin servidor. Esta característica permite usar grupos de SQL sin servidor para explorar y consultar los datos preparados mediante grupos de Spark. En el diagrama siguiente, puede ver información general sobre la arquitectura de alto nivel para usar esta característica. En primer lugar, Pipelines de Azure Synapse está moviendo datos desde el almacenamiento local (u otro) a Azure Data Lake Storage. Spark ahora puede enriquecer los datos y crear bases de datos y tablas que se sincronizan con Synapse SQL sin servidor. Más adelante, el usuario puede ejecutar consultas ad hoc sobre los datos enriquecidos o servirlos a Power BI por ejemplo.

Enrich in Spark, serve with SQL diagram.

Acceso de administrador completo (sysadmin)

Una vez que estas bases de datos y tablas se sincronizan entre Spark y un grupo de SQL sin servidor, estas tablas externas del grupo de SQL sin servidor se pueden usar para acceder a los mismos datos. Sin embargo, los objetos del grupo de SQL sin servidor son de solo lectura para mantener la coherencia con los objetos de los grupos de Spark. La limitación hace que solo los usuarios con roles de administrador de Synapse SQL o administrador de Synapse puedan acceder a estos objetos en un grupo de SQL sin servidor. Si un usuario que no es administrador intenta ejecutar una consulta en la base de datos o la tabla sincronizada, recibirá un error como el siguiente: External table '<table>' is not accessible because content of directory cannot be listed., a pesar de tener acceso a los datos en las cuentas de almacenamiento subyacentes.

Dado que las bases de datos sincronizadas en el grupo de SQL sin servidor son de solo lectura, no se pueden modificar. Si se intenta crear un usuario o concederle otros permisos, se producirá un error. Para leer bases de datos sincronizadas, se deben tener permisos de nivel de servidor con privilegios (como sysadmin). Esta limitación también está presente en las tablas externas del grupo de SQL sin servidor cuando se usan tablas de bases de datos de lago y Azure Synapse Link para Dataverse.

Acceso no de administrador a bases de datos sincronizadas

Un usuario que necesita leer datos y crear informes normalmente no tiene acceso de administrador completo (sysadmin). Este usuario suele ser un analista de datos que solo necesita leer y analizar datos mediante las tablas existentes. No es necesario crear nuevos objetos.

Un usuario con permisos mínimos debe ser capaz de:

  • Conectarse a una base de datos que se replica desde Spark.
  • Seleccionar datos a través de tablas externas y acceder a los datos de ADLS subyacentes.

Después de ejecutar el script de código siguiente, permitirá que los usuarios que no son administradores tengan permisos de nivel de servidor para conectarse a cualquier base de datos. También permitirá a los usuarios ver datos de todos los objetos de nivel de esquema, como tablas o vistas. La seguridad de acceso a datos se puede administrar en la capa de almacenamiento.

-- Creating Azure AD login (same can be achieved for Azure AD app)
    CREATE LOGIN [login@contoso.com] FROM EXTERNAL PROVIDER;
    go;
    
    GRANT CONNECT ANY DATABASE to [login@contoso.com];
    GRANT SELECT ALL USER SECURABLES to [login@contoso.com];
    GO;

Nota:

Estas instrucciones deben ejecutarse en la base de datos maestra, ya que estos permisos son todos de nivel de servidor.

Después de crear un inicio de sesión y conceder permisos, los usuarios pueden ejecutar consultas sobre las tablas externas sincronizadas. Esta mitigación también se puede aplicar a los grupos de seguridad de Microsoft Entra.

Se puede administrar más seguridad en los objetos a través de esquemas específicos y bloquear el acceso a un esquema específico. La solución alternativa requiere DDL adicional. Para este escenario, puede crear nuevas vistas, esquemas y bases de datos sin servidor que apunten a los datos de las tablas de Spark en ADLS.

El acceso a los datos de la cuenta de almacenamiento se puede administrar a través de ACL o los roles de propietario, lector y colaborador de datos de Storage Blob normales para usuarios o grupos de Microsoft Entra. En el caso de las entidades de servicio (aplicaciones de Microsoft Entra), asegúrese de usar la configuración de ACL.

Nota:

  • Si desea prohibir el uso de OPENROWSET en los datos, puede usar DENY ADMINISTER BULK OPERATIONS to [login@contoso.com];. Para obtener más información, visite Permisos de servidor DENY.
  • Si desea prohibir el uso de esquemas específicos, puede usar DENY SELECT ON SCHEMA::[schema_name] TO [login@contoso.com];. Para obtener más información, visite Permisos de esquema DENY.

Pasos siguientes

Para obtener más información, consulte Autenticación de SQL.