Τι είναι Dynamic Data Masking και πως το ενεργοποιούμε στον SQL Server

Τι είναι Dynamic Data Masking και πως το  ενεργοποιούμε στον SQL Server
Τι είναι Dynamic Data Masking και πως το  ενεργοποιούμε στον SQL Server

Σε αυτό το άρθρο θα αναλύσουμε τι είναι το Dynamic Data Masking και τι επιλογές έχουμε για τη χρήση του στον SQL Server.

Το Dynamic Data Masking είναι μία λειτουργεία που ο σκοπός της είναι να αποκρύπτει τα ευαίσθητα δεδομένα από τα αποτελέσματα ενός query.

Δεν απαιτεί την αλλαγή στον κώδικα της εφαρμογής και δεν τροποποιεί τα δεδομένα που είναι αποθηκευμένα στη βάση δεδομένων, πράγμα που σημαίνει ότι δεν αποτελεί λύση encryption αλλά αποτρέπει τους χρήστες που δεν θα έπρεπε να έχουν πρόσβαση σε αυτά τα δεδομένα να τα δούν.

Για την ενεργοποίηση του θα πρέπει να τρέξουμε Data Definition Language statements που θα τροποποιούν το κάθε πεδίο του πίνακα προσθέτοντας την ανάλογη μάσκα που θα τα αποκρύπτει.

Ανάλογα με τη μάσκα που κάνουμε χρήση μπορούμε να αποκρύψουμε όλους τους χαρακτήρες ή μερικούς.

Θα δούμε αναλυτικά παραδείγματα με τις επιλογές που έχουμε παρακάτω.

Το παράδειγμα

Για το παράδειγμα μας θα φτιάξουμε έναν πίνακα με τέσσερις πελάτες. Επίσης θα φτιάξουμε έναν χρήστη που θα έχει δικαίωμα select στον πίνακα αυτόν.

create table pelates(
	id int identity(1,1),
	onoma varchar(100),
	epitheto varchar(100),
	tilefono varchar(100),
	email varchar(100));


insert into pelates values
('Stratos','Matzouranis','2101234567','matzouranis@dokimi.com'),
('Iwanna','Iwannidou','2109852157','iwannidou@dokimi.com'),
('Giwrgos','Gewrgiou','2251011111','gewrgiou@dokimi.com'),
('Laertis','Rwmanos','2310124598','rwmanos@dokimi.com');


create user "xristis" without login;
grant select on pelates to "xristis";

Αφού τα έχουμε φτιάξει αν κάνουμε select τον πίνακα ως αυτός ο χρήστης, θα δούμε ότι βλέπει όλα τα δεδομένα κανονικά.

execute as user = 'xristis';
select * from pelates;
revert;
Τι είναι Dynamic Data Masking και πως το  ενεργοποιούμε στον SQL Server

Οι επιλογές των masking κανόνων

Όπως αναφέραμε πριν υπάρχουν πολλές διαφορετικές masking functions, ας δούμε μερικά παραδείγματα για την περίπτωση μας εφαρμόζοντας masking σε όλα τα πεδία.

Email masking

Με το email masking εμφανίζεται μόνο ο πρώτος χαρακτήρας και η κατάληξη του domain.

alter table pelates
alter column email add masked with (function='email()');
Τι είναι Dynamic Data Masking και πως το  ενεργοποιούμε στον SQL Server

Default masking

Με το default masking αποκρύπονται όλοι οι χαρακτήρες του πεδίου.

alter table pelates
alter column tilefono add masked with (function='default()');
Τι είναι Dynamic Data Masking και πως το  ενεργοποιούμε στον SQL Server

Partial masking

Με τη χρήση του partial masking μπορούμε να επιλέξουμε πόσοι χαρακτήρες θα εμφανίζονται από την αρχή και το τέλος και με τι χαρακτήρα θα αποκρύπτονται οι υπόλοιποι.

Ας πούμε ότι στο επίθετο θέλουμε να εμφανίζονται οι δύο πρώτοι χαρακτήρες και ο τελευταίος, ενώ ενδιάμεσα να υπάρχουν “xxxx” στην θέση των πραγματικών στοιχείων, τότε σε αυτή τη περίπτωση θα έπρεπε να τρέξουμε το παρακάτω:

alter table pelates
alter column epitheto add masked with (function='partial(2,"xxxxx",1)');
Τι είναι Dynamic Data Masking και πως το  ενεργοποιούμε στον SQL Server

Αντίστοιχα αν θα θέλαμε να εμφανίζεται μόνο ο πρώτος χαρακτήρας και τίποτε άλλο θα τρέχαμε το παρακάτω:

alter table pelates
alter column onoma add masked with (function='partial(1,"xxxx",0)');
Τι είναι Dynamic Data Masking και πως το  ενεργοποιούμε στον SQL Server

Random masking

Με το random masking ορίζουμε να εμφανίζεται ένας τυχαίος αριθμός στη θέση του πραγματικού. Για να λειτουργήσει θα πρέπει να έχουμε ορίσει τα όρια που θα έχει π.χ. από τον άριθμό 1 έως τον 99.999.

alter table pelates
alter column id add masked with (function='random(1,99999)');
Τι είναι Dynamic Data Masking και πως το  ενεργοποιούμε στον SQL Server

Τι πρέπει να προσέξουμε στο Dynamic Data Masking

Από την στιγμή που όπως είπαμε το Dynamic Data Masking εφαρμόζετε στα αποτελέσματα των δεδομένων και όχι στα πραγματικά δεδομένα υπάρχουν κάποιοι περιορισμοί.

Θα πρέπει να γνωρίζουμε ότι αν πάει κάποιος χρήστης που δεν έχει δικαίωμα unmask να ψάξει εγγραφές που πληρούν κάποιο κριτήριο θα του τις εμφανίσει, απλά αποτελέσματα θα είναι masked.

Λόγου αυτού μπορεί ένας χρήστης να μαντέψει τιμές πεδιών και να μάθει το πλήθος εγγραφών που τις πληρούν.

execute as user = 'xristis';
select * from pelates where onoma = 'Stratos'
revert;
Τι είναι Dynamic Data Masking και πως το  ενεργοποιούμε στον SQL Server

Πως δίνουμε δικαίωμα σε κάποιον χρήστη να βλέπει τα δεδομένα

Με το δικαίωμα unmask μπορούμε να δώσουμε σε κάποιον χρήστη να μπορεί να δει τα πραγματικά δεδομένα.

grant unmask to "xristis";
--revoke unmask to "xristis";
Τι είναι Dynamic Data Masking και πως το  ενεργοποιούμε στον SQL Server

Πως αφαιρούμε το Dynamic Data Masking

Αν π.χ. θα θέλαμε να αφαιρέσουμε το masking από την στήλη email θα έπρεπε να κάνουμε drop την μάσκα όπως παρακάτω:

alter table pelates
alter column email drop masked;
Τι είναι Dynamic Data Masking και πως το  ενεργοποιούμε στον SQL Server

Τέλος για να μπορεί κάποιος να προσθέσει ή αφαιρέσει μία μάσκα από ένα πεδίο πρέπει να έχει το δικαιώμα του ALTER ANY MASK.

Πηγές:

Μοιράσου το

Αφήστε μία απάντηση