Comment configurer le contrôle d’accès sur des objets synchronisés dans un pool SQL serverless
Dans Azure Synapse Analytics, les bases de données et les tables Spark sont partagées avec un pool SQL serverless. Les bases de données Lake, Parquetet les tables sauvegardées CSV créées avec Spark sont automatiquement disponibles dans un pool SQL serverless. Cette fonctionnalité permet l’utilisation du pool SQL serverless pour explorer et demander les données préparées à l’aide de pools Spark. Dans le diagramme ci-dessous, vous pouvez voir une vue d’ensemble de l’architecture de haut niveau pour utiliser cette fonctionnalité. Tout d’abord, les pipelines Azure Synapse déplacent les données du stockage local (ou d’un autre stockage) vers Azure Data Lake Storage. Spark peut désormais enrichir les données et créer des bases de données, ainsi que des tables qui sont synchronisées avec Synapse SQL serverless. Ensuite, l’utilisateur peut exécuter des requêtes ad hoc sur les données enrichies ou les traiter pour Power BI, par exemple.
Accès administrateur complet (sysadmin)
Une fois que ces bases de données et tables sont synchronisées par Spark avec un pool SQL serverless, ces tables externes dans un pool SQL serverless peuvent être utilisées pour accéder aux mêmes données. Toutefois, les objets du pool SQL serverless sont en lecture seule en raison de la cohérence avec les objets de pools Spark. La limitation permet uniquement aux utilisateurs ayant des rôles d’administrateur Synapse SQL ou Synapse d’accéder à ces objets dans un pool SQL serverless. Si un utilisateur non-administrateur tente d’exécuter une requête sur la base de données/table synchronisée, il recevra une erreur de type : External table '<table>' is not accessible because content of directory cannot be listed.
en dépit de l’accès aux données du ou des compte(s) de stockage sous-jacents.
Étant donné que les bases de données synchronisées dans un pool SQL serverless sont en lecture seule, elles ne peuvent pas être modifiées. La création d’un utilisateur ou l’attribution d’autres autorisations échoue, si vous avez essayé de le faire. Pour la lecture des bases de données synchronisées, l’une d’elles doit avoir des autorisations privilégiées au niveau du serveur (comme sysadmin). Cette limitation est également présente sur les tables externes du pool SQL serverless, lors de l’utilisation de Azure Synapse Link pour Dataverse et des tables de bases de données du lac.
Accès non-administrateur aux bases de données synchronisées
Un utilisateur qui a besoin de lire des données et de créer des rapports ne dispose généralement pas d’un accès administrateur complet (sysadmin). Cet utilisateur est généralement un analyste de données qui a simplement besoin de lire et d’analyser des données à l’aide des tables existantes. Ils n’ont pas besoin de créer de nouveaux objets.
Un utilisateur disposant d’une autorisation minimale doit être en mesure d’effectuer les opérations suivantes :
- Se connecter à une base de données répliquée à partir de Spark
- Sélectionner des données par le biais de tables externes et accéder aux données ADLS sous-jacentes.
Après l’exécution du script de code ci-dessous, les utilisateurs non-administrateurs peuvent avoir des autorisations au niveau du serveur pour se connecter à n’importe quelle base de données. Il permet également aux utilisateurs d’afficher les données de tous les objets au niveau du schéma, tels que les tables ou les affichages. La sécurité d’accès aux données peut être gérée sur la couche de stockage.
-- 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;
Notes
Ces instructions doivent être exécutées sur la base de données master, car ce sont toutes des autorisations au niveau du serveur.
Après la création d’une connexion et l’octroi d’autorisations, les utilisateurs peuvent exécuter des requêtes sur les tables externes synchronisées. Cette atténuation peut également être appliquée aux groupes de sécurité Microsoft Entra.
Une plus grande sécurité sur les objets peut être gérée via des schémas spécifiques et un accès de verrouillage à un schéma spécifique. La solution de contournement requiert un DDL supplémentaire. Pour ce scénario, vous pouvez créer de nouvelles bases de données, schémas et affichages serverless qui pointeront vers les données des tables Spark sur ADLS.
L’accès aux données sur le compte de stockage peut être géré via ACL ou des rôles de propriétaire/lecteur/contributeur de données Blob du stockage standard pour des utilisateurs/groupes Microsoft Entra. Pour les principaux de service (applications Microsoft Entra), veillez à utiliser la configuration ACL.
Remarque
- Si vous souhaitez interdire l’utilisation d’OPENROWSET en plus des données, vous pouvez utiliser
DENY ADMINISTER BULK OPERATIONS to [login@contoso.com];
Pour plus d’informations, consultez Autorisations liées au serveur DENY. - Si vous souhaitez interdire l’utilisation de schémas spécifiques, vous pouvez utiliser
DENY SELECT ON SCHEMA::[schema_name] TO [login@contoso.com];
Pour plus d’informations, consultez DENY - Autorisations sur un schéma.
Étapes suivantes
Pour en savoir plus, consultez Authentification SQL.