Attention : Ce code nécessite des droits administrateur.
Cet exemple modifie l'accès à une table CAS (`tableA`) afin qu'un utilisateur spécifique (`userA`) ne puisse accéder qu'aux lignes où la valeur de la colonne `Make` est 'Ford'. Il montre l'utilisation de l'action `accessControl.updSomeAcsTable` pour attribuer des permissions de 'Select' et 'ReadInfo' avec une condition de filtrage au niveau des lignes. Il est supposé que l'utilisateur n'a pas déjà un accès `ReadInfo` à la table. Les exemples incluent la création d'une table CAS temporaire pour assurer l'autonomie.
Analyse des données
Type : CREATION_INTERNE
Les exemples utilisent des données générées via un DATA Step avec Datalines, chargées ensuite dans CAS (caslib 'casuser').
1 Bloc de code
DATA STEP / PROC CAS Data
Explication : Cet exemple crée une table nommée 'Cars' dans la caslib 'casuser'. Ensuite, il utilise l'action `accessControl.updSomeAcsTable` pour attribuer à 'userA' les permissions de 'Select' et 'ReadInfo' sur cette table. La permission 'Select' est accompagnée d'un filtre, garantissant que 'userA' ne peut voir que les lignes où la colonne 'Make' a la valeur 'Ford'.
Copié !
/* Création de données d'exemple dans CAS */
data casuser.Cars;
infile datalines;
input Make $ Model $ Price;
datalines;
Ford Focus 20000
Ford Mustang 35000
Honda Civic 22000
Honda CRV 28000
Toyota Camry 25000
Chevrolet Cruze 21000
;
run;
/* Charger la table dans CAS */
proc cas;
session casauto;
table.promote /
caslib='casuser'
name='Cars'
replace=true;
run;
quit;
/* Appliquer le filtre de sécurité au niveau ligne pour 'userA' */
/* Note: 'userA' doit exister dans l'environnement SAS Viya */
proc cas;
session casauto;
accessControl.updSomeAcsTable /
acs={
{caslib="casuser",
table="Cars",
identity="userA",
identityType="User",
permType="Grant",
permission="Select",
filter="Make='Ford'"},
{caslib="casuser",
table="Cars",
identity="userA",
identityType="User",
permType="Grant",
permission="ReadInfo"}
};
run;
quit;
1
/* Création de données d'exemple dans CAS */
2
DATA casuser.Cars;
3
INFILEDATALINES;
4
INPUT Make $ Model $ Price;
5
DATALINES;
6
Ford Focus 20000
7
Ford Mustang 35000
8
Honda Civic 22000
9
Honda CRV 28000
10
Toyota Camry 25000
11
Chevrolet Cruze 21000
12
;
13
RUN;
14
15
/* Charger la table dans CAS */
16
PROC CAS;
17
SESSION casauto;
18
TABLE.promote /
19
caslib='casuser'
20
name='Cars'
21
replace=true;
22
RUN;
23
QUIT;
24
25
/* Appliquer le filtre de sécurité au niveau ligne pour 'userA' */
26
/* Note: 'userA' doit exister dans l'environnement SAS Viya */
27
PROC CAS;
28
SESSION casauto;
29
ACCESSCONTROL.updSomeAcsTable /
30
acs={
31
{caslib="casuser",
32
TABLE="Cars",
33
identity="userA",
34
identityType="User",
35
permType="Grant",
36
permission="Select",
37
filter="Make='Ford'"},
38
{caslib="casuser",
39
TABLE="Cars",
40
identity="userA",
41
identityType="User",
42
permType="Grant",
43
permission="ReadInfo"}
44
};
45
RUN;
46
QUIT;
2 Bloc de code
PROC CAS
Explication : Cet exemple étend le concept de filtrage en appliquant un filtre plus complexe pour 'userB'. Ce filtre permet à 'userB' de voir les lignes où 'Make' est 'Honda' OU 'Price' est supérieur à 25000. En plus des permissions 'Select' et 'ReadInfo', 'userB' reçoit également la permission 'Update' sur la table filtrée.
Copié !
/* Assurez-vous que la table 'Cars' existe et est chargée comme dans l'Exemple 1 */
/* Si non, exécuter la partie de création de données de l'Exemple 1 */
/* Appliquer un filtre plus complexe et des permissions additionnelles pour 'userB' */
/* Note: 'userB' doit exister dans l'environnement SAS Viya */
proc cas;
session casauto;
accessControl.updSomeAcsTable /
acs={
{caslib="casuser",
table="Cars",
identity="userB",
identityType="User",
permType="Grant",
permission="Select",
filter="Make='Honda' OR Price > 25000"},
{caslib="casuser",
table="Cars",
identity="userB",
identityType="User",
permType="Grant",
permission="ReadInfo"},
{caslib="casuser",
table="Cars",
identity="userB",
identityType="User",
permType="Grant",
permission="Update"}
};
run;
quit;
1
/* Assurez-vous que la table 'Cars' existe et est chargée comme dans l'Exemple 1 */
2
/* Si non, exécuter la partie de création de données de l'Exemple 1 */
3
4
/* Appliquer un filtre plus complexe et des permissions additionnelles pour 'userB' */
5
/* Note: 'userB' doit exister dans l'environnement SAS Viya */
6
PROC CAS;
7
SESSION casauto;
8
ACCESSCONTROL.updSomeAcsTable /
9
acs={
10
{caslib="casuser",
11
TABLE="Cars",
12
identity="userB",
13
identityType="User",
14
permType="Grant",
15
permission="Select",
16
filter="Make='Honda' OR Price > 25000"},
17
{caslib="casuser",
18
TABLE="Cars",
19
identity="userB",
20
identityType="User",
21
permType="Grant",
22
permission="ReadInfo"},
23
{caslib="casuser",
24
TABLE="Cars",
25
identity="userB",
26
identityType="User",
27
permType="Grant",
28
permission="Update"}
29
};
30
RUN;
31
QUIT;
3 Bloc de code
PROC CAS
Explication : Cet exemple illustre comment utiliser une macro-variable SAS (`selected_make`) pour insérer dynamiquement une valeur dans la condition de filtre. Cela simule un filtre dynamique sans avoir besoin de recoder l'action. 'userC' aura un accès filtré pour les voitures de marque 'Toyota'.
Copié !
/* Assurez-vous que la table 'Cars' existe et est chargée comme dans l'Exemple 1 */
/* Si non, exécuter la partie de création de données de l'Exemple 1 */
%let selected_make = Toyota;
/* Appliquer le filtre de sécurité avec une valeur dynamique pour 'userC' */
/* Note: 'userC' doit exister dans l'environnement SAS Viya */
proc cas;
session casauto;
accessControl.updSomeAcsTable /
acs={
{caslib="casuser",
table="Cars",
identity="userC",
identityType="User",
permType="Grant",
permission="Select",
filter="Make='%upcase(&selected_make)'"},
{caslib="casuser",
table="Cars",
identity="userC",
identityType="User",
permType="Grant",
permission="ReadInfo"}
};
run;
quit;
1
/* Assurez-vous que la table 'Cars' existe et est chargée comme dans l'Exemple 1 */
2
/* Si non, exécuter la partie de création de données de l'Exemple 1 */
3
4
%let selected_make = Toyota;
5
6
/* Appliquer le filtre de sécurité avec une valeur dynamique pour 'userC' */
7
/* Note: 'userC' doit exister dans l'environnement SAS Viya */
8
PROC CAS;
9
SESSION casauto;
10
ACCESSCONTROL.updSomeAcsTable /
11
acs={
12
{caslib="casuser",
13
TABLE="Cars",
14
identity="userC",
15
identityType="User",
16
permType="Grant",
17
permission="Select",
18
filter="Make='%upcase(&selected_make)'"},
19
{caslib="casuser",
20
TABLE="Cars",
21
identity="userC",
22
identityType="User",
23
permType="Grant",
24
permission="ReadInfo"}
25
};
26
RUN;
27
QUIT;
4 Bloc de code
PROC CAS
Explication : Cet exemple montre comment révoquer les permissions (et par conséquent le filtre de lignes associé) qui ont été précédemment attribuées à 'userA' sur la table 'Cars'. L'action `accessControl.dropSomeAcsTable` avec `permType='Revoke'` est utilisée pour retirer les permissions 'Select' et 'ReadInfo', ce qui annule également le filtre au niveau des lignes pour ces permissions. Après cette opération, 'userA' n'aura plus l'accès filtré.
Copié !
/* Assurez-vous qu'un filtre existe pour 'userA' comme dans l'Exemple 1 */
/* Suppression des permissions de sélection et ReadInfo pour 'userA' sur 'Cars' avec le filtre */
proc cas;
session casauto;
accessControl.dropSomeAcsTable /
acs={
{caslib="casuser",
table="Cars",
identity="userA",
identityType="User",
permType="Revoke", /* Utiliser Revoke pour supprimer les permissions */
permission="Select"},
{caslib="casuser",
table="Cars",
identity="userA",
identityType="User",
permType="Revoke",
permission="ReadInfo"}
};
run;
quit;
/* Après exécution, 'userA' n'aura plus les permissions 'Select' et 'ReadInfo' sur la table 'Cars', et le filtre de lignes associé sera supprimé. */
1
/* Assurez-vous qu'un filtre existe pour 'userA' comme dans l'Exemple 1 */
2
3
/* Suppression des permissions de sélection et ReadInfo pour 'userA' sur 'Cars' avec le filtre */
4
PROC CAS;
5
SESSION casauto;
6
ACCESSCONTROL.dropSomeAcsTable /
7
acs={
8
{caslib="casuser",
9
TABLE="Cars",
10
identity="userA",
11
identityType="User",
12
permType="Revoke", /* Utiliser Revoke pour supprimer les permissions */
13
permission="Select"},
14
{caslib="casuser",
15
TABLE="Cars",
16
identity="userA",
17
identityType="User",
18
permType="Revoke",
19
permission="ReadInfo"}
20
};
21
RUN;
22
QUIT;
23
24
/* Après exécution, 'userA' n'aura plus les permissions 'Select' et 'ReadInfo' sur la table 'Cars', et le filtre de lignes associé sera supprimé. */
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.