Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :la base de données Azure SQL
Azure SQL Managed Instance
Azure Synapse Analytics (pools SQL dédiés uniquement)
base de données SQL dans Fabric
Base de données Azure SQL, les bases de données SQL dans Microsoft Fabric, Azure SQL Managed Instance et Azure Synapse Analytics prennent en charge le masquage dynamique des données (DDM). Le masquage des données dynamiques limite l’exposition des données sensibles en les masquant pour les utilisateurs sans privilège.
Le masquage des données dynamiques empêche tout accès non autorisé aux données sensibles en permettant aux clients d’indiquer la quantité de données sensibles à afficher, avec un impact minimal sur la couche application. Il s’agit d’une fonctionnalité de sécurité basée sur des stratégies qui masque les données sensibles dans le jeu de résultats d’une requête, sur des champs de base de données désignés (les données dans la base de données ne sont pas modifiées).
Par exemple, un représentant du service d’un centre d’appels peut identifier un appelant en confirmant plusieurs caractères de son adresse e-mail, mais l’adresse e-mail complète ne doit pas être dévoilée au représentant du service. Une règle de masquage peut être définie qui masque l’intégralité de l’adresse e-mail dans le jeu de résultats de n’importe quelle requête. Autre exemple, un masque de données approprié peut être défini pour protéger les données personnelles, de telle sorte qu'un développeur puisse interroger les environnements de production à des fins de dépannage sans aller à l'encontre des réglementations de conformité.
Principes de base du masquage des données dynamiques
Pour la base de données Azure SQL, vous configurez une stratégie de masquage dynamique des données dans le portail Azure en sélectionnant le volet Dynamic Data Masking sous Sécurité dans le volet de configuration de votre base de données SQL.
Cette fonctionnalité ne peut pas être définie à l’aide du portail Azure pour SQL Managed Instance ou de la base de données SQL dans Fabric. Utilisez plutôt Transact-SQL (T-SQL), comme dans l’exemple d’autorisation granulaire de cet article. Pour plus d’informations, consultez Masquage des données dynamiques.
Stratégie de masquage des données dynamiques
Utilisateurs SQL exclus du masquage : Ensemble d’utilisateurs SQL, qui peuvent inclure des identités à partir de l’ID Microsoft Entra, qui obtiennent des données non masquées dans les résultats de la requête SQL. Les utilisateurs disposant de droits d’administration comme Administrateur serveur, Administrateur Microsoft Entra ou propriétaire de rôle db_owner peuvent afficher les données d’origine sans masque. (Remarque : cela s’applique également au rôle sysadmin dans SQL Server)
Règles de masquage : ensemble de règles qui définissent les champs désignés à masquer et la fonction de masquage à utiliser. Les champs désignés peuvent être définis avec un nom de schéma de base de données, un nom de table et un nom de colonne.
Fonctions de masquage : ensemble de méthodes qui contrôlent l’exposition des données dans différents scénarios.
Fonction de masquage Logique de masquage Par défaut Masquage complet en fonction des types de données des champs désignés
UtilisezXXXX(ou moins) si la taille du champ est inférieure à 4 caractères pour les types de données de chaîne (nchar, ntext, nvarchar).
Utilisez une valeur zéro pour les types de données numériques (bigint, bit, décimal, int, money, numeric, smallint, smallmoney, tinyint, float, real).
Utiliser1900-01-01pour les types de données date/heure (date, datetime2, datetime, datetimeoffset, smalldatetime, heure).
Pour sql_variant, la valeur par défaut du type actuel est utilisée.
Pour XML, le document<masked />est utilisé.
Utilisez une valeur vide pour les types de données spéciaux (timestamp, table, HierarchyID, uniqueidentifier, binary, image, varbinary et types spatiaux).Carte de crédit Méthode de masquage qui affiche les quatre derniers chiffres des champs de masquage désignés et ajoute une chaîne constante comme préfixe sous la forme d’une carte de crédit. XXXX-XXXX-XXXX-1234E-mail Méthode de masquage qui affiche la première lettre et remplace le domaine par XXX.com avec en préfixe une chaîne constante sous la forme d’une adresse de messagerie. aXX@XXXX.comNombre aléatoire Méthode de masquage qui génère un nombre aléatoire selon les limites sélectionnées et les types de données réels. Si les limites désignées sont égales, la fonction de masquage est un nombre constant.
Texte personnalisé Méthode de masquage qui affiche le premier et le dernier caractères et ajoute une chaîne de remplissage personnalisée entre les deux. Si la chaîne d’origine est plus courte que le préfixe et le suffixe affichés, seule la chaîne de remplissage est utilisée. prefix[padding]suffix
Datetime Active le masquage granulaire pour les colonnes date/heure, à savoir datetime, datetime2, date, heure, datetimeoffset et smalldatetime. Vous pouvez masquer des composants spécifiques tels que l’année (), le mois ( datetime("Y")), le jour (), l’heure (datetime("M")datetime("D")), la minute (datetime("h")) ou la seconde (datetime("m")).datetime("s")Vous appliquez cette fonction à l’aide de T-SQL.
Par exemple:
- Année du masque :ALTER COLUMN BirthDay ADD MASKED WITH (FUNCTION = 'datetime("Y")').
- Mois de masquage :ALTER COLUMN BirthDay ADD MASKED WITH (FUNCTION = 'datetime("M")').
- Minute de masque :ALTER COLUMN BirthDay ADD MASKED WITH (FUNCTION = 'datetime("m")').
Champs à masquer recommandés
Le moteur de recommandations DDM signale certains champs de votre base de données en tant que champs potentiellement sensibles, qui peuvent être de bons candidats pour le masquage. Dans le volet Masquage des données dynamiques du portail, les colonnes recommandées pour votre base de données sont affichées. Sélectionnez Ajouter un masque pour une ou plusieurs colonnes, puis sélectionnez la fonction de masquage appropriée et Enregistrer pour appliquer un masque à ces champs.
Gérer le masquage dynamique des données à l’aide de T-SQL
- Pour créer un masquage dynamique des données, consultez Création d'un masquage dynamique des données.
- Pour ajouter ou modifier un masque sur une colonne existante, consultez Ajout ou modification d’un masque sur une colonne existante.
- Pour accorder des autorisations d’affichage des données non masquées, consultez Octroi d’autorisations d’afficher des données non masquées.
- Pour supprimer un masquage Dynamic Data, consultez Suppression d’un masquage Dynamic Data.
Configurer le masquage des données dynamiques pour votre base de données à l’aide des cmdlets PowerShell
Stratégies de masquage des données
- Get-AzSqlDatabaseDataMaskingPolicy
- Set-AzSqlDatabaseDataMaskingPolicy (Configurer la politique de masquage des données de la base de données SQL Azure)
Règles de masquage de données
- Get-AzSqlDatabaseDataMaskingRule
- New-AzSqlDatabaseDataMaskingRule
- Remove-AzSqlDatabaseDataMaskingRule
- Set-AzSqlDatabaseDataMaskingRule
Configurer le masquage dynamique des données pour votre base de données à l’aide de l’API REST
Vous pouvez utiliser l’API REST pour gérer par programme les règles et stratégies de masquage des données. L’API REST publiée prend en charge les opérations suivantes :
Stratégies de masquage des données
- Créer ou mettre à jour : Crée ou met à jour une stratégie de masquage des données de la base de données.
- Get : Fournit une stratégie de masquage des données de la base de données.
Règles de masquage de données
- Créer ou mettre à jour : Crée ou met à jour une règle de masquage des données de la base de données.
- Liste par base de données : Fournit une liste des règles de masquage des données de la base de données.
Autorisations
Vous pouvez configurer le masquage des données dynamiques avec les rôles intégrés suivants :
Les actions requises pour utiliser le masquage dynamique des données sont les suivantes :
Lecture/Écriture :
Microsoft.Sql/servers/databases/dataMaskingPolicies/*
Lecture :
Microsoft.Sql/servers/databases/dataMaskingPolicies/read
Écrire :
Microsoft.Sql/servers/databases/dataMaskingPolicies/write
Pour en savoir plus sur les autorisations lors de l’utilisation du masquage dynamique des données avec la commande T-SQL, consultez Autorisations.
Exemple d’autorisation granulaire
Empêchez l’accès non autorisé aux données sensibles et contrôlez-le en le masquant à un utilisateur non autorisé à différents niveaux de la base de données. Vous pouvez accorder ou révoquer UNMASK des autorisations au niveau de la base de données, au niveau du schéma, au niveau de la table ou au niveau de la colonne pour n’importe quel utilisateur ou rôle de base de données. Combinées à l’authentification Microsoft Entra, UNMASK les autorisations peuvent être gérées pour les utilisateurs, les groupes et les applications gérés dans votre environnement Azure. L’autorisation UNMASK fournit un moyen précis de contrôler et de limiter l’accès non autorisé aux données stockées dans la base de données et d’améliorer la gestion de la sécurité des données.
Créer un schéma pour contenir des tables utilisateur :
CREATE SCHEMA Data; GOCréer une table avec des colonnes masquées :
CREATE TABLE Data.Membership ( MemberID INT IDENTITY (1, 1) NOT NULL, FirstName VARCHAR (100) MASKED WITH (FUNCTION = 'partial(1, "xxxxx", 1)') NULL, LastName VARCHAR (100) NOT NULL, Phone VARCHAR (12) MASKED WITH (FUNCTION = 'default()') NULL, Email VARCHAR (100) MASKED WITH (FUNCTION = 'email()') NOT NULL, DiscountCode SMALLINT MASKED WITH (FUNCTION = 'random(1, 100)') NULL, BirthDay DATETIME MASKED WITH (FUNCTION = 'default()') NULL );Insérer des exemples de données :
INSERT INTO Data.Membership (FirstName, LastName, Phone, Email, DiscountCode, BirthDay) VALUES ('Roberto', 'Tamburello', '555.123.4567', 'RTamburello@contoso.com', 10, '1985-01-25 03:25:05'), ('Janice', 'Galvin', '555.123.4568', 'JGalvin@contoso.com.co', 5, '1990-05-14 11:30:00'), ('Shakti', 'Menon', '555.123.4570', 'SMenon@contoso.net', 50, '2004-02-29 14:20:10'), ('Zheng', 'Mu', '555.123.4569', 'ZMu@contoso.net', 40, '1990-03-01 06:00:00');Créer un schéma pour contenir des tables de service :
CREATE SCHEMA Service; GOCréer une table de service avec des colonnes masquées :
CREATE TABLE Service.Feedback ( MemberID INT IDENTITY (1, 1) NOT NULL, Feedback VARCHAR (100) MASKED WITH (FUNCTION = 'default()') NULL, Rating INT MASKED WITH (FUNCTION = 'default()'), Received_On DATETIME );Insérer des exemples de données :
INSERT INTO Service.Feedback (Feedback, Rating, Received_On) VALUES ('Good', 4, '2022-01-25 11:25:05'), ('Excellent', 5, '2021-12-22 08:10:07'), ('Average', 3, '2021-09-15 09:00:00');Créer différents utilisateurs dans la base de données :
CREATE USER ServiceAttendant WITHOUT LOGIN; GO CREATE USER ServiceLead WITHOUT LOGIN; GO CREATE USER ServiceManager WITHOUT LOGIN; GO CREATE USER ServiceHead WITHOUT LOGIN; GOAccorder des autorisations de lecture aux utilisateurs de la base de données :
ALTER ROLE db_datareader ADD MEMBER ServiceAttendant; ALTER ROLE db_datareader ADD MEMBER ServiceLead; ALTER ROLE db_datareader ADD MEMBER ServiceManager; ALTER ROLE db_datareader ADD MEMBER ServiceHead;Accordez différentes
UNMASKautorisations aux utilisateurs :Accordez l’autorisation au niveau
UNMASKde la colonne pourServiceAttendant:GRANT UNMASK ON Data.Membership (FirstName) TO ServiceAttendant;Accordez l’autorisation au niveau de la table
UNMASKàServiceLead:GRANT UNMASK ON Data.Membership TO ServiceLead;Accordez l’autorisation de niveau de schéma
UNMASKàServiceManager:GRANT UNMASK ON SCHEMA::Data TO ServiceManager; GRANT UNMASK ON SCHEMA::Service TO ServiceManager;Accorder l’autorisation au niveau de la base de données
UNMASKàServiceHead;GRANT UNMASK TO ServiceHead;
Interroger les données dans le contexte de l’utilisateur
ServiceAttendant:EXECUTE AS USER = 'ServiceAttendant'; SELECT MemberID, FirstName, LastName, Phone, Email, BirthDay FROM Data.Membership; SELECT MemberID, Feedback, Rating FROM Service.Feedback; REVERT;Interroger les données dans le contexte de l’utilisateur
ServiceLead:EXECUTE AS USER = 'ServiceLead'; SELECT MemberID, FirstName, LastName, Phone, Email, BirthDay FROM Data.Membership; SELECT MemberID, Feedback, Rating FROM Service.Feedback; REVERT;Interroger les données dans le contexte de l’utilisateur
ServiceManager:EXECUTE AS USER = 'ServiceManager'; SELECT MemberID, FirstName, LastName, Phone, Email, BirthDay FROM Data.Membership; SELECT MemberID, Feedback, Rating FROM Service.Feedback; REVERT;Interroger les données dans le contexte de l’utilisateur
ServiceHeadEXECUTE AS USER = 'ServiceHead'; SELECT MemberID, FirstName, LastName, Phone, Email, BirthDay FROM Data.Membership; SELECT MemberID, Feedback, Rating FROM Service.Feedback; REVERT;Pour révoquer
UNMASKdes autorisations, utilisez les instructions T-SQL suivantes :REVOKE UNMASK ON Data.Membership (FirstName) FROM ServiceAttendant; REVOKE UNMASK ON Data.Membership FROM ServiceLead; REVOKE UNMASK ON SCHEMA::Data FROM ServiceManager; REVOKE UNMASK ON SCHEMA::Service FROM ServiceManager; REVOKE UNMASK FROM ServiceHead;