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!
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) */
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!
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) */
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!
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 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!
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
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.