Implémenter un pare-feu Azure SQL Database
Lorsque vous créez dans Azure SQL Database ou Azure Synapse Analytics un serveur nommé mysqlserver, par exemple, un pare-feu au niveau du serveur bloque tout accès au point de terminaison public du serveur (accessible à l'adresse mysqlserver.database.windows.net). Par souci de simplicité, le nom SQL Database est utilisé pour désigner à la fois SQL Database et Azure Synapse Analytics. Cet article ne s'applique pas à Azure SQL Managed Instance. Pour plus d'informations sur la configuration réseau, consultez Connecter votre application à Azure SQL Managed Instance.
Fonctionnement du pare-feu
Les tentatives de connexion à partir d'Internet et d'Azure doivent franchir le pare-feu avant d'atteindre votre serveur ou votre base de données, comme illustré dans le schéma suivant.
Important
Azure Synapse ne prend en charge que les règles de pare-feu IP au niveau serveur. Il ne prend pas en charge les règles de pare-feu IP au niveau de la base de données.
Règles de pare-feu IP au niveau du serveur
Ces règles permettent aux clients d'accéder à l'ensemble de votre serveur, c'est-à-dire à toutes les bases de données gérées par le serveur. Les règles sont stockées dans la base de données MASTER. Le nombre maximal de règles de pare-feu IP au niveau du serveur est limité à 256 par serveur. Si le paramètre Autoriser les services et les ressources Azure à accéder à ce serveur est activé, cela compte comme une seule règle de pare-feu pour le serveur.
Vous pouvez configurer des règles de pare-feu IP au niveau du serveur à l’aide du portail Azure, de PowerShell ou d’instructions Transact-SQL.
Remarque
Lors de la configuration à l’aide du portail Azure, le nombre maximal de règles de pare-feu IP de niveau serveur est limité à 256.
- Pour utiliser le portail ou PowerShell, vous devez être le propriétaire ou un contributeur de l’abonnement.
- Pour utiliser Transact-SQL, vous devez vous connecter à la base de données MASTER avec un compte principal au niveau du serveur ou en tant qu’administrateur Microsoft Entra. (Une règle de pare-feu IP au niveau du serveur doit d’abord être créée par un utilisateur disposant d’autorisations au niveau d’Azure.)
Remarque
Par défaut, lors de la création d’un nouveau serveur SQL logique à partir du portail Azure, l’option Autoriser les services et ressources Azure à accéder à ce paramètre de serveur est définie sur Non.
Règles de pare-feu IP au niveau de la base de données
Ces règles de pare-feu IP au niveau de la base de données permettent aux clients d'accéder à certaines bases de données (sécurisées). Vous devez créer les règles pour chaque base de données (dont la base de données MASTER). Elles y seront stockées de façon individuelle.
- Vous pouvez créer et gérer des règles de pare-feu IP au niveau de la base de données pour les bases MASTER et utilisateur uniquement à l’aide d’instructions Transact-SQL et seulement après avoir configuré le premier pare-feu au niveau du serveur.
- Si vous spécifiez dans la règle de pare-feu IP au niveau de la base de données une plage d’adresses IP en dehors de la plage spécifiée dans la règle de pare-feu IP au niveau du serveur, seuls les clients dont les adresses IP appartiennent à la plage au niveau de la base de données peuvent accéder à la base de données.
- La valeur par défaut correspond à un maximum de 256 règles de pare-feu IP de niveau base de données par base de données. Pour plus d’informations sur la configuration des règles de pare-feu IP au niveau de la base de données, consultez l’exemple plus loin dans cet article et sp_set_database_firewall_rule (Azure SQL Database).
Recommandations sur la définition des règles de pare-feu
Nous vous recommandons d’utiliser des règles de pare-feu IP au niveau de la base de données autant que possible. Cette pratique améliore la sécurité et la portabilité de votre base de données. Utilisez des règles de pare-feu IP au niveau du serveur pour les administrateurs. Utilisez également ces règles quand de nombreuses bases de données ont les mêmes exigences d’accès et que vous ne souhaitez pas les configurer une à une.
Remarque
Pour plus d’informations sur les bases de données portables dans le cadre de la continuité d’activité, consultez Exigences d’authentification pour la récupération d’urgence.
Règles de pare-feu IP au niveau du serveur et au niveau de la base de données
Les utilisateurs d’une base de données doivent-ils être totalement isolés d’une autre base de données ?
Si c’est le cas, accordez l’accès à l’aide de règles de pare-feu IP au niveau de la base de données. Cette méthode évite d’utiliser des règles de pare-feu IP au niveau du serveur, qui permettent à toutes les bases de données de franchir le pare-feu et réduisent ainsi le champ de vos défenses.
Les utilisateurs aux adresses IP ont-ils besoin d’accéder à toutes les bases de données ?
Si c’est le cas, utilisez des règles de pare-feu IP au niveau du serveur pour réduire le nombre de règles de pare-feu IP à configurer.
La personne ou l’équipe qui configure les règles de pare-feu IP a-t-elle seulement accès par le biais du portail Azure, de PowerShell ou de l’API REST ?
Si c’est le cas, vous devez utiliser des règles de pare-feu IP au niveau du serveur. Les règles de pare-feu IP au niveau de la base de données peuvent être configurées seulement avec Transact-SQL.
La personne ou l’équipe qui configure les règles de pare-feu IP a-t-elle l’interdiction d’avoir une autorisation générale au niveau de la base de données ?
Si c’est le cas, utilisez des règles de pare-feu IP au niveau du serveur. Vous devez disposer au minimum de l’autorisation CONTROL DATABASE au niveau de la base de données pour configurer des règles de pare-feu IP au niveau de la base de données à l’aide de Transact-SQL.
La personne ou l’équipe qui configure ou vérifie les règles de pare-feu IP gère-t-elle ces règles de façon centralisée pour un grand nombre de bases de données (par exemple, plusieurs centaines) ?
Si c’est le cas, vos besoins et votre environnement déterminent les bonnes pratiques à mettre en œuvre. Les règles de pare-feu IP au niveau du serveur peuvent être plus faciles à configurer, mais des scripts peuvent configurer les règles au niveau de la base de données. Par ailleurs, même si vous utilisez des règles de pare-feu IP au niveau du serveur, vous devez peut-être vérifier les règles de pare-feu IP au niveau de la base de données pour voir si des utilisateurs avec l’autorisation CONTROL sur la base de données créent des règles de pare-feu IP au niveau de la base de données.
Puis-je utiliser à la fois des règles de pare-feu IP au niveau du serveur et au niveau de la base de données ?
Oui. Certains utilisateurs comme les administrateurs peuvent avoir besoin de règles de pare-feu IP au niveau du serveur. D’autres utilisateurs, comme les utilisateurs d’une application de base de données, peuvent avoir besoin de règles de pare-feu IP au niveau de la base de données.
Connexions à partir d’Internet
Lorsqu'un ordinateur tente de se connecter à votre serveur à partir d'Internet, le pare-feu vérifie d'abord l'adresse IP d'origine de la demande par rapport aux règles de pare-feu IP au niveau de la base de données pour la base de données demandée par la connexion.
- Si l'adresse est comprise dans une plage spécifiée dans les règles de pare-feu IP au niveau de la base de données, la connexion à la base de données contenant la règle est accordée.
- Dans le cas contraire, le pare-feu vérifie les règles de pare-feu IP au niveau du serveur. Si l’adresse est comprise dans une plage spécifiée dans les règles de pare-feu IP au niveau du serveur, la connexion est accordée. Les règles de pare-feu IP au niveau du serveur s'appliquent à toutes les bases de données gérées par le serveur.
- Si l’adresse n’est pas comprise dans une plage spécifiée dans les règles de pare-feu IP au niveau du serveur ou de la base de données, la demande de connexion échoue.
Remarque
Pour accéder à Azure SQL Database à partir de votre ordinateur local, vérifiez que le pare-feu de votre réseau et de votre ordinateur local autorise les communications sortantes sur le port TCP 1433.
Connexions à partir d’Azure
Pour autoriser des applications hébergées dans Azure à se connecter à votre serveur SQL, vous devez activer les connexions Azure. Pour activer les connexions Azure, il doit y avoir une règle de pare-feu avec les adresses IP de début et de fin définies sur 0.0.0.0. Cette règle recommandée s’applique uniquement à Azure SQL Database.
Quand une application d’Azure tente de se connecter au serveur, le pare-feu confirme que les connexions Azure sont autorisées en vérifiant que cette règle de pare-feu existe. Cela peut être activé directement à partir du volet du portail Azure en basculant les services et ressources Azure pour accéder à ce serveur sur ON dans les paramètres de pare-feu et de réseaux virtuels. Le basculement du paramètre vers ON crée une règle de pare-feu entrante pour IP 0.0.0.0 - 0.0.0 nommée AllowAllWindowsAzureIps. La règle peut être vue dans votre base de données master sys.firewall_rules vue. Utilisez PowerShell ou l’interface Azure CLI pour créer une règle de pare-feu avec les adresses IP de début et de fin définies sur 0.0.0.0 si vous n’utilisez pas le portail.
Important
Cette option configure le pare-feu pour autoriser toutes les connexions à partir d’Azure, notamment les connexions issues des abonnements d’autres clients. Si vous sélectionnez cette option, vérifiez que votre connexion et vos autorisations utilisateur limitent l’accès aux seuls utilisateurs autorisés.
Autorisations
Pour pouvoir créer et gérer des règles de pare-feu IP pour Azure SQL Server, vous devez être :
- dans le rôle Contributeur de SQL Server
- dans le rôle Gestionnaire de sécurité SQL
- propriétaire de la ressource qui contient SQL Server Azure
Créer et gérer des règles de pare-feu IP
Vous devez créer le premier paramètre de pare-feu au niveau du serveur à l’aide du portail Azure ou par programmation avec Azure PowerShell, l’interface de ligne de commande Azure ou une API REST Azure. Vous pouvez utiliser ces méthodes ou Transact-SQL pour créer et gérer d’autres règles de pare-feu IP au niveau du serveur.
Important
Les règles de pare-feu IP au niveau de la base de données peuvent être créées et gérées seulement avec Transact-SQL.
Pour améliorer les performances, les règles de pare-feu IP au niveau du serveur sont temporairement mises en cache au niveau de la base de données. Pour actualiser le cache, consultez DBCC FLUSHAUTHCACHE.
Conseil / Astuce
Vous pouvez utiliser l'Audit de la base de données pour vérifier des modifications de pare-feu au niveau serveur et au niveau base de données.
Gérer des règles de pare-feu IP au niveau du serveur avec le portail Azure
Pour définir une règle de pare-feu IP au niveau du serveur sur le portail Azure, accédez à la page de présentation de votre base de données ou de votre serveur.
Conseil / Astuce
Pour accéder à un tutoriel, consultez Créer une base de données à l'aide du portail Azure.
À partir de la page de présentation de la base de données
Pour définir une règle de pare-feu IP au niveau du serveur à partir de la page vue d’ensemble de la base de données, sélectionnez Définir le pare-feu du serveur dans la barre d’outils, comme l’illustre l’image suivante.
La page Mise en réseau du serveur s’ouvre.
Ajoutez une règle dans la section Règles de pare-feu pour ajouter l’adresse IP de l’ordinateur que vous utilisez, puis sélectionnez Enregistrer. Une règle de pare-feu IP au niveau du serveur est créée pour votre adresse IP actuelle.
À partir de la page de présentation du serveur
La page de présentation de votre serveur s’ouvre. Elle affiche le nom de serveur complet (tel que mynewserver20170403.database.windows.net) et fournit des options permettant de poursuivre la configuration.
- Pour définir une règle au niveau du serveur à partir de cette page, sélectionnez Mise en réseau dans le menu Paramètres sur le côté gauche.
- Ajoutez une règle dans la section Règles de pare-feu pour ajouter l’adresse IP de l’ordinateur que vous utilisez, puis sélectionnez Enregistrer. Une règle de pare-feu IP au niveau du serveur est créée pour votre adresse IP actuelle.
Gérer des règles de pare-feu IP avec Transact-SQL
Agrandir le tableau
| Affichage catalogue ou procédure stockée | niveau | Description |
|---|---|---|
| sys.firewall_rules | Serveur | Affiche les règles de pare-feu IP au niveau du serveur actuelles |
| sp_set_firewall_rule | Serveur | Crée ou met à jour les règles de pare-feu IP au niveau du serveur |
| sp_supprimer_regle_pare-feu | Serveur | Supprime des règles de pare-feu IP au niveau du serveur |
| sys.database_firewall_rules | Base de données | Affiche les règles de pare-feu IP actuelles au niveau de la base de données |
| sp_set_database_firewall_rule | Base de données | Crée ou met à jour les règles de pare-feu IP au niveau de la base de données |
| sp_delete_database_firewall_rule | Bases de données | Supprime des règles de pare-feu IP au niveau de la base de données |
L’exemple suivant examine les règles existantes, active une plage d’adresses IP sur le serveur Contoso et supprime une règle de pare-feu IP :
SQL
SELECT * FROM sys.firewall_rules ORDER BY name;
Ensuite, ils ajoutent une règle de pare-feu IP au niveau du serveur.
SQL
SELECT * FROM sys.firewall_rules ORDER BY name;
EXECUTE sp_set_firewall_rule @name = N'ContosoFirewallRule',
@start_ip_address = '192.168.1.1', @end\_ip\_address = '192.168.1.10'
Pour supprimer une règle de pare-feu IP au niveau du serveur, exécutez la procédure stockée sp_delete_firewall_rule. L’exemple suivant supprime la règle ContosoFirewallRule :
SQL
EXECUTE sp_delete_firewall_rule @name = N'ContosoFirewallRule'
Gérer des règles de pare-feu IP au niveau du serveur avec PowerShell
Remarque
Cet exemple utilise le module Azure Az PowerShell, qui est le module PowerShell recommandé pour interagir avec Azure. Pour démarrer avec le module Az PowerShell, consulter Installer Azure PowerShell. Pour savoir comment migrer vers le module Az PowerShell, consultez Migrer Azure PowerShell depuis AzureRM vers Az.
Important
Le module PowerShell Azure Resource Manager (AzureRM) a été déconseillé le 29 février 2024. Tout le développement futur doit utiliser le module Az.Sql. Les utilisateurs sont invités à migrer d’AzureRM vers le module Az PowerShell pour garantir une prise en charge et des mises à jour continues. Le module AzureRM n’est plus géré ou pris en charge. Les arguments des commandes dans le module Az PowerShell et dans les modules AzureRM sont sensiblement identiques. Pour plus d’informations sur leur compatibilité, consultez Présentation du nouveau module Az PowerShell.
Agrandir le tableau
| Applet de commande | niveau | Description |
|---|---|---|
| Get-AzSqlServerFirewallRule | Serveur | Retourne les règles de pare-feu au niveau du serveur actuelles |
| New-AzSqlServerFirewallRule | Serveur | Crée une règle de pare-feu au niveau du serveur |
| Set-AzSqlServerFirewallRule | Serveur | Met à jour les propriétés d’une règle de pare-feu au niveau du serveur existante |
| Remove-AzSqlServerFirewallRule | Serveur | Supprime des règles de pare-feu au niveau du serveur |
L’exemple suivant définit une règle de pare-feu IP au niveau du serveur à l’aide de PowerShell :
PowerShell
New-AzSqlServerFirewallRule -ResourceGroupName "myResourceGroup" `-ServerName $servername `-FirewallRuleName "ContosoIPRange" -StartIpAddress "192.168.1.0" -EndIpAddress "192.168.1.255"
Conseil / Astuce
Pour $servername spécifiez le nom du serveur et non le nom DNS complet, par exemple, spécifiez mysqldbserver au lieu de mysqldbserver.database.windows.net. Pour obtenir des exemples PowerShell dans le contexte d'un démarrage rapide, consultez Créer une base de données - PowerShell et Utiliser PowerShell pour créer une base de données unique et configurer une règle de pare-feu IP au niveau du serveur.
Gérer des règles de pare-feu IP au niveau du serveur avec l’interface de ligne de commande
Agrandir le tableau
| Applet de commande | niveau | Description |
|---|---|---|
| az sql server firewall-rule create - (Créer une règle de pare-feu pour le serveur SQL) | Serveur | Crée une règle de pare-feu IP de serveur |
| az sql server firewall-rule list (commande pour lister les règles de pare-feu du serveur SQL) | Serveur | Liste les règles de pare-feu IP sur un serveur |
| az sql server firewall-rule show | Serveur | Affiche les détails d’une règle de pare-feu IP |
| az sql server firewall-rule update | Serveur | Met à jour une règle de pare-feu IP |
| az sql server firewall-rule delete (supprimer la règle du pare-feu sur le serveur SQL) | Serveur | Supprime une règle de pare-feu IP |
L’exemple suivant définit une règle de pare-feu IP au niveau du serveur à l’aide de l’interface de ligne de commande :
Azure CLI (Interface de ligne de commande Azure)
az sql server firewall-rule create --resource-group myResourceGroup --server $servername \-n ContosoIPRange --start-ip-address 192.168.1.0 --end-ip-address 192.168.1.255">">
Conseil / Astuce
Pour $servername, spécifiez le nom du serveur et non le nom DNS complet. Par exemple, utilisez mysqldbserver au lieu de mysqldbserver.database.windows.net. Pour obtenir un exemple basé sur l'interface de ligne de commande dans le contexte d'un démarrage rapide, consultez Créer une base de données - Azure CLI et Utiliser Azure CLI pour créer une base de données unique et configurer une règle de pare-feu IP au niveau du serveur. Pour Azure Synapse Analytics, reportez-vous aux exemples suivants :
Agrandir le tableau
| Applet de commande | niveau | Description |
|---|---|---|
| az synapse workspace firewall-rule create - Utilisez cette commande pour créer une règle de pare-feu sur votre espace de travail Synapse. | Serveur | Créer une règle de pare-feu |
| az synapse workspace firewall-rule delete - Suppression de la règle de pare-feu dans le workspace Synapse. | Serveur | Supprimer une règle de pare-feu |
| az synapse workspace firewall-rule list | Serveur | Répertorier toutes les règles de pare-feu |
| az synapse workspace firewall-rule show - Affiche la règle de pare-feu pour l'espace de travail Synapse. | Serveur | Obtenir une règle de pare-feu |
| az synapse workspace workspace firewall-rule update | Serveur | Mettre à jour une règle de pare-feu |
| az synapse workspace workspace firewall-rule wait | Serveur | Placer l’interface CLI dans un état d’attente jusqu’à ce qu’une condition de règle de pare-feu soit remplie |
L’exemple suivant utilise l’interface CLI pour définir une règle de pare-feu IP au niveau du serveur dans Azure Synapse :
Azure CLI (Interface de ligne de commande Azure)
az synapse workspace firewall-rule create --name AllowAllWindowsAzureIps --workspace-name $workspacename --resource-group $resourcegroupname --start-ip-address 0.0.0.0 --end-ip-address 0.0.0.0
Gérer des règles de pare-feu IP au niveau du serveur avec une API REST
Agrandir le tableau
| API | niveau | Description |
|---|---|---|
| Répertorier des règles de pare-feu | Serveur | Affiche les règles de pare-feu IP au niveau du serveur actuelles |
| Créer ou mettre à jour des règles de pare-feu | Serveur | Crée ou met à jour les règles de pare-feu IP au niveau du serveur |
| Supprimer des règles de pare-feu | Serveur | Supprime des règles de pare-feu IP au niveau du serveur |
| Obtenir des règles de pare-feu | Serveur | Obtient les règles de pare-feu IP au niveau du serveur |
Résoudre les problèmes liés au pare-feu de base de données
Tenez compte des points suivants lorsque l'accès à Azure SQL Database est anormal.
Configuration du pare-feu local : avant que votre ordinateur puisse accéder à Azure SQL Database, vous devrez peut-être créer une exception de pare-feu sur votre ordinateur pour le port TCP 1433. Vous devrez peut-être ouvrir des ports supplémentaires pour effectuer des connexions dans la limite du cloud Azure. Pour plus d’informations, consultez la section « SQL Database : exécution externe ou exécution interne de Ports au-delà de 1433 pour ADO.NET 4.5 et Azure SQL Database.
Traduction d’adresses réseau : en raison de la traduction d’adresses réseau (NAT), l’adresse IP utilisée par votre ordinateur pour se connecter à Azure SQL Database peut être différente de l’adresse IP dans les paramètres de configuration IP de votre ordinateur. Pour voir l’adresse IP utilisée par votre ordinateur pour se connecter à Azure :
- Connectez-vous au portail.
- Accédez à l’onglet Configurer sur le serveur qui héberge votre base de données.
- L’adresse IP du client actuel s’affiche dans la section Adresses IP autorisées. Sélectionnez Ajouter pour les adresses IP autorisées pour autoriser cet ordinateur à accéder au serveur.
Les modifications apportées à la liste verte n’ont pas encore pris effet : il peut y avoir jusqu’à cinq minutes de retard pour que les modifications apportées à la configuration du pare-feu Azure SQL Database prennent effet.
La connexion n’est pas autorisée ou un mot de passe incorrect a été utilisé : si une connexion n’a pas d’autorisations sur le serveur ou si le mot de passe est incorrect, la connexion au serveur est refusée. La création d’un paramètre de pare-feu permet uniquement aux clients d’essayer de se connecter à votre serveur. Ils doivent toujours fournir les informations d’identification de sécurité nécessaires. Pour plus d'informations sur la préparation des connexions, consultez Contrôle et octroi de l'accès à la base de données.
Adresse IP dynamique : si vous disposez d’une connexion Internet qui utilise l’adressage IP dynamique et que vous rencontrez des difficultés à passer par le pare-feu, essayez l’une des solutions suivantes :
- Demandez à votre fournisseur de services Internet la plage d'adresses IP attribuée aux ordinateurs clients qui accèdent au serveur. Ajoutez cette plage d’adresses IP en tant que règle de pare-feu IP.
- Récupérez plutôt l’adressage IP statique pour vos ordinateurs clients. Ajoutez les adresses IP en tant que règles de pare-feu IP.