Veröffentlicht am :
Administration CREATION_INTERNE

Effektiven Zugriff auf eine Tabelle visualisieren

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Attention : Dieser Code erfordert Administratorrechte.
Diese CAS-Aktion liefert detaillierte Informationen über die effektiven Zugriffsrechte eines Benutzers oder einer Gruppe auf eine bestimmte Ressource (Tabelle, Caslib oder Spalte) auf dem CAS-Server. Sie berücksichtigt alle expliziten und geerbten Zugriffsregeln sowie das Vorhandensein von Zeilenfiltern. Die Ergebnisse zeigen für jede relevante Identität und Berechtigung an, ob der Zugriff erlaubt (explizit oder geerbt), nicht erlaubt oder gefiltert ist. Die Entscheidungen können zur besseren Lesbarkeit numerisch (Standard) oder als Text zurückgegeben werden.
Datenanalyse

Type : CREATION_INTERNE


Die bereitgestellten Beispiele erstellen ihre eigenen Daten über DATA-Schritte mit DATALINES oder verwenden Standard-Caslibs wie `casuser`, um ihre Autonomie und Ausführbarkeit zu gewährleisten.

1 Codeblock
DATA STEP / PROC CAS Data
Erklärung :
Dieses Beispiel veranschaulicht die einfachste Verwendung der Aktion `whatIsEffective` für eine bestimmte Tabelle. Es erstellt zuerst eine kleine In-Memory-CAS-Tabelle (`casuser.mydata`) und ruft dann die Aktion `whatIsEffective` auf, wobei die Caslib (`casuser`), der Objekttyp (`table`) und der Tabellenname (`mydata`) angegeben werden. Die Ergebnisse zeigen den effektiven Zugriff für die relevanten Benutzer und Gruppen standardmäßig numerisch an.
Kopiert!
1/* Création d'une table CAS temporaire pour l'exemple */
2DATA casuser.mydata;
3 INPUT id name $;
4 DATALINES;
51 Alice
62 Bob
73 Charlie
8;
9RUN;
10 
11PROC CAS;
12 /* Connexion à la session CAS par défaut */
13 SESSION casauto;
14 
15 /* Vérification de l'accès effectif à la table 'mydata' dans la caslib 'casuser' */
16 ACCESSCONTROL.whatIsEffective /
17 objectSelector={caslib="casuser",objType="table",TABLE="mydata"};
18QUIT;
19 
20/* Nettoyage de la table temporaire */
21PROC CAS;
22 SESSION casauto;
23 TABLE.dropTable / caslib="casuser", name="mydata";
24QUIT;
2 Codeblock
DATA STEP / PROC CAS Data
Erklärung :
Dieses erweiterte Beispiel zeigt, wie Identitäten (Benutzer oder Gruppen) angegeben werden, für die der effektive Zugriff überprüft werden soll. Die Option `returnDecisionText=TRUE` wird verwendet, um lesbarere Ergebnisse (z. B. 'Authorized', 'Not Authorized') anstelle von numerischen Codes zu erhalten. Hier wird der Zugriff für 'sasadm' (ein typischer Administratorbenutzer) und 'sasguest' (ein Gastbenutzer) auf eine Verkaufsdatentabelle überprüft.
Kopiert!
1/* Création d'une table CAS temporaire pour l'exemple */
2DATA casuser.sales_data;
3 INPUT region $ sales;
4 DATALINES;
5East 100
6West 150
7North 200
8South 120
9;
10RUN;
11 
12PROC CAS;
13 SESSION casauto;
14 
15 /* Vérification de l'accès effectif pour des identités spécifiques */
16 /* et demande un résultat en texte compréhensible */
17 ACCESSCONTROL.whatIsEffective /
18 objectSelector={caslib="casuser", objType="table", TABLE="sales_data"},
19 identities={
20 {{id="sasadm", idType="user"}}, /* Exemple: administrateur CAS */
21 {{id="sasguest", idType="user"}} /* Exemple: utilisateur invité */
22 },
23 returnDecisionText=TRUE; /* Demander le texte de décision au lieu des codes numériques */
24QUIT;
25 
26/* Nettoyage de la table temporaire */
27PROC CAS;
28 SESSION casauto;
29 TABLE.dropTable / caslib="casuser", name="sales_data";
30QUIT;
3 Codeblock
DATA STEP / PROC CAS Data
Erklärung :
Dieses Beispiel demonstriert die Flexibilität der Aktion `whatIsEffective`, indem sie auf eine gesamte Caslib anstatt auf eine bestimmte Tabelle angewendet wird. Es werden auch Makrovariablen (`%let`) verwendet, um Caslib- und Gruppennamen dynamisch zu gestalten, was in komplexeren SAS-Skripten üblich ist. Hier wird der effektive Zugriff der Gruppe `CASHostAccountUsers` auf die Caslib `casuser` überprüft.
Kopiert!
1/* Création d'une table CAS temporaire pour s'assurer que la caslib casuser contient des données */
2DATA casuser.products;
3 INPUT product $ price;
4 DATALINES;
5Apple 1.00
6Banana 0.50
7Orange 0.75
8;
9RUN;
10 
11%let targetCaslib = casuser;
12%let targetGroup = CASHostAccountUsers;
13 
14PROC CAS;
15 SESSION casauto;
16 
17 /* Vérifier l'accès effectif pour une caslib entière pour un groupe */
18 ACCESSCONTROL.whatIsEffective /
19 objectSelector={caslib="&targetCaslib", objType="caslib"},
20 identities={
21 {{id="&targetGroup", idType="group"}} /* Vérifier pour le groupe d'utilisateurs CAS */
22 },
23 returnDecisionText=TRUE;
24QUIT;
25 
26/* Nettoyage de la table temporaire */
27PROC CAS;
28 SESSION casauto;
29 TABLE.dropTable / caslib="casuser", name="products";
30QUIT;
4 Codeblock
DATA STEP / PROC CAS Data
Erklärung :
Dieses fortgeschrittenere Beispiel zielt darauf ab, die Erkennung von Zeilenfiltern durch `whatIsEffective` zu veranschaulichen. Es erstellt eine Tabelle und überprüft dann den Zugriff für einen Administrator und einen hypothetischen Benutzer (`user101`). Wenn zuvor ein Filter für `user101` auf dieser Tabelle konfiguriert worden wäre (z. B. um nur seine eigenen Transaktionen zu sehen), würde die Aktion `whatIsEffective` dies mit einer Entscheidung wie 'Authorized with Filter' anzeigen. Der Code zum Hinzufügen eines solchen Filters ist als Hinweis enthalten, aber auskommentiert, da er administrative Berechtigungen erfordern und eine separate Aktion wäre.
Kopiert!
1/* Création d'une table CAS temporaire */
2DATA casuser.transactions;
3 INPUT transaction_id amount user_id;
4 DATALINES;
51 100 101
62 50 102
73 200 101
84 75 103
9;
10RUN;
11 
12/* Création d'une table temporaire avec des contrôles d'accès basiques (pour simuler un filtre si possible) */
13/* NOTE: L'ajout de contrôles de table avec filtres est une opération distincte. */
14/* Cet exemple suppose qu'un filtre pourrait exister et montre comment whatIsEffective le révélerait. */
15 
16PROC CAS;
17 SESSION casauto;
18 
19 /* Tentative de vérifier l'accès effectif pour un utilisateur qui pourrait avoir un filtre */
20 /* Si un filtre est en place, le résultat de returnDecisionText=TRUE affichera 'Authorized with Filter'. */
21 ACCESSCONTROL.whatIsEffective /
22 objectSelector={caslib="casuser", objType="table", TABLE="transactions"},
23 identities={
24 {{id="sasadm", idType="user"}}, /* Utilisateur administrateur */
25 {{id="user101", idType="user"}} /* Utilisateur potentiel avec un filtre */
26 },
27 returnDecisionText=TRUE;
28 
29 /* Pour un véritable test de filtre, vous devriez d'abord ajouter un filtre */
30 /* Exemple (commenté, car cela dépend de la configuration et des privilèges): */
31 /* accessControl.addTableControls / caslib="casuser", name="transactions", */
32 /* grant={{id="user101", idType="user", permissions={"select"}}, filter="user_id = 101"}; */
33QUIT;
34 
35/* Nettoyage de la table temporaire */
36PROC CAS;
37 SESSION casauto;
38 TABLE.dropTable / caslib="casuser", name="transactions";
39QUIT;
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.