Veröffentlicht am :
Verwaltung CREATION_INTERNE

Spalte für die meisten Benutzer ausblenden

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Attention : Dieser Code erfordert Administratorrechte.
Die Aktion `accessControl.updSomeAcsColumn` wird verwendet, um granulare Zugriffsregeln auf Spaltenebene zu definieren. Sie ermöglicht es, die Berechtigungen 'ReadInfo' und 'Select' für die generische Gruppe '*' (alle Benutzer) für die Spalte 'CCnum' der Tabelle 'Receipts.sashdat' in der Caslib 'sales' zu widerrufen. Gleichzeitig werden diese Berechtigungen explizit der 'groupA' erteilt, wodurch sichergestellt wird, dass nur Mitglieder dieser Gruppe diese Spalte sehen und auswählen können, was die Sicherheit sensibler Daten erhöht.
Datenanalyse

Type : CREATION_INTERNE


Die Beispiele verwenden generierte Daten (DATA-Schritt mit DATALINES) oder bei Bedarf SASHELP.

1 Codeblock
CASL Data
Erklärung :
Dieses Beispiel beginnt mit der Erstellung einer einfachen Tabelle 'Receipts' mit Dummy-Daten und einer sensiblen Spalte 'CCnum'. Anschließend wird diese Tabelle in die Caslib 'sales' geladen. Die Aktion `accessControl.updSomeAcsColumn` wird dann verwendet, um die Berechtigungen 'ReadInfo' und 'Select' für die Spalte 'CCnum' allen Benutzern (Gruppe '*') zu verweigern und dieselben Berechtigungen der 'groupA' zu erteilen. Dies stellt sicher, dass nur Mitglieder der 'groupA' den Inhalt dieser Spalte sehen können.
Kopiert!
1CAS auto;
2CASLIB _ALL_ assign;
3 
4/* Créer une table de démonstration 'Receipts' avec une colonne sensible 'CCnum' */
5DATA casuser.Receipts;
6 LENGTH ID 8 Nom $ 20 CCnum $ 16;
7 INPUT ID Nom $ CCnum $;
8 DATALINES;
9101 John_Doe 1234-5678-9012-3456
10102 Jane_Smith 9876-5432-1098-7654
11103 Peter_Jones 1122-3344-5566-7788
12;
13RUN;
14 
15/* Charger la table dans la caslib 'sales' (ou une autre caslib accessible) */
16PROC CASUTIL;
17 load DATA=casuser.Receipts outcaslib="sales" casout="Receipts" replace;
18RUN;
19 
20/* Masquer la colonne CCnum pour tous les utilisateurs (*) et la rendre visible pour 'groupA' */
21PROC CAS;
22 ACCESSCONTROL.updSomeAcsColumn
23 acs={
24 {caslib="sales",
25 TABLE="Receipts",
26 column="CCnum",
27 identity="*",
28 identityType="Group",
29 permType="Deny",
30 permission="ReadInfo"},
31 {caslib="sales",
32 TABLE="Receipts",
33 column="CCnum",
34 identity="*",
35 identityType="Group",
36 permType="Deny",
37 permission="Select"},
38 {caslib="sales",
39 TABLE="Receipts",
40 column="CCnum",
41 identity="groupA",
42 identityType="Group",
43 permType="Grant",
44 permission="ReadInfo"},
45 {caslib="sales",
46 TABLE="Receipts",
47 column="CCnum",
48 identity="groupA",
49 identityType="Group",
50 permType="Grant",
51 permission="Select"}
52 };
53RUN;
54 
55/* Vérifier les accès (en tant qu'administrateur ou membre de groupA pour voir CCnum) */
56PROC CAS;
57 ACCESSCONTROL.viewAcsTable{caslib="sales", TABLE="Receipts"};
58RUN;
59 
2 Codeblock
CASL
Erklärung :
Dieses Beispiel zeigt, wie alle Zugriffsrechte (ReadInfo, Select, Update, Delete) auf die Tabelle 'Receipts' für einen bestimmten Benutzer ('userB') widerrufen werden. Dies verhindert, dass 'userB' Operationen auf dieser Tabelle ausführt, unabhängig von anderen geerbten oder allgemeinen Berechtigungen.
Kopiert!
1CAS auto;
2CASLIB _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' */
6DATA casuser.Receipts;
7 LENGTH ID 8 Nom $ 20 CCnum $ 16;
8 INPUT ID Nom $ CCnum $;
9 DATALINES;
10101 John_Doe 1234-5678-9012-3456
11102 Jane_Smith 9876-5432-1098-7654
12103 Peter_Jones 1122-3344-5566-7788
13;
14RUN;
15 
16/* Charger la table dans la caslib 'sales' (ou une autre caslib accessible) */
17PROC CASUTIL;
18 load DATA=casuser.Receipts outcaslib="sales" casout="Receipts" replace;
19RUN;
20 
21/* Révoquer toutes les permissions (ReadInfo, Select, Update, Delete) sur la table 'Receipts' pour 'userB' */
22PROC CAS;
23 ACCESSCONTROL.updSomeAcsTable
24 acs={
25 {caslib="sales",
26 TABLE="Receipts",
27 identity="userB",
28 identityType="User",
29 permType="Deny",
30 permission="ReadInfo"},
31 {caslib="sales",
32 TABLE="Receipts",
33 identity="userB",
34 identityType="User",
35 permType="Deny",
36 permission="Select"},
37 {caslib="sales",
38 TABLE="Receipts",
39 identity="userB",
40 identityType="User",
41 permType="Deny",
42 permission="Update"},
43 {caslib="sales",
44 TABLE="Receipts",
45 identity="userB",
46 identityType="User",
47 permType="Deny",
48 permission="Delete"}
49 };
50RUN;
51 
52/* Vérifier les accès (en tant qu'administrateur) */
53PROC CAS;
54 ACCESSCONTROL.viewAcsTable{caslib="sales", TABLE="Receipts"};
55RUN;
56 
3 Codeblock
CASL
Erklärung :
Dieses Beispiel erstellt einen Zeilenfilter für die Tabelle 'SalesData'. Die Aktion `accessControl.updSomeAcsTable` wird verwendet, um der 'groupEast' die Berechtigung 'RowFilter' mit der Bedingung 'Region = 'East'' zu erteilen. Dies bedeutet, dass jedes Mitglied der 'groupEast' nur die Zeilen sieht, in denen die Spalte 'Region' 'East' ist, selbst wenn es Zugriff auf die gesamte Tabelle hat, was eine dynamische und erweiterte Zugriffskontrolle bietet.
Kopiert!
1CAS auto;
2CASLIB _ALL_ assign;
3 
4/* Créer une table de données avec une colonne région */
5DATA casuser.SalesData;
6 LENGTH Region $ 10 Product $ 10 Sales 8;
7 INPUT Region $ Product $ Sales;
8 DATALINES;
9East A 100
10West B 150
11East C 200
12South D 50
13North E 120
14West F 180
15;
16RUN;
17 
18/* Charger la table dans la caslib 'sales' */
19PROC CASUTIL;
20 load DATA=casuser.SalesData outcaslib="sales" casout="SalesData" replace;
21RUN;
22 
23/* Définir un filtre au niveau des lignes : 'groupEast' ne voit que les données de la région 'East' */
24PROC CAS;
25 ACCESSCONTROL.updSomeAcsTable
26 acs={
27 {caslib="sales",
28 TABLE="SalesData",
29 identity="groupEast",
30 identityType="Group",
31 permType="Grant",
32 permission="RowFilter",
33 filter="Region = 'East'"}
34 };
35RUN;
36 
37/* Vérifier les accès (en tant qu'administrateur, puis simuler groupEast) */
38PROC CAS;
39 ACCESSCONTROL.viewAcsTable{caslib="sales", TABLE="SalesData"};
40 /* Pour tester, un utilisateur de 'groupEast' verrait : */
41 /* proc cas;
42 simple.fetch caslib='sales' table='SalesData';
43 run; */
44RUN;
45 
4 Codeblock
CASL
Erklärung :
Dieses Beispiel verwendet die Aktion `accessControl.viewAcsCaslib`, um alle definierten Zugriffssteuerungen für eine bestimmte Caslib, hier 'mylib', anzuzeigen. Dies ist eine nützliche Aktion für Administratoren, um die auf CAS-Ressourcen angewendeten Berechtigungen zu überprüfen und zu verstehen. Das Beispiel enthält die Erstellung einer temporären Caslib und die Zuweisung einer einfachen Berechtigung, um das Beispiel ausführbar und relevant zu machen.
Kopiert!
1CAS auto;
2CASLIB _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 */
6PROC CAS;
7 caslib _name_="mylib" path="/tmp/mylib" subdirs;
8RUN;
9 
10/* Assigner des permissions de démonstration à la caslib */
11PROC CAS;
12 ACCESSCONTROL.updSomeAcsCaslib
13 acs={
14 {caslib="mylib",
15 identity="userA",
16 identityType="User",
17 permType="Grant",
18 permission="Read"}
19 };
20RUN;
21 
22/* Visualiser tous les contrôles d'accès définis pour la caslib 'mylib' */
23PROC CAS;
24 ACCESSCONTROL.viewAcsCaslib{caslib="mylib"};
25RUN;
26 
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.
Urheberrechtsinformationen : Copyright © SAS Institute Inc. All Rights Reserved.