Ce ne sont pas seulement les méchants qui ont besoin de protéger leurs secrets ! Les super-héros sont notre première ligne de défense contre les forces du mal, nous devons donc bien protéger leur identité civile.
Cependant, beaucoup de personnes ont accès à nos systèmes. Nous devons nous assurer que l’identité réelle de nos héros ne soit jamais révélée au grand jour!
Le service des Ressources Humaines plaide en faveur d’une approche plus personnelle pour notre entreprise et a demandé que certains employés puissent voir les prénoms des super-héros afin de créer des relations individuelles plus fortes. Les responsables hiérarchiques doivent quant à eux tout voir !
Avec les rôles en constante évolution au sein de l’organisation, nous aimerions quelque chose de dynamique, capable de bloquer par défaut l’accès pour des rôles futurs.
DÉFI
À l’aide de tags, nous voulons masquer les colonnes first_name et last_name de notre table data_to_be_masked comme suit :
- L’utilisateur par défaut qui a accès ne peut voir que les données hero_name non masquées.
- Le rôle foo1 ne peut voir que hero_name et first_name.
- Le rôle foo2 peut voir le contenu de toute la table.
- La stratégie de masquage utilisée ne doit PAS utiliser une fonction de vérification de rôle (current_role = … etc.).
CODE DE DÉMARRAGE
--CREATE DATA
CREATE OR REPLACE TABLE data_to_be_masked(first_name varchar, last_name varchar,hero_name varchar);
INSERT INTO data_to_be_masked (first_name, last_name, hero_name) VALUES ('Eveleen', 'Danzelman','The Quiet Antman');
INSERT INTO data_to_be_masked (first_name, last_name, hero_name) VALUES ('Harlie', 'Filipowicz','The Yellow Vulture');
INSERT INTO data_to_be_masked (first_name, last_name, hero_name) VALUES ('Mozes', 'McWhin','The Broken Shaman');
INSERT INTO data_to_be_masked (first_name, last_name, hero_name) VALUES ('Horatio', 'Hamshere','The Quiet Charmer');
INSERT INTO data_to_be_masked (first_name, last_name, hero_name) VALUES ('Julianna', 'Pellington','Professor Ancient Spectacle');
INSERT INTO data_to_be_masked (first_name, last_name, hero_name) VALUES ('Grenville', 'Southouse','Fire Wonder');
INSERT INTO data_to_be_masked (first_name, last_name, hero_name) VALUES ('Analise', 'Beards','Purple Fighter');
INSERT INTO data_to_be_masked (first_name, last_name, hero_name) VALUES ('Darnell', 'Bims','Mister Majestic Mothman');
INSERT INTO data_to_be_masked (first_name, last_name, hero_name) VALUES ('Micky', 'Shillan','Switcher');
INSERT INTO data_to_be_masked (first_name, last_name, hero_name) VALUES ('Ware', 'Ledstone','Optimo');
--CREATE ROLE
CREATE ROLE foo1;
CREATE ROLE foo2;
GRANT ROLE foo1 TO USER <ENTER USERNAME HERE>;
GRANT ROLE foo2 TO USER <ENTER USERNAME HERE>;
RÉSULTATS
En tant qu’ACCOUNTADMIN, pouvez-vous voir les données ?
USE ROLE ACCOUNTADMIN;
SELECT * FROM data_to_be_masked;
Que peut voir foo1 ?
USE ROLE foo1;
SELECT * FROM data_to_be_masked;
Et foo2 ?
USE ROLE foo2;
SELECT * FROM data_to_be_masked;
Remarque : le script de démarrage ne fournit pas le code pour les politiques de masquages. La section « CODE DE DÉMARRAGE » vous donne une base de code à compléter.
Et n’oubliez pas, si vous souhaitez participer aux défis:
1. Inscrivez-vous en tant que membre de Frosty Friday. –> Vous pouvez le faire en cliquant sur la barre latérale, puis en cliquant sur ‘REGISTER‘ (notez que s’inscrire à notre liste de diffusion ne vous donne pas de compte Frosty Friday).
2. Publiez votre code sur GitHub et rendez-le accessible au public (consultez notre guide si vous ne savez pas comment faire, disponible ici)
3. Postez l’URL dans les commentaires du défi.
Si vous avez des questions techniques que vous souhaitez poser à la communauté, vous pouvez les poser ici, sur notre thread dédié.
Laisser un commentaire
Vous devez vous connecter pour publier un commentaire.