Pour permettre à certains utilisateurs de consulter les données sensibles d'un projet MaxCompute tout en masquant les informations clés, activez le masquage dynamique des données. Cette fonctionnalité masque ou remplace les données sensibles en temps réel lors de leur accès afin de prévenir les fuites de données. Cette rubrique explique comment activer la fonctionnalité de masquage dynamique des données dans MaxCompute et fournit des exemples d'utilisation.
Instructions
Lisez le contenu en anglais pour comprendre CE qui doit être communiqué
Rédigez le texte en français À PARTIR DE ZÉRO — oubliez la structure des phrases anglaises
Conservez exactement toute la mise en forme Markdown, les blocs de code, les liens et les images
Balises xref (
<a data-tag="xref" ...>texte</a>) — conservez la balise ENTIERE avec tous ses attributs dans l'ordre et la casse d'origine, traduisez UNIQUEMENT le texte visible entre > etAppliquez strictement toutes les règles spécifiques à la langue
Appliquez les règles relatives aux mots interdits avec une tolérance zéro
Utilisez le mode impératif dans les étapes numérotées et les listes à puces procédurales
Assurez la cohérence terminologique — un même terme doit toujours recevoir la même traduction
Variez les débuts de phrase dans les listes et les tableaux — aucun début ne doit être répété plus de 2 fois
-
Renvoyez UNIQUEMENT le document markdown en français, sans explication
Introduction
MaxCompute propose le masquage dynamique des données pour protéger les informations sensibles, telles que les données personnelles identifiables (PII), dans des scénarios tels que le développement, les tests, le partage de données et les opérations. Contrairement aux listes de contrôle d'accès (ACL) au niveau des colonnes, qui obligent les utilisateurs à modifier leurs requêtes pour exclure les colonnes auxquelles ils ne peuvent pas accéder, le masquage dynamique des données fonctionne automatiquement sans modifier les requêtes existantes. Lorsqu'un utilisateur accède aux données, le système applique automatiquement la politique de masquage appropriée en fonction de l'utilisateur ou de son rôle. Cela garantit que les données sont masquées lors des requêtes, des téléchargements, des jointures et des calculs de fonctions définies par l'utilisateur (UDF), et atténue le risque d'exposition des données sensibles.
Les politiques de masquage prennent en charge diverses méthodes, notamment le masquage, le hachage, le remplacement de caractères, l'arrondi numérique et la troncature de date, pour protéger des données telles que les numéros d'identification, les numéros de carte bancaire, les adresses et les numéros de téléphone. MaxCompute applique le masquage des données dès la première étape de la récupération des données depuis le stockage. Cette approche garantit des performances élevées et une sécurité optimale.

Notes d'utilisation
-
Régions prises en charge
Cette fonctionnalité est en aperçu public et n'est disponible que dans les régions suivantes : Chine (Hangzhou), Chine (Shanghai), Chine (Beijing), Chine (Zhangjiakou), Chine (Ulanqab), Chine (Shenzhen), Chine (Chengdu), Chine (Hong Kong), Japon (Tokyo), Singapour, Malaisie (Kuala Lumpur), Indonésie (Jakarta), Allemagne (Francfort), États-Unis (Silicon Valley) et États-Unis (Virginie).
-
Versions de pilote prises en charge
Méthode de connexion
Version minimale
Prise en charge du masquage
Java SDK
0.48.0-public ou ultérieure
Pris en charge
odpscmd
0.47.1 ou ultérieure
Pris en charge
JDBC
3.4.3 ou ultérieure
Pris en charge
MaxFrame
Toutes les versions
Pris en charge
PyODPS
Toutes les versions
Pris en charge
Go SDK
Toutes les versions
Pris en charge
-
Tables internes et externes
Les politiques de masquage sont prises en charge pour les tables internes et externes MaxCompute.
Actuellement, si une table contient des données de type JSON et qu'une requête implique des données dans des colonnes JSON, les fonctionnalités de masquage des données et d'autorisation au niveau des lignes s'excluent mutuellement. Vous ne pouvez pas configurer une politique d'autorisation au niveau des lignes pour une table qui possède déjà une politique de masquage des données, et vice versa.
Lorsque vous appliquez une politique de masquage à des caractères chinois, l'encodage des caractères doit être UTF-8.
-
Vues
Les vues standard prennent en charge les politiques de masquage. Les politiques appliquées à une vue sont synchronisées avec celles de la table source. Lorsqu'une politique de masquage est liée ou dissociée de la table source, la modification prend effet immédiatement sur la vue.
Une vue matérialisée hérite des politiques de masquage de sa table source au moment de sa création. Les modifications ultérieures apportées aux politiques de la table source n'affectent pas la vue matérialisée.
-
Politiques de masquage
Si plusieurs politiques de masquage s'appliquent à un utilisateur, celle ayant la priorité la plus élevée est utilisée. Pour plus d'informations, consultez Priorités des politiques.
Fonctionnement
Le propriétaire du projet ou les utilisateurs disposant du rôle Super_Administrator ou Admin peuvent gérer les politiques de masquage. Lorsqu'un utilisateur accède à une table contenant des données sensibles, le système vérifie les politiques de masquage associées à l'utilisateur ou à son rôle et renvoie soit des données masquées, soit des données en texte clair, selon le cas.

Autorisations de masquage
Seul le propriétaire du projet ou les utilisateurs auxquels le rôle Super_Administrator ou Admin au niveau du projet a été attribué peuvent activer ou désactiver la fonctionnalité de masquage dynamique des données pour un projet.
Les autorisations requises pour gérer les politiques de masquage d'une table sont les suivantes :
Par défaut, le propriétaire du projet ou les utilisateurs disposant du rôle Super_Administrator ou Admin au niveau du projet possèdent les autorisations requises.
-
Vous pouvez également accorder des autorisations à un utilisateur RAM ou à un rôle RAM à l'aide d'un rôle de projet administratif personnalisé. Connectez-vous à la console MaxCompute. Dans le volet de navigation de gauche, choisissez . Sur la page de gestion de votre projet, accédez à la page Project Settings et sélectionnez l'onglet Role Permissions. Cliquez sur Create Project-level Role pour créer un rôle de projet avec des autorisations MaxCompute. Définissez le Type de rôle sur Admin (rôle de gestion) et utilisez une instruction de politique similaire à l'exemple suivant :
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "odps:CreateDataMaskingPolicy","odps:ListDataMaskingPolicies"], "Resource": [ "acs:odps:*:projects/[project_name]/authorization/datamaskingpolicies" ] }, { "Effect": "Allow", "Action": [ "odps:DropDataMaskingPolicy", "odps:DescribeDataMaskingPolicy" ], "Resource": [ "acs:odps:*:projects/[project_name]/authorization/datamaskingpolicies/*" ] }, { "Effect": "Allow", "Action": "odps:ApplyDataMaskingPolicy", "Resource": [ "acs:odps:*:projects/[project_name]/authorization/tables/*", "acs:odps:*:projects/[project_name]/authorization/datamaskingpolicies/*" ] } ] }
Commandes
Activer ou désactiver le masquage des données
Le commutateur de masquage des données
odps.data.masking.policy.enableest une propriété au niveau du projet. Seul le propriétaire du projet ou les utilisateurs ayant reçu le rôle Super_Administrator ou Admin au niveau du projet peuvent configurer cette propriété. Pour plus d'informations, consultez la rubrique Gérer les rôles intégrés.Après l'activation ou la désactivation du masquage des données, la modification prend environ 15 minutes pour être effective en raison du délai d'actualisation du cache.
-
Activez le masquage dynamique des données pour le projet.
setproject odps.data.masking.policy.enable=true; -
Désactivez le masquage dynamique des données pour le projet.
setproject odps.data.masking.policy.enable=false;
Créer et supprimer des politiques de masquage
Un projet peut comporter au maximum 1 000 politiques de masquage.
-
Syntaxe
-
Créez une politique de masquage.
CREATE DATA MASKING POLICY [IF NOT EXISTS] <policy_name> TO { USER <user_list> | ROLE <role_list> | default } USING <Predefined Masking Policy>; -
Supprimez une politique de masquage.
DROP DATA MASKING POLICY <policy_name>;
-
-
Paramètres
Parameter
Required
Description
policy_name
Yes
Nom de la politique de masquage. Le nom de la politique ne respecte pas la casse et ne peut contenir que des lettres (a–z, A–Z), des chiffres (0–9) et des traits de soulignement (_). Il est recommandé de commencer le nom par une lettre. La longueur maximale du nom est de 128 octets.
USER | ROLE | default
Yes
Choisissez l'une des options suivantes :
USER : applique la politique à des utilisateurs spécifiques. Dans
<user_list>, spécifiez les noms des utilisateurs. Vous pouvez exécuter la commandelist users;pour afficher les informations relatives aux utilisateurs.ROLE : applique la politique à des rôles spécifiques. Dans
<role_list>, spécifiez les noms des rôles. Vous pouvez exécuter la commandelist roles;pour afficher les informations relatives aux rôles.default : applique la politique par défaut. Si aucune autre politique de masquage ne correspond à un utilisateur ou à un rôle, la politique par défaut est appliquée.
Predefined Masking Policy
Yes
Politique de masquage prédéfinie. Pour plus d'informations, consultez la section Politiques de masquage prédéfinies.
-
Exemples
-
Exemple 1 : créez une politique de hachage MD5 pour userA, userB et userC.
CREATE data masking policy IF NOT EXISTS masking_test_001 TO USER (userA, userB, userC) USING MASKED_MD5(0); -
Exemple 2 : créez une politique de hachage MD5 pour les rôles de développement et d'exploitation d'un projet.
CREATE data masking policy IF NOT EXISTS masking_test_001 TO ROLE (role_project_deploy, role_project_dev) USING MASKED_MD5(0);
-
Appliquer des politiques aux colonnes
-
Syntaxe
--Bind a policy to a column APPLY DATA MASKING POLICY <policy_name> BIND TO TABLE <table_name> COLUMN <column_name>; --Unbind a specific masking policy from a sensitive data column APPLY DATA MASKING POLICY <policy_name> UNBIND FROM TABLE <table_name> COLUMN <column_name>; --Unbind all masking policies from a sensitive data column APPLY DATA MASKING POLICY UNBIND ALL FROM TABLE <table_name> COLUMN <column_name>; --Unbind all masking policies from all sensitive data columns of a table APPLY DATA MASKING POLICY UNBIND ALL FROM TABLE <table_name>; -
Paramètres
Parameter
Required
Description
policy_name
Yes
Nom de la politique de masquage.
table_name
Yes
Nom de la table contenant les données sensibles.
column_name
Yes
Nom de la colonne contenant les données sensibles.
Afficher les politiques de masquage
-
Syntaxe
--View the creation information of a masking policy DESC DATA MASKING POLICY <policy_name>; --View a table's extended information, including its masking policies DESC EXTENDED <table_name>; --List the names of all masking policies in the current project LIST DATA MASKING POLICY; --List the names of masking policies bound to a specific user LIST DATA MASKING POLICY TO USER <user_name>; --List the names of masking policies bound to a specific role LIST DATA MASKING POLICY TO ROLE <role_name>; --List the names of all masking policies bound to a specific table LIST DATA MASKING POLICY ON <table_name>; --List the names of all masking policies bound to a specific column of a table LIST DATA MASKING POLICY ON <table_name> TO COLUMN <column_name>; -
Paramètres
Parameter
Required
Description
policy_name
Yes
Nom de la politique de masquage.
table_name
Yes
Nom de la table contenant les données sensibles.
column_name
Yes
Nom de la colonne contenant les données sensibles.
user_name
Yes
Nom d'utilisateur.
role_name
Yes
Nom du rôle.
Politiques de masquage prédéfinies
Les politiques de masquage prédéfinies incluent des méthodes telles que le masquage, le hachage, le remplacement de caractères et l'arrondi. Choisissez une politique en fonction du type de données et de vos exigences de protection.
Type de politique
Nom de la politique
Syntaxe
Description
Général
Pas de masquage
UNMASKED
Renvoie les données en texte clair.
Types de données pris en charge : Tous.
Nullification
MASKED_NULLIFY
Remplace les données par NULL.
Types de données pris en charge : Tous.
Exemple
-- Before masking (data type: STRING) +-----------------+ | col_string | +-----------------+ | Michael Johnson | +-----------------+ -- Masking policy MASKED_NULLIFY -- After masking +------------+ | col_string | +------------+ | NULL | +------------+
Valeur par défaut
MASKED_DV
Remplace la valeur par la valeur par défaut du type de données correspondant. Pour plus d'informations, consultez Valeurs par défaut pour MASKED_DV.
Types de données pris en charge : Tous.
Exemple
-- Before masking (data type: TIMESTAMP) +---------------------+ | col_timestamp | +---------------------+ | 2024-05-01 11:12:13 | +---------------------+ -- Masking policy MASKED_DV -- After masking (The default project time zone is China Standard Time, UTC+8) +---------------------+ | col_timestamp | +---------------------+ | 1970-01-01 08:00:00 | +---------------------+
Troncature de date
MASKED_DATE_YEAR
Conserve uniquement la partie année d'une valeur temporelle et réinitialise le mois, le jour et l'heure au début de cette année (1er janvier, 00:00:00 UTC).
Types de données pris en charge : DATE, DATETIME, TIMESTAMP_NTZ et TIMESTAMP.
Exemple
-- Before masking (data type: TIMESTAMP) +---------------------+ | col_timestamp | +---------------------+ | 2024-05-01 11:12:13 | +---------------------+ -- Masking policy MASKED_DATE_YEAR -- After masking (The default project time zone is China Standard Time, UTC+8) +---------------------+ | col_timestamp | +---------------------+ | 2024-01-01 08:00:00 | +---------------------+
Arrondi
MASKED_POINT_RESERVE(<num>)
Arrondit un nombre à un nombre spécifié de décimales, de 0 à 5.
num: Le nombre de décimales à conserver. La valeur doit être un entier compris entre 0 et 5.Types de données pris en charge : DECIMAL, FLOAT et DOUBLE.
Exemple
-- Before masking (data type: FLOAT) +-----------+ | col_float | +-----------+ | 1.12345 | +-----------+ -- Masking policy: retain 2 decimal places MASKED_POINT_RESERVE(2) -- After masking +-----------+ | col_float | +-----------+ | 1,12 | +-----------+
Masquage
Masquer le début et la fin
MASKED_STRING_MASKED_BA(<before>, <after>)
Masque le début et la fin d'une chaîne avec des astérisques (
*) et affiche la partie centrale en texte clair.before : Le début de la chaîne est remplacé par
*. Le paramètrebeforespécifie la longueur du masque et doit être un entier supérieur ou égal à 0. Sibeforeest égal à 0, le début de la chaîne n'est pas masqué.after : La fin de la chaîne est remplacée par
*. La longueur du masque est spécifiée par le paramètreafter, qui doit être un entier supérieur ou égal à 0.Types de données pris en charge : STRING, VARCHAR, CHAR et BINARY.
Exemple
-- Before masking (data type: STRING) +-----------------+ | col_string | +-----------------+ | Michael Johnson | +-----------------+ -- Masking policy: replace the first 3 and last 3 characters with asterisks. MASKED_STRING_MASKED_BA(3, 3) -- After masking +-----------------+ | col_string | +-----------------+ | ***hael John*** | +-----------------+
Masquer le milieu
MASKED_STRING_UNMASKED_BA(<before>, <after>)
Affiche le début et la fin d'une chaîne en texte clair et masque la partie centrale avec des astérisques (
*).before: Le nombre de caractères à afficher en texte clair au début de la chaîne. La valeur doit être un entier supérieur ou égal à 0.after: Le nombre de caractères à afficher en texte clair à la fin de la chaîne. La valeur doit être un entier supérieur ou égal à 0.Types de données pris en charge : STRING, VARCHAR, CHAR et BINARY.
Exemple
-- Before masking (data type: STRING) +-----------------+ | col_string | +-----------------+ | Michael Johnson | +-----------------+ -- Masking policy: display the first and last characters in plaintext. MASKED_STRING_UNMASKED_BA(1, 1) -- After masking +-----------------+ | col_string | +-----------------+ | M*************n | +-----------------+
Hachage
Hachage SHA-256
MASKED_SHA256(<salt>)
Masque les données à l'aide de l'algorithme de hachage SHA-256.
salt: Le sel. La valeur doit être un entier compris entre 0 et 9.Types de données pris en charge : STRING, VARCHAR, CHAR et BINARY.
Exemple
-- Before masking (data type: STRING) +------------------------+ | col_string | +------------------------+ | 4562-1234-5678-9123 | +------------------------+ -- Masking policy MASKED_SHA256(0) -- After masking +------------------------------------------------+ | col_string | +------------------------------------------------+ | zwGMB1aCF1t705EfcwdDorql4MZb46XBqQJw/2RVx8U= | +------------------------------------------------+
Hachage SHA-512
MASKED_SHA512(<salt>)
Masque les données à l'aide de l'algorithme de hachage SHA-512.
salt: Le sel. La valeur doit être un entier compris entre 0 et 9.Types de données pris en charge : STRING, VARCHAR, CHAR et BINARY.
Exemple
-- Before masking (data type: STRING) +------------------------+ | col_string | +------------------------+ | 4562-1234-5678-9123 | +------------------------+ -- Masking policy MASKED_SHA512(0) -- After masking +------------------------------------------------------------------------------------------+ | col_string | +------------------------------------------------------------------------------------------+ | 3PPywfEIp08WuTUI8FZCCfdVuRu68wZTVwWWVAf4pboACUnH6w9kFMLpl2AARaGW/mvWvg26p0EIqmE0fAEiuA== | +------------------------------------------------------------------------------------------+
Hachage MD5
MASKED_MD5(<salt>)
Masque les données à l'aide de l'algorithme de hachage MD5.
salt: Le sel. La valeur doit être un entier compris entre 0 et 9.Types de données pris en charge : STRING, VARCHAR, CHAR et BINARY.
Exemple
-- Before masking (data type: STRING) +------------------------+ | col_string | +------------------------+ | 4562-1234-5678-9123 | +------------------------+ -- Masking policy MASKED_MD5(0) -- After masking +--------------------------+ | col_string | +--------------------------+ | mK/o08tew5g7S3XV/BkFfw== | +--------------------------+
Hachage SM3
MASKED_SM3(<salt>)
Masque les données à l'aide de l'algorithme de hachage SM3.
salt: Le sel. La valeur doit être un entier compris entre 0 et 9.Types de données pris en charge : STRING, VARCHAR, CHAR et BINARY.
Exemple
-- Before masking (data type: STRING) +------------------------+ | col_string | +------------------------+ | 4562-1234-5678-9123 | +------------------------+ -- Masking policy MASKED_SM3(0) -- After masking +------------------------------------------------+ | col_string | +------------------------------------------------+ | Q2TfwUh4B8QQH8jPL6DfdoGysx/CXBxn2T14dDwQtQw= | +------------------------------------------------+
Remplacement de caractères
Remplacement aléatoire
MASKED_REPLACE_RANDOM(<position>)
Remplace les données par des caractères aléatoires, y compris des chiffres et des lettres. La longueur de la chaîne reste inchangée.
position: Un entier qui spécifie où commencer le remplacement.Si
position= 0, toute la chaîne est remplacée par des caractères aléatoires.Si
position> 0, les premiers caractèrespositionsont remplacés par des caractères aléatoires.Si
position< 0, les N derniers caractères sont remplacés, où N est la valeur absolue deposition.
Types de données pris en charge : STRING, VARCHAR, CHAR et BINARY.
Exemple
-- Before masking (data type: STRING) +-----------------+ | col_string | +-----------------+ | Michael Johnson | +-----------------+ -- Masking policy: replace the first 7 characters with random characters. MASKED_REPLACE_RANDOM(7) -- After masking +-----------------+ | col_string | +-----------------+ | 4DlJQxi Johnson | +-----------------+
Remplacement aléatoire au début et à la fin
MASKED_REPLACE_RANDOM_BA(<before>, <after>)
Remplace le début et la fin d'une chaîne par des caractères aléatoires, y compris des chiffres et des lettres. La longueur de la chaîne reste inchangée.
before: Le nombre de caractères à remplacer au début de la chaîne. La valeur doit être un entier supérieur ou égal à 0. Si la valeur est 0, aucun caractère n'est remplacé au début.after: Le nombre de caractères à remplacer à la fin de la chaîne. La valeur doit être un entier supérieur ou égal à 0.Types de données pris en charge : STRING, VARCHAR, CHAR et BINARY.
Exemple
-- Before masking (data type: STRING) +-----------------+ | col_string | +-----------------+ | Michael Johnson | +-----------------+ -- Masking policy: replace the first 4 and last 4 characters with random characters. MASKED_REPLACE_RANDOM_BA(4,4) -- After masking +------------------+ | col_string | +------------------+ | r0xEael JohnWNr | +------------------+
Remplacement fixe
MASKED_REPLACE_FIXED(<position>, <fixed_string>)
Remplace les données par une chaîne fixe.
position: Un entier qui spécifie où le remplacement a lieu.Si
position= 0, toute la chaîne est remplacée parfixed_string.Si
position> 0, les premiers caractèrespositionsont remplacés parfixed_string.Si
position< 0, les N derniers caractères sont remplacés parfixed_string, où N est la valeur absolue deposition.
fixed_string: La chaîne de remplacement. Elle peut contenir jusqu'à 100 caractères et ne peut pas contenir d'espaces.Types de données pris en charge : STRING, VARCHAR, CHAR et BINARY.
Exemple
-- Before masking (data type: STRING) +-----------------+ | col_string | +-----------------+ | Michael Johnson | +-----------------+ -- Masking policy: replace the first 7 characters with the fixed string "Oli". MASKED_REPLACE_FIXED(7, "Oli") -- After masking +-------------+ | col_string | +-------------+ | Oli Johnson | +-------------+
Exemples
Masquer les informations personnelles sensibles
Cet exemple illustre la configuration de politiques de masquage pour protéger les informations personnelles sensibles.
-
Préparez les données.
Créez une table destinée à stocker les informations personnelles et insérez-y des données sensibles.
-- Create a table for sensitive information. CREATE TABLE if NOT EXISTS personal_info ( id bigint COMMENT 'The unique ID of the user.', name string COMMENT 'The name of the user.', age int COMMENT 'The age of the user.', gender string COMMENT 'The gender of the user.', height float COMMENT 'The height of the user.', birthday date COMMENT 'The birth date of the user.', phone_number string COMMENT 'The phone number of the user.', email string COMMENT 'The email address of the user.', address string COMMENT 'The address of the user.', salary decimal(18, 2) COMMENT 'The salary of the user.', create_time timestamp COMMENT 'The time when the user information was created.', update_time timestamp COMMENT 'The time when the user information was updated.', is_deleted boolean COMMENT 'Indicates whether the user information is deleted.' ); -- Insert sensitive data. INSERT INTO personal_info VALUES (1, 'Zhang San', 18, 'Male', 178.56, '1990-01-01', '13800000000', 'zhangsan@example.com', 'Haidian District, Beijing', 5000.00, '2023-04-19 11:32:00', '2023-04-19 11:32:00', false), (2, 'Li Si', 20, 'Female', 162.70, '1992-02-02', '13900000000', 'lisi@example.com', 'Pudong New Area, Shanghai', 6000.00, '2023-04-19 11:32:00', '2023-04-19 11:32:00',false), (3, 'Wang Wu', 22, 'Male', 185.21, '1994-03-03', '14000000000', 'wangwu@example.com', 'Nanshan District, Shenzhen', 7000.00, '2023-04-19 11:32:00', '2023-04-19 11:32:00', false); -
Configurez les politiques de masquage.
-
Pour les noms, conservez uniquement le premier caractère et remplacez les autres par des astérisques (
*).CREATE data masking policy IF NOT EXISTS masking_name TO USER (RAM$xxx@test.aliyunid.com:xxx) USING MASKED_STRING_UNMASKED_BA(1, 0); apply data masking policy masking_name bind TO TABLE personal_info COLUMN name; -
Arrondissez les valeurs de taille à l'entier le plus proche.
CREATE data masking policy IF NOT EXISTS masking_height TO USER (RAM$xxx@test.aliyunid.com:xxx) USING MASKED_POINT_RESERVE(0); apply data masking policy masking_height bind TO TABLE personal_info COLUMN height; -
Pour les dates de naissance, ne conservez que l'année.
CREATE data masking policy IF NOT EXISTS masking_birthday TO USER (RAM$xxx@test.aliyunid.com:xxx) USING MASKED_DATE_YEAR; apply data masking policy masking_birthday bind TO TABLE personal_info COLUMN birthday; -
Pour les utilisateurs par défaut, hachez les numéros de téléphone à l'aide de l'algorithme SM3.
CREATE DATA MASKING POLICY default_sm3 TO DEFAULT USING MASKED_SM3(0); apply data masking policy default_sm3 bind TO TABLE personal_info COLUMN phone_number;
-
-
Utilisez un compte soumis aux politiques de masquage pour interroger les données.
SELECT id, name, height, birthday, phone_number FROM personal_info; -- Before masking +------------+-----------+--------+------------+--------------+ | id | name | height | birthday | phone_number | +------------+-----------+--------+------------+--------------+ | 1 | Zhang San | 178.56 | 1990-01-01 | 13800000000 | | 2 | Li Si | 162.7 | 1992-02-02 | 13900000000 | | 3 | Wang Wu | 185.21 | 1994-03-03 | 14000000000 | +------------+-----------+--------+------------+--------------+ -- After masking +------------+------------+------------+------------+------------------------------------------------+ | id | name | height | birthday | phone_number | +------------+------------+------------+------------+------------------------------------------------+ | 1 | Z******** | 179.0 | 1990-01-01 | lvYJaH4ElL2ilpQx/8tfMUw7xP22yblIgmfWp0/msUQ= | | 2 | L**** | 163.0 | 1992-01-01 | 9fFWacNSwCRZLAjMHqunlfwkqhTbP2ubuDOeOSh4N1c= | | 3 | W****** | 185.0 | 1994-01-01 | k/0JoQCSarJg9ATJ5tyVnhQf1jIBxHXRbB+cvUm4OmE= | +------------+------------+------------+------------+------------------------------------------------+
Masquage par défaut
Cet exemple montre comment fonctionne la priorité des politiques lorsqu'un utilisateur ou un rôle correspond à plusieurs politiques de masquage.
Appliquez la politique MASKED_SHA256(5) aux utilisateurs par défaut.
CREATE DATA MASKING POLICY default_hash_policy TO DEFAULT USING MASKED_SHA256(5);Appliquez la politique UNMASKED aux utilisateurs spécifiques A et B.
CREATE DATA MASKING POLICY ab_unmask_policy TO USER (A, B) USING UNMASKED;Résultat : les utilisateurs A et B peuvent accéder aux données en texte clair. Les autres utilisateurs n'ont accès qu'aux données hachées avec SHA-256.
RemarqueLes utilisateurs A et B correspondent à la fois aux politiques MASKED_SHA256(5) et UNMASKED. Le système applique UNMASKED, car cette politique possède une priorité plus élevée. Pour plus d'informations, consultez la section Priorités des politiques. Les autres utilisateurs ne correspondent qu'à la politique MASKED_SHA256(5).
Annexe
Priorités des politiques
Lorsque plusieurs politiques de masquage s'appliquent à un utilisateur, celle qui présente la priorité la plus élevée est utilisée.
Par exemple, un utilisateur nommé A accède à la colonne
col_stringet correspond à deux politiques de masquage :MASKED_REPLACE_RANDOM(3)avec un niveau de priorité 3 etMASKED_SM3avec un niveau de priorité 4. Comme un chiffre plus bas indique une priorité plus élevée, la politiqueMASKED_REPLACE_RANDOM(3)est appliquée. L'utilisateur A voit les données masquées par des caractères aléatoires.Priorité
Politique de masquage
0 (La plus élevée)
UNMASKED
1
MASKED_POINT_RESERVE(num)
2
MASKED_DATE_YEAR
3
MASKED_STRING_MASKED_BA(before, after)
MASKED_STRING_UNMASKED_BA(before, after)
MASKED_REPLACE_RANDOM(position)
MASKED_REPLACE_RANDOM_BA(before, after)
MASKED_REPLACE_FIXED(position, fixed_string)
4
MASKED_SHA256
MASKED_SHA512
MASKED_MD5
MASKED_SM3
5
MASKED_DV
6 (La plus basse)
MASKED_NULLIFY
Valeurs par défaut pour MASKED_DV
Type
Valeur par défaut
BIGINT
0
DOUBLE
0,0
DECIMAL
0
STRING
"" (chaîne vide)
DATETIME
DATETIME '1970-01-01 00:00:00' (UTC)
BOOLEAN
false
TINYINT
0
SMALLINT
0
INT
0
BINARY
'' (chaîne binaire vide)
FLOAT
0,0
DOUBLE
0,0
DECIMAL
0
VARCHAR(n)
"" (chaîne vide)
CHAR(n)
" " (n espaces)
DATE
DATE '1970-01-01'
TIMESTAMP
TIMESTAMP '1970-01-01 00:00:00' (UTC)
TIMESTAMP_NTZ
TIMESTAMP '1970-01-01 00:00:00' (UTC)
ARRAY
Un tableau vide.
MAP
Une mappe vide.
JSON
"" (chaîne vide)
STRUCT
(valeurs par défaut des types de champs)
-