Publié le :
Administration CREATION_INTERNE

Supprimer un contrôle d'accès direct

Ce code est également disponible en : Deutsch English Español
En attente de validation
Attention : Ce code nécessite des droits administrateur.
L'action 'accessControl.updSomeAcsTable' permet de modifier les contrôles d'accès pour les ressources CAS. En spécifiant 'permType="None"' pour une combinaison donnée de bibliothèque (caslib), table, identité et type d'identité, on supprime tout contrôle d'accès direct explicitement défini pour cette combinaison. Cela signifie que l'accès de l'identité spécifiée à la table sera ensuite déterminé par les groupes auxquels elle appartient ou par les paramètres d'accès hérités de la bibliothèque parent (caslib). Cette action est cruciale pour gérer la granularité des permissions dans un environnement SAS© Viya.
Analyse des données

Type : CREATION_INTERNE


Les exemples génèrent des données temporaires pour illustrer l'application des contrôles d'accès avant leur suppression.

1 Bloc de code
CAS Action Data
Explication :
Cet exemple démontre l'utilisation de base de 'updSomeAcsTable' pour révoquer une permission 'Select' spécifique. Il commence par créer une table, lui attribue explicitement un accès 'Select' pour 'groupA', puis utilise 'updSomeAcsTable' avec 'permType="None"' pour retirer ce contrôle direct. Les étapes intermédiaires de 'listAcsTable' permettent de visualiser l'état des permissions avant et après l'opération.
Copié !
1/* Début de l'exemple 1: Suppression Basique d'un Accès SELECT */
2 
3/* Création d'une session CAS */
4CAS casauto;
5 
6/* Création d'une caslib temporaire pour l'exemple */
7CASLIB mycaslib_temp LIBRARY="/tmp/mycaslib_temp" ;
8 
9/* Charger des données de démonstration dans une table CAS temporaire */
10DATA casuser.tableA;
11 INPUT id $ name $;
12 DATALINES;
13 1 John
14 2 Jane
15 ;
16RUN;
17 
18/* Sauvegarder la table en sashdat pour qu'elle puisse avoir des contrôles d'accès directs */
19PROC CASUTIL incaslib="casuser" outcaslib="mycaslib_temp" ;
20 save casuser.tableA replace ;
21QUIT;
22 
23/* Vérifier les contrôles d'accès existants (normalement aucun direct au début) */
24PROC CAS;
25 ACCESSCONTROL.listAcsTable /
26 caslib="mycaslib_temp",
27 TABLE="tableA.sashdat" ;
28QUIT;
29 
30/* Ajouter un contrôle d'accès direct 'Select' pour groupA sur tableA */
31PROC CAS;
32 ACCESSCONTROL.modAcsTable /
33 caslib="mycaslib_temp",
34 TABLE="tableA.sashdat",
35 identity="groupA",
36 identityType="Group",
37 permission="Select",
38 permType="Grant" ;
39QUIT;
40 
41/* Vérifier que le contrôle d'accès direct a été ajouté */
42PROC CAS;
43 ACCESSCONTROL.listAcsTable /
44 caslib="mycaslib_temp",
45 TABLE="tableA.sashdat" ;
46QUIT;
47 
48/* Supprimer le contrôle d'accès direct 'Select' pour groupA sur tableA */
49PROC CAS;
50 ACCESSCONTROL.updSomeAcsTable /
51 acs={
52 {caslib="mycaslib_temp",
53 TABLE="tableA.sashdat",
54 identity="groupA",
55 identityType="Group",
56 permType="None",
57 permission="Select"}
58 };
59QUIT;
60 
61/* Vérifier que le contrôle d'accès direct a été supprimé */
62PROC CAS;
63 ACCESSCONTROL.listAcsTable /
64 caslib="mycaslib_temp",
65 TABLE="tableA.sashdat" ;
66QUIT;
67 
68/* Nettoyer: Supprimer la table CAS et la caslib temporaire */
69PROC CASUTIL incaslib="mycaslib_temp" ;
70 drop tableA ;
71QUIT;
72CASLIB mycaslib_temp DROP ;
73CAS;
74/* Fin de l'exemple 1 */
2 Bloc de code
CAS Action Data
Explication :
Cet exemple illustre comment supprimer plusieurs permissions d'accès directes ('Read' et 'Write') pour un utilisateur ('userX') sur une table spécifique ('tableB.sashdat') en une seule exécution de 'updSomeAcsTable'. La syntaxe utilise un tableau 'acs' pour inclure plusieurs objets de permission, chacun spécifiant 'permType="None"'.
Copié !
1/* Début de l'exemple 2: Suppression de Multiples Permissions pour un Utilisateur */
2 
3CAS casauto;
4CASLIB mycaslib_temp2 LIBRARY="/tmp/mycaslib_temp2";
5 
6DATA casuser.tableB;
7 INPUT id $ value;
8 DATALINES;
9 A 10
10 B 20
11 ;
12RUN;
13 
14PROC CASUTIL incaslib="casuser" outcaslib="mycaslib_temp2";
15 save casuser.tableB replace;
16QUIT;
17 
18/* Accorder des permissions 'Read' et 'Write' directes à 'userX' sur 'tableB' */
19PROC CAS;
20 ACCESSCONTROL.modAcsTable /
21 caslib="mycaslib_temp2",
22 TABLE="tableB.sashdat",
23 identity="userX",
24 identityType="User",
25 permission="Read",
26 permType="Grant";
27 ACCESSCONTROL.modAcsTable /
28 caslib="mycaslib_temp2",
29 TABLE="tableB.sashdat",
30 identity="userX",
31 identityType="User",
32 permission="Write",
33 permType="Grant";
34QUIT;
35 
36/* Lister les ACLs pour vérifier */
37PROC CAS;
38 ACCESSCONTROL.listAcsTable /
39 caslib="mycaslib_temp2",
40 TABLE="tableB.sashdat";
41QUIT;
42 
43/* Supprimer les contrôles d'accès directs 'Read' et 'Write' pour 'userX' */
44PROC CAS;
45 ACCESSCONTROL.updSomeAcsTable /
46 acs={
47 {caslib="mycaslib_temp2",
48 TABLE="tableB.sashdat",
49 identity="userX",
50 identityType="User",
51 permType="None",
52 permission="Read"},
53 {caslib="mycaslib_temp2",
54 TABLE="tableB.sashdat",
55 identity="userX",
56 identityType="User",
57 permType="None",
58 permission="Write"}
59 };
60QUIT;
61 
62/* Lister les ACLs pour vérifier la suppression */
63PROC CAS;
64 ACCESSCONTROL.listAcsTable /
65 caslib="mycaslib_temp2",
66 TABLE="tableB.sashdat";
67QUIT;
68 
69/* Nettoyer: Supprimer la table CAS et la caslib temporaire */
70PROC CASUTIL incaslib="mycaslib_temp2" ;
71 drop tableB ;
72QUIT;
73CASLIB mycaslib_temp2 DROP ;
74CAS;
75/* Fin de l'exemple 2 */
3 Bloc de code
CAS Action / CASL Data
Explication :
Cet exemple combine CASL (SAS Cloud Analytic Services Language) avec l'action 'accessControl.updSomeAcsTable'. Une macro CASL est créée pour d'abord lister les contrôles d'accès d'une table, vérifier si une permission directe spécifique ('Delete' pour 'userZ') existe, et seulement si elle existe, la supprimer à l'aide de 'updSomeAcsTable'. Cela illustre une gestion plus robuste et conditionnelle des droits.
Copié !
1/* Début de l'exemple 3: Suppression Conditionnelle d'Accès et Vérification */
2 
3CAS casauto;
4CASLIB mycaslib_temp3 LIBRARY="/tmp/mycaslib_temp3";
5 
6DATA casuser.tableC;
7 INPUT id $ value;
8 DATALINES;
9 X 100
10 Y 200
11 ;
12RUN;
13 
14PROC CASUTIL incaslib="casuser" outcaslib="mycaslib_temp3";
15 save casuser.tableC replace;
16QUIT;
17 
18/* Accorder temporairement une permission 'Delete' à 'userZ' */
19PROC CAS;
20 ACCESSCONTROL.modAcsTable /
21 caslib="mycaslib_temp3",
22 TABLE="tableC.sashdat",
23 identity="userZ",
24 identityType="User",
25 permission="Delete",
26 permType="Grant";
27QUIT;
28 
29/* Utiliser CASL pour vérifier si la permission 'Delete' existe avant de la supprimer */
30%macro check_and_remove(caslib, TABLE, identity, permission);
31 PROC CAS;
32 outargs=\"acltable\" accessControl.listAcsTable /
33 caslib=&caslib,
34 table=&table;
35 quit;
36 
37 %local found_direct_delete;
38 %let found_direct_delete = 0;
39 
40 %do i = 1 %to &acltable.Acl.nobs;
41 %if "&acltable.Acl[&i,identity]" = "&identity" and
42 "&acltable.Acl[&i,permission]" = "&permission" and
43 "&acltable.Acl[&i,permType]" = "Direct" %then %do;
44 %let found_direct_delete = 1;
45 %goto found;
46 %end;
47 %end;
48 
49%found:
50 
51 %if &found_direct_delete = 1 %then %do;
52 %put NOTE: Permission &permission for &identity found. Attempting to remove direct control.;
53 proc cas;
54 accessControl.updSomeAcsTable /
55 acs={
56 {caslib="&caslib",
57 table="&TABLE",
58 identity="&identity",
59 identityType="User",
60 permType="None",
61 permission="&permission"}
62 };
63 quit;
64 %put NOTE: Direct control for &permission for &identity removed.;
65 %end;
66 %else %do;
67 %put NOTE: No direct permission &permission found for &identity.;
68 %end;
69 
70 /* Re-lister pour confirmation */
71 proc cas;
72 accessControl.listAcsTable /
73 caslib=&caslib,
74 table=&table ;
75 quit;
76%mend;
77 
78/* Exécuter la macro */
79%check_and_remove(mycaslib_temp3, tableC.sashdat, userZ, Delete);
80 
81/* Nettoyer: Supprimer la table CAS et la caslib temporaire */
82proc casutil incaslib="mycaslib_temp3" ;
83 drop tableC ;
84quit;
85CASLIB mycaslib_temp3 DROP ;
86CAS;
87/* Fin de l'exemple 3 */
4 Bloc de code
CAS Action Data
Explication :
Cet exemple met l'accent sur la gestion des contrôles d'accès pour les tables transitoires (en mémoire CAS). Il crée une table temporaire, lui attribue un droit 'Alter' direct pour 'userY', puis utilise 'updSomeAcsTable' pour retirer ce droit. Ceci est pertinent dans les environnements Viya/CAS où les tables en mémoire peuvent aussi avoir des ACLs.
Copié !
1/* Début de l'exemple 4: Gestion de l'Accès pour une Table Transitoire (Viya/CAS) */
2 
3CAS casauto;
4 
5/* Créer une table CAS transitoire (en mémoire, caslib 'casuser' par défaut) */
6DATA casuser.temp_data;
7 INPUT col1 col2;
8 DATALINES;
9 10 20
10 30 40
11 ;
12RUN;
13 
14/* Accorder un accès 'Alter' direct à un 'userY' sur la table transitoire */
15PROC CAS;
16 ACCESSCONTROL.modAcsTable /
17 caslib="casuser",
18 TABLE="temp_data",
19 identity="userY",
20 identityType="User",
21 permission="Alter",
22 permType="Grant";
23QUIT;
24 
25/* Lister les ACLs pour vérifier */
26PROC CAS;
27 ACCESSCONTROL.listAcsTable /
28 caslib="casuser",
29 TABLE="temp_data";
30QUIT;
31 
32/* Supprimer le contrôle d'accès direct 'Alter' pour 'userY' */
33PROC CAS;
34 ACCESSCONTROL.updSomeAcsTable /
35 acs={
36 {caslib="casuser",
37 TABLE="temp_data",
38 identity="userY",
39 identityType="User",
40 permType="None",
41 permission="Alter"}
42 };
43QUIT;
44 
45/* Lister les ACLs pour vérifier la suppression */
46PROC CAS;
47 ACCESSCONTROL.listAcsTable /
48 caslib="casuser",
49 TABLE="temp_data";
50QUIT;
51 
52/* Nettoyer: Supprimer la table CAS transitoire */
53PROC CASUTIL incaslib="casuser" ;
54 drop temp_data ;
55QUIT;
56CAS;
57/* Fin de l'exemple 4 */
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.