Attention : Dieser Code erfordert Administratorrechte.
Dieses Beispiel ändert den Zugriff auf eine CAS-Tabelle (`tableA`), sodass ein bestimmter Benutzer (`userA`) nur auf Zeilen zugreifen kann, bei denen der Wert der Spalte `Make` 'Ford' ist. Es zeigt die Verwendung der Aktion `accessControl.updSomeAcsTable`, um 'Select'- und 'ReadInfo'-Berechtigungen mit einer Zeilenfilterbedingung zuzuweisen. Es wird davon ausgegangen, dass der Benutzer nicht bereits über `ReadInfo`-Zugriff auf die Tabelle verfügt. Die Beispiele umfassen die Erstellung einer temporären CAS-Tabelle, um die Autonomie zu gewährleisten.
Datenanalyse
Type : CREATION_INTERNE
Die Beispiele verwenden Daten, die über einen DATA Step mit Datalines generiert und anschließend in CAS (caslib 'casuser') geladen werden.
1 Codeblock
DATA STEP / PROC CAS Data
Erklärung : Dieses Beispiel erstellt eine Tabelle namens 'Cars' in der Caslib 'casuser'. Anschließend wird die Aktion `accessControl.updSomeAcsTable` verwendet, um 'userA' die Berechtigungen 'Select' und 'ReadInfo' für diese Tabelle zuzuweisen. Die 'Select'-Berechtigung wird von einem Filter begleitet, der sicherstellt, dass 'userA' nur Zeilen sehen kann, bei denen die Spalte 'Make' den Wert 'Ford' hat.
Kopiert!
/* 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 Codeblock
PROC CAS
Erklärung : Dieses Beispiel erweitert das Konzept der Filterung, indem ein komplexerer Filter für 'userB' angewendet wird. Dieser Filter ermöglicht es 'userB', Zeilen anzuzeigen, bei denen 'Make' 'Honda' ist ODER 'Price' größer als 25000 ist. Zusätzlich zu den Berechtigungen 'Select' und 'ReadInfo' erhält 'userB' auch die 'Update'-Berechtigung für die gefilterte Tabelle.
Kopiert!
/* 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 Codeblock
PROC CAS
Erklärung : Dieses Beispiel veranschaulicht, wie eine SAS-Makrovariable (`selected_make`) verwendet werden kann, um einen Wert dynamisch in die Filterbedingung einzufügen. Dies simuliert einen dynamischen Filter, ohne dass die Aktion neu codiert werden muss. 'userC' erhält gefilterten Zugriff auf Autos der Marke 'Toyota'.
Kopiert!
/* 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 Codeblock
PROC CAS
Erklärung : Dieses Beispiel zeigt, wie die Berechtigungen (und damit der zugehörige Zeilenfilter) widerrufen werden, die zuvor 'userA' für die Tabelle 'Cars' zugewiesen wurden. Die Aktion `accessControl.dropSomeAcsTable` mit `permType='Revoke'` wird verwendet, um die Berechtigungen 'Select' und 'ReadInfo' zu entfernen, wodurch auch der Zeilenfilter für diese Berechtigungen aufgehoben wird. Nach dieser Operation hat 'userA' keinen gefilterten Zugriff mehr.
Kopiert!
/* 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é. */
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.