Guide pratique pour configurer le contrôle d’accès pour votre espace de travail Azure Synapse

Cet article vous apprend à contrôler l'accès à un espace de travail Microsoft Azure Synapse. Nous allons utiliser une combinaison de rôles Azure, de rôles Azure Synapse, d’autorisations SQL et d’autorisations Git pour y parvenir.

Dans ce guide, vous allez configurer un espace de travail et configurer un système de contrôle d’accès de base. Vous pouvez utiliser ces informations dans de nombreux types de projets Synapse. Vous découvrirez ensuite des options avancées pour un contrôle plus fin si vous en avez besoin.

Le contrôle d’accès Synapse peut être simplifié en alignant des rôles et des personnages de votre organisation avec des groupes de sécurité. Cela vous permet de gérer l’accès aux groupes de sécurité simplement en ajoutant et en supprimant des utilisateurs.

Avant de commencer cette procédure pas à pas, lisez la Vue d’ensemble du contrôle d’accès Azure Synapse pour vous familiariser avec les mécanismes de contrôle d’accès utilisés par Synapse Analytics.

Mécanismes de contrôle d’accès

Notes

L'approche décrite dans ce guide consiste à créer des groupes de sécurité. Lorsque vous attribuez des rôles à ces groupes de sécurité, vous devez uniquement gérer les appartenances au sein de ces groupes pour contrôler l’accès aux espaces de travail.

Pour sécuriser un espace de travail Synapse, vous allez configurer les éléments suivants :

  • Des groupes de sécurité, pour regrouper les utilisateurs ayant des exigences d’accès similaires
  • Des rôles Azure, pour contrôler qui peut créer et gérer des pools SQL, des pools Apache Spark et des runtimes d’intégration, et accéder au stockage ADLS Gen2
  • Des rôles Synapse, pour contrôler l’accès aux artefacts de code publiés, l’utilisation des ressources de calcul Apache Spark et les runtimes d’intégration.
  • Des autorisations SQL, pour contrôler l’accès des plans de données et d’administration aux pools SQL
  • Des autorisations Git, pour contrôler qui peut accéder aux artefacts de code dans le contrôle de code source si vous configurez la prise en charge de Git pour les espaces de travail.

Procédure de sécurisation d’un espace de travail Synapse

Ce document utilise des noms standard pour simplifier les instructions. Remplacez-les par les noms de votre choix.

Paramètre Nom standard Description
Espace de travail Synapse workspace1 Nom qu’aura l’espace de travail Azure Synapse.
Compte ADLSGEN2 storage1 Compte ADLS à utiliser avec votre espace de travail.
Conteneur container1 Conteneur dans STG1 que l’espace de travail utilisera par défaut.
Locataire Active directory contoso Nom du locataire Azure Active actif.

Étape 1 : Configurer des groupes de sécurité

Notes

Pendant la phase de préversion, nous vous avons recommander de créer des groupes de sécurité et de les mapper aux rôles Azure Synapse Administrateur Synapse SQL et Administrateur Apache Spark Synapse. Avec l’introduction de nouveaux rôles RBAC et étendues Synapse plus précis, nous vous recommandons désormais d’utiliser de nouvelles options pour contrôler l’accès à votre espace de travail. Elles vous offrent une plus grande flexibilité de configuration et reconnaissent que les développeurs utilisent souvent une combinaison de SQL et Spark pour créer des applications d’analytique. Par conséquent, les développeurs peuvent avoir besoin d’accéder à des ressources individuelles plutôt qu’à un espace de travail entier. En savoir plus sur RBAC Synapse.

Créez les groupes de sécurité suivants pour votre espace de travail :

  • workspace1_SynapseAdministrators, pour les utilisateurs qui ont besoin d’un contrôle total sur un espace de travail. Ajoutez-vous à ce groupe de sécurité, tout au moins au début
  • workspace1_SynapseContributors, pour les développeurs qui doivent développer, déboguer et publier du code sur un service.
  • workspace1_SynapseComputeOperators , pour les utilisateurs qui doivent gérer et superviser des pools Apache Spark et des runtimes d’intégration
  • workspace1_SynapseCredentialUsers, pour les utilisateurs qui doivent déboguer et exécuter des pipelines d’orchestration à l’aide des informations d’identification MSI (Managed Service Identity) de l’espace de travail et annuler des exécutions de pipeline.

Vous assignerez bientôt des rôles Synapse à ces groupes au niveau de l’étendue de l’espace de travail.

Créez également ce groupe de sécurité :

  • workspace1_SQLAdmins, groupe pour les utilisateurs qui ont besoin d’une autorité d’administration SQL Active Directory dans les pools SQL de l’espace de travail.

Le groupe workspace1_SQLAdmins pour configurer les autorisations SQL lorsque vous créez des pools SQL.

Pour une configuration de base, ces cinq groupes suffisent. Plus tard, vous pourrez ajouter des groupes de sécurité pour gérer les utilisateurs qui ont besoin d’un accès plus spécialisé ou pour restreindre l’accès à des ressources spécifiques uniquement.

Remarque

Conseil

Les utilisateurs Synapse individuels peuvent utiliser Microsoft Entra ID dans le Portail Azure pour afficher leurs appartenances au groupe. Cela leur permet de déterminer les rôles qui leur ont été accordés.

Étape 2 : Préparer votre compte de stockage ADLS Gen2

Les espaces de travail Synapse utilisent des conteneurs de stockage par défaut pour :

  • Stockage des fichiers de données de stockage pour les tables Spark
  • Journaux d’exécution pour les travaux Spark.
  • Gestion des bibliothèques que vous choisissez d’installer

Identifiez les informations suivantes relatives à votre stockage :

  • Le compte ADLS Gen2 à utiliser pour votre espace de travail. Il est nommé storage1 dans le présent document. storage1 est considéré comme le compte de stockage « principal » pour votre espace de travail

  • Le conteneur à l’intérieur de storage1 que votre espace de travail Synapse utilisera par défaut. Il est nommé container1 dans le présent document

  • Sélectionnez Contrôle d’accès (IAM) .

  • Sélectionnez Ajouter>Ajouter une attribution de rôle pour ouvrir la page Ajouter une attribution de rôle.

  • Attribuez le rôle suivant. Pour connaître les étapes détaillées, consultez Attribuer des rôles Azure à l’aide du portail Azure.

    Paramètre Valeur
    Role Contributeur aux données Blob du stockage
    Attribuer l’accès à SERVICEPRINCIPAL
    Membres workspace1_SynapseAdministrators, workspace1_SynapseContributors, and workspace1_SynapseComputeOperators

    Add role assignment page in Azure portal.

Étape 3 : Créer et configurer votre espace de travail Synapse

Dans le portail Azure, créez un espace de travail Synapse :

  • Sélectionnez votre abonnement

  • Sélectionnez ou créez un groupe de ressources pour lequel vous disposez d’un rôle Propriétaire Azure.

  • Nommez l’espace de travail workspace1.

  • Choisissez storage1 comme compte de stockage.

  • Choisissez container1 comme conteneur utilisé en tant que « système de fichiers ».

  • Ouvrez WS1 dans Synapse Studio.

  • Dans Synapse Studio, accédez à Gérer>Contrôle d'accès. Dans l’étendue de l’espace de travail, attribuez des rôles Synapse aux groupes de sécurité comme suit :

    • Attribuez le rôle Administrateur Synapse à workspace1_SynapseAdministrators.
    • Attribuez le rôle Contributeur Synapse à workspace1_SynapseContributors.
    • Attribuez le rôle Opérateur de calcul Synapse à workspace1_SynapseComputeOperators.

Étape 4 : Accorder à l’espace de travail un accès MSI au conteneur de stockage par défaut

Pour exécuter des pipelines et effectuer des tâches système, Azure Synapse exige qu’une identité de service managée (MSI) travail ait accès à container1 dans le compte ADLS Gen2 par défaut pour l’espace de travail. Pour plus d’informations, consultez Identité managée de l’espace de travail Azure Synapse.

  • Ouvrez le portail Azure

  • Recherchez le compte de stockage, storage1, puis container1.

  • Sélectionnez Contrôle d’accès (IAM) .

  • Pour ouvrir la page Ajouter une attribution de rôle, sélectionnez Ajouter>Ajouter une attribution de rôle.

  • Attribuez le rôle suivant. Pour connaître les étapes détaillées, consultez Attribuer des rôles Azure à l’aide du portail Azure.

    Paramètre Valeur
    Role Contributeur aux données Blob du stockage
    Attribuer l’accès à MANAGEDIDENTITY
    Membres Nom de l’identité managée

    Notes

    Le nom de l’identité managée correspond également au nom de l’espace de travail.

    Add role assignment page in Azure portal.

Étape 5 : Accorder aux administrateurs de Synapse un rôle Contributeur Azure pour l’espace de travail

Pour créer des pools SQL, des pools Apache Spark et des runtimes d’intégration, les utilisateurs doivent avoir au moins le rôle de Contributeur Azure pour l’espace de travail. Le rôle Contributeur permet également à ces utilisateurs de gérer les ressources, y compris la suspension et la mise à l’échelle. Pour utiliser le portail Azure ou Synapse Studio pour créer des pools SQL, des pools Apache Spark et des runtimes d’intégration, vous devez disposer d’un rôle de Contributeur Azure au niveau du groupe de ressources.

  • Ouvrez le portail Azure

  • Recherchez l’espace de travail, workspace1.

  • Sélectionnez Contrôle d’accès (IAM) .

  • Pour ouvrir la page Ajouter une attribution de rôle, sélectionnez Ajouter>Ajouter une attribution de rôle.

  • Attribuez le rôle suivant. Pour connaître les étapes détaillées, consultez Attribuer des rôles Azure à l’aide du portail Azure.

    Paramètre Valeur
    Role Contributeur
    Attribuer l’accès à SERVICEPRINCIPAL
    Membres workspace1_SynapseAdministrators

    Add role assignment page in Azure portal.

Étape 6 : Attribuer à SQL un rôle d’Administrateur Active Directory

Le créateur de l'espace de travail est automatiquement affecté comme Administrateur SQL Active Directory de l'espace de travail. Ce rôle ne peut être accordé qu’à un utilisateur ou un groupe unique. Dans cette étape, vous allez affecter l’administrateur SQL Active Directory pour l’espace de travail au groupe de sécurité workspace1_SQLAdmins. Cela donne à ce groupe un accès administrateur hautement privilégié à tous les pools SQL et à toutes les bases de données de l’espace de travail.

  • Ouvrez le portail Azure
  • Accédez à workspace1.
  • Sous Paramètres, sélectionner Microsoft Entra ID
  • Sélectionnez Définir l’administrateur, puis choisissez workspace1_SQLAdmins.

Notes

L’étape 6 est facultative. Vous pouvez choisir d’accorder au groupe workspace1_SQLAdmins un rôle moins privilégié. Pour attribuer le rôle db_owner ou d’autres rôles SQL, vous devez exécuter des scripts sur chaque base de données SQL.

Étape 7 : Accorder l’accès aux pools SQL

L’administrateur Synapse est par défaut donné le rôle db_owner SQL pour les pools de SQL serverless dans l’espace de travail.

L’accès aux pools SQL pour les autres utilisateurs est contrôlé à l’aide d’autorisations SQL. L’attribution d’autorisations SQL nécessite l’exécution de scripts SQL sur chaque bases de données SQL après la création. Voici quelques exemples qui vous obligent à exécuter ces scripts :

  1. Pour octroyer à d’autres utilisateurs l’accès au pool SQL serverless, « Intégré », et à ses bases de données.

  2. Pour accorder aux utilisateurs l’accès aux bases de données de pool SQL dédiées. Les exemples de scripts SQL sont inclus plus loin dans cet article.

  3. Pour accorder l’accès à une base de données de pool SQL dédié, les scripts peuvent être exécutés par le créateur de l’espace de travail ou par n’importe quel membre du groupe workspace1_SynapseAdministrators.

  4. Pour accorder l’accès au pool SQL serverless, « Intégré », les scripts peuvent être exécutés par n’importe quel membre du groupe workspace1_SQLAdmins ou du groupe workspace1_SynapseAdministrators.

Conseil

Vous pouvez accorder l’accès à toutes les bases de données SQL en procédant comme suit pour chaque pool SQL. La section Configurer les autorisations étendues à l’espace de travail est une exception à la règle et vous permet d’attribuer un rôle sysadmin à l’espace de travail à un utilisateur.

Étape 7a : Pool SQL serverless, Intégré

Vous pouvez utiliser les exemples de script de cette section pour accorder aux utilisateurs l’autorisation d’accéder à une base de données individuelle ou à toutes les bases de données du pool SQL serverless, Built-in.

Remarque

Dans les exemples de script, remplacez alias par l’alias de l’utilisateur ou du groupe auquel l’accès est accordé. Remplacez domain par le domaine d’entreprise que vous utilisez.

Configurer les autorisations au niveau de la base de données

Vous pouvez accorder aux utilisateurs l’accès à une base de données SQL serverless unique avec les étapes décrites dans cet exemple :

  1. Créez une connexion. Accédez au contexte de base de données master.

    --In the master database
    CREATE LOGIN [alias@domain.com] FROM EXTERNAL PROVIDER;
    
  2. Créez un utilisateur dans votre base de données. Remplacez le contexte par votre base de données.

    -- In your database
    CREATE USER alias FROM LOGIN [alias@domain.com];
    
  3. Ajoutez un utilisateur en tant que membre du rôle spécifié dans votre base de données (dans ce cas, le rôle db_owner).

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

Configurer les autorisations au niveau de l’espace de travail

Vous pouvez accorder un accès complet à tous les pools SQL serverless dans l’espace de travail. Exécutez le script dans cet exemple dans la base de données master :

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

Étape 7b : configurer les pools SQL dédiés

Vous pouvez accorder l’accès à une base de données de pools SQL unique et dédiée. Procédez comme suit dans l’éditeur de script Azure Synapse SQL :

  1. Créez un utilisateur dans la base de données en exécutant les commandes suivantes. Sélectionnez la base de données cible dans la liste déroulante Se connecter à :

    --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. Accordez à l’utilisateur un rôle pour accéder à la base de données :

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

Important

Les rôles de base de données db_datareader et db_datawriter peuvent fournir une autorisation en lecture/écriture lorsque vous ne souhaitez pas accorder l’autorisation db_owner. Toutefois, pour qu’un utilisateur Spark puisse lire et écrire directement à partir de Spark dans ou depuis un pool SQL, l’autorisation db_owner est nécessaire.

Vous pouvez exécuter des requêtes pour confirmer que les pools SQL serverless peuvent interroger des comptes de stockage après avoir créé vos utilisateurs.

Étape 8 : Ajouter des utilisateurs à des groupes de sécurité

La configuration initiale de votre système de contrôle d’accès est maintenant terminée.

Vous pouvez maintenant ajouter et supprimer des utilisateurs aux groupes de sécurité que vous avez configurés, pour gérer leurs accès. Vous pouvez affecter manuellement des utilisateurs à des rôles Azure Synapse, mais cela définit des autorisations incohérentes. Au lieu de cela, limitez-vous à ajouter ou supprimer des utilisateurs dans vos groupes de sécurité.

Étape 9 : Sécurité réseau

En guise d’ultime étape pour sécuriser votre espace de travail, vous devez sécuriser l’accès réseau à l’aide du pare-feu de l’espace de travail.

Étape 10 : Completion

Votre espace de travail est maintenant entièrement configuré et sécurisé.

Prise en charge de scénarios plus avancés

Ce guide est axé sur la configuration d’un système de contrôle d’accès de base. Vous pouvez prendre en charge des scénarios plus avancés en créant des groupes de sécurité supplémentaires et en attribuant à ces groupes des rôles plus précis à des étendues plus spécifiques. Prenez les cas suivants :

Activez la prise en charge de Git pour l’espace de travail pour des scénarios de développement plus avancés, notamment CI/CD. En mode Git, les autorisations Git et RBAC Synapse déterminent si un utilisateur peut valider les modifications apportées à sa branche de travail. La publication sur le service a lieu uniquement à partir de la branche de collaboration. Il peut être judicieux de créer un groupe de sécurité pour les développeurs qui doivent développer et déboguer des mises à jour dans une branche de travail mais qui n’ont pas besoin de publier des modifications dans le service actif.

Limitez l’accès des développeurs à des ressources spécifiques. Créez des groupes de sécurité plus fins pour les développeurs qui ont besoin d’accéder uniquement à des ressources spécifiques. Attribuez à ces groupes des rôles Azure Synapse appropriés qui sont délimités à des pools Spark, des runtimes d’intégration ou des informations d’identification spécifiques.

Empêchez les opérateurs d’accéder aux artefacts de code. Créez des groupes de sécurité pour les opérateurs qui doivent superviser l’état opérationnel des ressources de calcul Synapse et afficher les journaux, mais qui n’ont pas besoin d’accéder au code ou de publier des mises à jour du service. Attribuez à ces groupes le rôle d’Opérateur de calcul, étendu à des pools Spark et des runtimes d’intégration spécifiques.

Désactivez l’authentification locale. En autorisant uniquement l’authentification Microsoft Entra, vous pouvez gérer de façon centralisée l’accès aux ressources Azure Synapse, telles que les pools SQL. L’authentification locale pour toutes les ressources au sein de l’espace de travail peut être désactivée pendant ou après la création de l’espace de travail. Pour plus d’informations sur l’authentification Microsoft Entra uniquement, consultez Désactivation de l’authentification locale dans Azure Synapse Analytics.

Étapes suivantes