Masquage conditionnel des données dynamiques - Amazon Redshift

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Masquage conditionnel des données dynamiques

Vous pouvez masquer les données au niveau de la cellule en créant des politiques de masquage avec des expressions conditionnelles dans l’expression de masquage. Par exemple, vous pouvez créer une politique de masquage qui applique différents masques à une valeur, en fonction de la valeur d’une autre colonne de cette ligne.

Voici un exemple d’utilisation du masquage conditionnel des données pour créer et attacher une politique de masquage qui supprime partiellement les numéros de carte de crédit impliqués dans des fraudes, tout en masquant complètement tous les autres numéros de carte de crédit. Vous devez être un super-utilisateur ou avoir le rôle sys:secadmin requis pour exécuter cet exemple.

--Create an analyst role. CREATE ROLE analyst; --Create a credit card table. The table contains an is_fraud boolean column, --which is TRUE if the credit card number in that row was involved in a fraudulent transaction. CREATE TABLE credit_cards (id INT, is_fraud BOOLEAN, credit_card_number VARCHAR(16)); --Create a function that partially redacts credit card numbers. CREATE FUNCTION REDACT_CREDIT_CARD (credit_card VARCHAR(16)) RETURNS VARCHAR(16) IMMUTABLE AS $$ import re regexp = re.compile("^([0-9]{6})[0-9]{5,6}([0-9]{4})") match = regexp.search(credit_card) if match != None: first = match.group(1) last = match.group(2) else: first = "000000" last = "0000" return "{}XXXXX{}".format(first, last) $$ LANGUAGE plpythonu; --Create a masking policy that partially redacts credit card numbers if the is_fraud value for that row is TRUE, --and otherwise blanks out the credit card number completely. CREATE MASKING POLICY card_number_conditional_mask WITH (fraudulent BOOLEAN, pan varchar(16)) USING (CASE WHEN fraudulent THEN REDACT_CREDIT_CARD(pan) ELSE Null END); --Attach the masking policy to the credit_cards/analyst table/role pair. ATTACH MASKING POLICY card_number_conditional_mask ON credit_cards (credit_card_number) USING (is_fraud, credit_card_number) TO ROLE analyst PRIORITY 100;