Attention : Ce code nécessite des droits administrateur.
L'action `accessControl.updSomeAcsColumn` est utilisée pour définir des règles d'accès granulaires au niveau des colonnes. Elle permet de révoquer les permissions 'ReadInfo' et 'Select' pour le groupe générique '*' (tous les utilisateurs) sur la colonne 'CCnum' de la table 'Receipts.sashdat' dans la caslib 'sales'. Simultanément, elle accorde explicitement ces mêmes permissions au 'groupA', garantissant ainsi que seuls les membres de ce groupe pourront voir et sélectionner cette colonne, renforçant la sécurité des données sensibles.
Analyse des données
Type : CREATION_INTERNE
Les exemples utilisent des données générées (DATA step avec DATALINES) ou SASHELP si nécessaire.
1 Bloc de code
CASL Data
Explication : Cet exemple commence par créer une table simple 'Receipts' avec des données factices et une colonne 'CCnum' sensible. Il charge ensuite cette table dans la caslib 'sales'. L'action `accessControl.updSomeAcsColumn` est ensuite utilisée pour refuser les permissions 'ReadInfo' et 'Select' sur la colonne 'CCnum' à tous les utilisateurs (groupe '*') et accorder ces mêmes permissions au 'groupA'. Cela garantit que seuls les membres du 'groupA' peuvent voir le contenu de cette colonne.
Copié !
CAS auto;
CASLIB _ALL_ assign;
/* Créer une table de démonstration 'Receipts' avec une colonne sensible 'CCnum' */
DATA casuser.Receipts;
LENGTH ID 8 Nom $ 20 CCnum $ 16;
INPUT ID Nom $ CCnum $;
DATALINES;
101 John_Doe 1234-5678-9012-3456
102 Jane_Smith 9876-5432-1098-7654
103 Peter_Jones 1122-3344-5566-7788
;
RUN;
/* Charger la table dans la caslib 'sales' (ou une autre caslib accessible) */
proc casutil;
load data=casuser.Receipts outcaslib="sales" casout="Receipts" replace;
run;
/* Masquer la colonne CCnum pour tous les utilisateurs (*) et la rendre visible pour 'groupA' */
proc cas;
accessControl.updSomeAcsColumn
acs={
{caslib="sales",
table="Receipts",
column="CCnum",
identity="*",
identityType="Group",
permType="Deny",
permission="ReadInfo"},
{caslib="sales",
table="Receipts",
column="CCnum",
identity="*",
identityType="Group",
permType="Deny",
permission="Select"},
{caslib="sales",
table="Receipts",
column="CCnum",
identity="groupA",
identityType="Group",
permType="Grant",
permission="ReadInfo"},
{caslib="sales",
table="Receipts",
column="CCnum",
identity="groupA",
identityType="Group",
permType="Grant",
permission="Select"}
};
run;
/* Vérifier les accès (en tant qu'administrateur ou membre de groupA pour voir CCnum) */
proc cas;
accessControl.viewAcsTable{caslib="sales", table="Receipts"};
run;
1
CAS auto;
2
CASLIB _ALL_ assign;
3
4
/* Créer une table de démonstration 'Receipts' avec une colonne sensible 'CCnum' */
5
DATA casuser.Receipts;
6
LENGTH ID 8 Nom $ 20 CCnum $ 16;
7
INPUT ID Nom $ CCnum $;
8
DATALINES;
9
101 John_Doe 1234-5678-9012-3456
10
102 Jane_Smith 9876-5432-1098-7654
11
103 Peter_Jones 1122-3344-5566-7788
12
;
13
RUN;
14
15
/* Charger la table dans la caslib 'sales' (ou une autre caslib accessible) */
Explication : Cet exemple démontre comment révoquer toutes les permissions d'accès (ReadInfo, Select, Update, Delete) sur la table 'Receipts' pour un utilisateur spécifique ('userB'). Cela empêche 'userB' d'effectuer toute opération sur cette table, quelle que soit toute autre permission héritée ou générale.
Copié !
CAS auto;
CASLIB _ALL_ assign;
/* Supposons que la table 'Receipts' existe dans la caslib 'sales' */
/* Créer une table de démonstration 'Receipts' avec une colonne sensible 'CCnum' */
DATA casuser.Receipts;
LENGTH ID 8 Nom $ 20 CCnum $ 16;
INPUT ID Nom $ CCnum $;
DATALINES;
101 John_Doe 1234-5678-9012-3456
102 Jane_Smith 9876-5432-1098-7654
103 Peter_Jones 1122-3344-5566-7788
;
RUN;
/* Charger la table dans la caslib 'sales' (ou une autre caslib accessible) */
proc casutil;
load data=casuser.Receipts outcaslib="sales" casout="Receipts" replace;
run;
/* Révoquer toutes les permissions (ReadInfo, Select, Update, Delete) sur la table 'Receipts' pour 'userB' */
proc cas;
accessControl.updSomeAcsTable
acs={
{caslib="sales",
table="Receipts",
identity="userB",
identityType="User",
permType="Deny",
permission="ReadInfo"},
{caslib="sales",
table="Receipts",
identity="userB",
identityType="User",
permType="Deny",
permission="Select"},
{caslib="sales",
table="Receipts",
identity="userB",
identityType="User",
permType="Deny",
permission="Update"},
{caslib="sales",
table="Receipts",
identity="userB",
identityType="User",
permType="Deny",
permission="Delete"}
};
run;
/* Vérifier les accès (en tant qu'administrateur) */
proc cas;
accessControl.viewAcsTable{caslib="sales", table="Receipts"};
run;
1
CAS auto;
2
CASLIB _ALL_ assign;
3
4
/* Supposons que la table 'Receipts' existe dans la caslib 'sales' */
5
/* Créer une table de démonstration 'Receipts' avec une colonne sensible 'CCnum' */
6
DATA casuser.Receipts;
7
LENGTH ID 8 Nom $ 20 CCnum $ 16;
8
INPUT ID Nom $ CCnum $;
9
DATALINES;
10
101 John_Doe 1234-5678-9012-3456
11
102 Jane_Smith 9876-5432-1098-7654
12
103 Peter_Jones 1122-3344-5566-7788
13
;
14
RUN;
15
16
/* Charger la table dans la caslib 'sales' (ou une autre caslib accessible) */
Explication : Cet exemple crée un filtre au niveau des lignes pour la table 'SalesData'. L'action `accessControl.updSomeAcsTable` est utilisée pour accorder la permission 'RowFilter' au 'groupEast' avec la condition 'Region = 'East''. Cela signifie que tout utilisateur membre de 'groupEast' ne verra que les lignes où la colonne 'Region' est 'East', même s'il a accès à la table entière, offrant un contrôle d'accès dynamique et avancé.
Copié !
CAS auto;
CASLIB _ALL_ assign;
/* Créer une table de données avec une colonne région */
DATA casuser.SalesData;
LENGTH Region $ 10 Product $ 10 Sales 8;
INPUT Region $ Product $ Sales;
DATALINES;
East A 100
West B 150
East C 200
South D 50
North E 120
West F 180
;
RUN;
/* Charger la table dans la caslib 'sales' */
proc casutil;
load data=casuser.SalesData outcaslib="sales" casout="SalesData" replace;
run;
/* Définir un filtre au niveau des lignes : 'groupEast' ne voit que les données de la région 'East' */
proc cas;
accessControl.updSomeAcsTable
acs={
{caslib="sales",
table="SalesData",
identity="groupEast",
identityType="Group",
permType="Grant",
permission="RowFilter",
filter="Region = 'East'"}
};
run;
/* Vérifier les accès (en tant qu'administrateur, puis simuler groupEast) */
proc cas;
accessControl.viewAcsTable{caslib="sales", table="SalesData"};
/* Pour tester, un utilisateur de 'groupEast' verrait : */
/* proc cas;
simple.fetch caslib='sales' table='SalesData';
run; */
run;
1
CAS auto;
2
CASLIB _ALL_ assign;
3
4
/* Créer une table de données avec une colonne région */
/* Pour tester, un utilisateur de 'groupEast' verrait : */
41
/* proc cas;
42
simple.fetch caslib='sales' table='SalesData';
43
run; */
44
RUN;
45
4 Bloc de code
CASL
Explication : Cet exemple utilise l'action `accessControl.viewAcsCaslib` pour afficher tous les contrôles d'accès définis sur une caslib spécifique, ici 'mylib'. C'est une action utile pour les administrateurs afin d'auditer et de comprendre les permissions appliquées aux ressources CAS. L'exemple inclut la création d'une caslib temporaire et l'assignation d'une permission simple pour rendre l'exemple exécutable et pertinent.
Copié !
CAS auto;
CASLIB _ALL_ assign;
/* Supposons qu'une caslib 'mylib' existe et que des contrôles d'accès y sont définis */
/* Vous pouvez créer une caslib de démonstration si nécessaire */
proc cas;
caslib _name_="mylib" path="/tmp/mylib" subdirs;
run;
/* Assigner des permissions de démonstration à la caslib */
proc cas;
accessControl.updSomeAcsCaslib
acs={
{caslib="mylib",
identity="userA",
identityType="User",
permType="Grant",
permission="Read"}
};
run;
/* Visualiser tous les contrôles d'accès définis pour la caslib 'mylib' */
proc cas;
accessControl.viewAcsCaslib{caslib="mylib"};
run;
1
CAS auto;
2
CASLIB _ALL_ assign;
3
4
/* Supposons qu'une caslib 'mylib' existe et que des contrôles d'accès y sont définis */
5
/* Vous pouvez créer une caslib de démonstration si nécessaire */
6
PROC CAS;
7
caslib _name_="mylib" path="/tmp/mylib" subdirs;
8
RUN;
9
10
/* Assigner des permissions de démonstration à la caslib */
11
PROC CAS;
12
ACCESSCONTROL.updSomeAcsCaslib
13
acs={
14
{caslib="mylib",
15
identity="userA",
16
identityType="User",
17
permType="Grant",
18
permission="Read"}
19
};
20
RUN;
21
22
/* Visualiser tous les contrôles d'accès définis pour la caslib 'mylib' */
23
PROC CAS;
24
ACCESSCONTROL.viewAcsCaslib{caslib="mylib"};
25
RUN;
26
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.
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.