Tous les produits
Search
Centre de documentation

MaxCompute:Masquage dynamique des données

Dernière mise à jour :Aug 10, 2026

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 décrit comment activer la fonctionnalité de masquage dynamique des données dans MaxCompute et fournit des exemples d'utilisation.

Présentation

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 n'ont pas accès, 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 dates, 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.

image

Remarques sur l'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
    |
    Prise en charge
    | |
    odpscmd
    |
    0.47.1 ou ultérieure
    |
    Prise en charge
    | |
    JDBC
    |
    3.4.3 ou ultérieure
    |
    Prise en charge
    | |
    MaxFrame
    |
    Toutes les versions
    |
    Prise en charge
    | |
    PyODPS
    |
    Toutes les versions
    |
    Prise en charge
    | |
    Go SDK
    |
    Toutes les versions
    |
    Prise en charge
    |









































  • Tables internes et externes

    • Les politiques de masquage sont prises en charge pour les tables internes et externes MaxCompute.

    • Le masquage dynamique des données et les autorisations au niveau des lignes s'excluent mutuellement. Vous ne pouvez pas configurer d'autorisations au niveau des lignes pour une table qui possède déjà une politique de masquage, 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.

image

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 Manage Configurations > Projects. 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.enable est une propriété au niveau du projet. 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 configurer cette propriété. Pour plus d'informations, consultez Gérer les rôles intégrés.

Après avoir activé ou désactivé le masquage des données, la modification prend environ 15 minutes pour être effective en raison de la latence de l'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 un maximum de 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

    Paramètre

    Obligatoire

    Description

    policy_name

    Oui

    Nom de la politique de masquage. Le nom de la politique ne distingue 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. Le nom peut comporter jusqu'à 128 octets.

    USER | ROLE | default

    Oui

    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 commande list users; pour afficher les informations sur les 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 commande list roles; pour afficher les informations sur les 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

    Oui

    Politique de masquage prédéfinie. Pour plus d'informations, consultez 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

    Paramètre

    Obligatoire

    Description

    policy_name

    Oui

    Nom de la politique de masquage.

    table_name

    Oui

    Nom de la table contenant des données sensibles.

    column_name

    Oui

    Nom de la colonne contenant des 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

    Paramètre

    Obligatoire

    Description

    policy_name

    Oui

    Nom de la politique de masquage.

    table_name

    Oui

    Nom de la table contenant des données sensibles.

    column_name

    Oui

    Nom de la colonne contenant des données sensibles.

    user_name

    Oui

    Nom d'utilisateur.

    role_name

    Oui

    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

    -- Avant le masquage (type de données : STRING)
    +-----------------+
    | col_string      |
    +-----------------+
    | Michael Johnson |
    +-----------------+
    
    -- Politique de masquage
    MASKED_NULLIFY
    
    -- Après le masquage
    +------------+
    | 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

    -- Avant le masquage (type de données : TIMESTAMP)
    +---------------------+
    | col_timestamp       |
    +---------------------+
    | 2024-05-01 11:12:13 |
    +---------------------+
    -- Politique de masquage
    MASKED_DV
    -- Après le masquage (le fuseau horaire par défaut du projet est l'heure normale de Chine, 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

    -- Avant le masquage (type de données : TIMESTAMP)
    +---------------------+
    | col_timestamp       |
    +---------------------+
    | 2024-05-01 11:12:13 |
    +---------------------+
    -- Politique de masquage
    MASKED_DATE_YEAR
    -- Après le masquage (le fuseau horaire par défaut du projet est l'heure normale de Chine, 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 : 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

    -- Avant le masquage (type de données : FLOAT)
        +-----------+
        | col_float |
        +-----------+
        | 1.12345   |
        +-----------+
        -- Politique de masquage : conserver 2 décimales
        MASKED_POINT_RESERVE(2)
        -- Après le masquage
        +-----------+
        | 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ètre before spécifie la longueur du masque et doit être un entier supérieur ou égal à 0. Si before est é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ètre after, qui doit être un entier supérieur ou égal à 0.

  • Types de données pris en charge : STRING, VARCHAR, CHAR et BINARY.

  • Exemple

    -- Avant le masquage (type de données : STRING)
        +-----------------+
        | col_string      |
        +-----------------+
        | Michael Johnson |
        +-----------------+
        -- Politique de masquage : remplacer les 3 premiers et les 3 derniers caractères par des astérisques.
        MASKED_STRING_MASKED_BA(3, 3)
        -- Après le masquage
        +-----------------+
        | 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 : 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 : 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

    -- Avant le masquage (type de données : STRING)
        +-----------------+
        | col_string      |
        +-----------------+
        | Michael Johnson |
        +-----------------+
        -- Politique de masquage : afficher le premier et le dernier caractère en texte clair.
        MASKED_STRING_UNMASKED_BA(1, 1)
        -- Après le masquage
        +-----------------+
        | 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 : 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

    -- Avant le masquage (type de données : STRING)
        +------------------------+
        | col_string             | 
        +------------------------+
        | 4562-1234-5678-9123    | 
        +------------------------+
        -- Politique de masquage
        MASKED_SHA256(0)
        -- Après le masquage
        +------------------------------------------------+
        | col_string                                     | 
        +------------------------------------------------+
        | zwGMB1aCF1t705EfcwdDorql4MZb46XBqQJw/2RVx8U=    | 
        +------------------------------------------------+

Hachage SHA-512

MASKED_SHA512(<salt>)

Masque les données à l'aide de l'algorithme de hachage SHA-512.

  • salt : 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

    -- Avant le masquage (type de données : STRING)
        +------------------------+
        | col_string             | 
        +------------------------+
        | 4562-1234-5678-9123    | 
        +------------------------+
        -- Politique de masquage
        MASKED_SHA512(0)
        -- Après le masquage
        +------------------------------------------------------------------------------------------+
        | col_string                                                                               | 
        +------------------------------------------------------------------------------------------+
        | 3PPywfEIp08WuTUI8FZCCfdVuRu68wZTVwWWVAf4pboACUnH6w9kFMLpl2AARaGW/mvWvg26p0EIqmE0fAEiuA== | 
        +------------------------------------------------------------------------------------------+

Hachage MD5

MASKED_MD5(<salt>)

Masque les données à l'aide de l'algorithme de hachage MD5.

  • salt : 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

    -- Avant le masquage (type de données : STRING)
        +------------------------+
        | col_string             | 
        +------------------------+
        | 4562-1234-5678-9123    | 
        +------------------------+
        -- Politique de masquage
        MASKED_MD5(0)
        -- Après le masquage
        +--------------------------+
        | col_string               | 
        +--------------------------+
        | mK/o08tew5g7S3XV/BkFfw== | 
        +--------------------------+

Hachage SM3

MASKED_SM3(<salt>)

Masque les données à l'aide de l'algorithme de hachage SM3.

  • salt : 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

    -- Avant le masquage (type de données : STRING)
        +------------------------+
        | col_string             | 
        +------------------------+
        | 4562-1234-5678-9123    | 
        +------------------------+
        -- Politique de masquage
        MASKED_SM3(0)
        -- Après le masquage
        +------------------------------------------------+
        | 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 : Entier qui spécifie où commencer le remplacement.

    • Si position = 0, la chaîne entière est remplacée par des caractères aléatoires.

    • Si position > 0, les premiers caractères position sont 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 de position.

  • Types de données pris en charge : STRING, VARCHAR, CHAR et BINARY.

  • Exemple

    -- Avant le masquage (type de données : STRING)
        +-----------------+
        | col_string      |
        +-----------------+
        | Michael Johnson |
        +-----------------+
        -- Politique de masquage : remplacer les 7 premiers caractères par des caractères aléatoires.
        MASKED_REPLACE_RANDOM(7)
        -- Après le masquage
        +-----------------+
        | 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 : 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 : 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

    -- Avant le masquage (type de données : STRING)
        +-----------------+
        | col_string      |
        +-----------------+
        | Michael Johnson |
        +-----------------+
        -- Politique de masquage : remplacer les 4 premiers et les 4 derniers caractères par des caractères aléatoires.
        MASKED_REPLACE_RANDOM_BA(4,4)
        -- Après le masquage
        +------------------+
        | col_string       | 
        +------------------+
        | r0xEael JohnWNr  | 
        +------------------+

Remplacement fixe

MASKED_REPLACE_FIXED(<position>, <fixed_string>)

  • Remplace les données par une chaîne fixe.

  • position : Entier qui spécifie où le remplacement a lieu.

    • Si position = 0, la chaîne entière est remplacée par fixed_string.

    • Si position > 0, les premiers caractères position sont remplacés par fixed_string.

    • Si position < 0, les N derniers caractères sont remplacés par fixed_string, où N est la valeur absolue de position.

  • fixed_string : Chaîne de remplacement. Elle peut comporter jusqu'à 100 caractères et ne peut pas contenir d'espaces.

  • Types de données pris en charge : STRING, VARCHAR, CHAR et BINARY.

  • Exemple

    -- Avant le masquage (type de données : STRING)
        +-----------------+
        | col_string      |
        +-----------------+
        | Michael Johnson |
        +-----------------+
        -- Politique de masquage : remplacer les 7 premiers caractères par la chaîne fixe « Oli ».
        MASKED_REPLACE_FIXED(7, "Oli")
        -- Après le masquage
        +-------------+
        | col_string  | 
        +-------------+
        | Oli Johnson | 
        +-------------+

Exemples

Masquer les informations personnelles sensibles

Cet exemple montre comment configurer des politiques de masquage pour masquer les informations personnelles sensibles.

  1. Préparez les données.

    Créez une table pour stocker les informations personnelles et insérez 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);
  2. Configurez les politiques de masquage.

    • Pour les noms, conservez uniquement le premier caractère et remplacez le reste 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 hauteur à 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, conservez uniquement 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;
  3. 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 ne peuvent accéder qu'aux données hachées SHA-256.

Remarque

Les utilisateurs A et B correspondent aux politiques MASKED_SHA256(5) et UNMASKED. Le système applique UNMASKED car elle a une priorité plus élevée. Pour plus d'informations, consultez 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 ayant la priorité la plus élevée est utilisée.

Par exemple, un utilisateur nommé A accède à la colonne col_string et correspond à deux politiques de masquage : MASKED_REPLACE_RANDOM(3) avec un niveau de priorité 3 et MASKED_SM3 avec un niveau de priorité 4. Étant donné qu'un nombre inférieur indique une priorité plus élevée, la politique MASKED_REPLACE_RANDOM(3) est appliquée. L'utilisateur A voit les données masquées avec 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 faible)

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 map vide.
| |
JSON
|
"" (chaîne vide)
| |
STRUCT
|
(valeurs par défaut des types de champ)
|