Tabelle auf geerbten Zugriff zurücksetzen

Dieser Code ist auch verfügbar auf: English
Schwierigkeitsgrad
Anfänger
Veröffentlicht am :
Attention : Dieser Code erfordert Administratorrechte.
Die Aktion accessControl.remAllAcsData wird verwendet, um alle direkten Zugriffssteuerungen (ACLs), die spezifisch für eine CAS-Tabelle definiert sind, zu widerrufen. Nach Ausführung dieser Aktion werden die Zugriffsrechte der Tabelle wieder durch die Zugriffsregeln der CAS-Bibliothek (Caslib), zu der sie gehört, bestimmt. Diese Aktion ist unerlässlich, um die Berechtigungsverwaltung zu vereinfachen oder spezifische Zugriffskonfigurationen zu korrigieren, die den geerbten Zugriff behindern könnten. Sie wirkt sich nur auf Zugriffssteuerungen auf Tabellenebene aus und nicht auf Zugriffssteuerungen auf Spaltenebene.
Datenanalyse

Type : CREATION_INTERNE


Die Beispiele erstellen temporäre CAS-Tabellen zu Demonstrationszwecken, entweder unter Verwendung von Datalines oder SASHELP-Daten.

1 Codeblock
CAS Action / DATA STEP Data
Erklärung :
Dieses Beispiel erstellt eine temporäre Tabelle 'ma_table_test' in einer temporären Caslib '_NAME_TEMP_'. Eine direkte Zugriffssteuerung wird dann für einen fiktiven Benutzer ('sasguest') angewendet. Die Aktion `accessControl.remAllAcsData` wird anschließend verwendet, um diese direkte Zugriffssteuerung zu entfernen, wodurch die Tabelle dazu gebracht wird, die Berechtigungen von der Caslib zu erben. Die Überprüfungsschritte (`showTableAcl`) ermöglichen es, den Status der Berechtigungen vor und nach der Operation zu bestätigen. Das Beispiel beinhaltet die Erstellung und Bereinigung temporärer Ressourcen.
Kopiert!
1CAS casauto;
2 
3/* Création d'une caslib temporaire et d'une table simple */
4caslib _NAME_TEMP_ cas datasource=(srctype='path') path='/tmp/';
5DATA _NAME_TEMP_.ma_table_test;
6 x=1;
7 OUTPUT;
8RUN;
9 
10/* Appliquer un contrôle d'accès direct pour la démonstration */
11ACCESSCONTROL.addTableAcl / caslib='_NAME_TEMP_', TABLE='ma_table_test', userId='sasguest', perm='read';
12 
13/* Vérifier les contrôles d'accès avant la réinitialisation (optionnel) */
14PROC CAS;
15 ACCESSCONTROL.showTableAcl / caslib='_NAME_TEMP_', TABLE='ma_table_test';
16RUN;
17 
18/* Réinitialiser tous les contrôles d'accès directs pour 'ma_table_test' */
19ACCESSCONTROL.remAllAcsData /
20 caslib='_NAME_TEMP_',
21 TABLE='ma_table_test';
22 
23/* Vérifier les contrôles d'accès après la réinitialisation */
24PROC CAS;
25 ACCESSCONTROL.showTableAcl / caslib='_NAME_TEMP_', TABLE='ma_table_test';
26RUN;
27 
28/* Nettoyage */
29PROC CAS;
30 TABLE.dropTable / caslib='_NAME_TEMP_', name='ma_table_test';
31 caslib.dropCaslib / caslib='_NAME_TEMP_';
32RUN;
2 Codeblock
CAS Action Data
Erklärung :
Dieses Beispiel zeigt das Zurücksetzen von Zugriffssteuerungen für eine Tabelle, nachdem mehrere direkte Berechtigungen angewendet wurden. Es erstellt eine Tabelle 'autre_table' basierend auf SASHELP.CLASS, fügt spezifische Berechtigungen für 'sasguest' und 'sasuser' hinzu und verwendet dann `remAllAcsData`, um alle zu widerrufen. Die Überprüfung erfolgt vor und nach dem Zurücksetzen, um die Änderung zu visualisieren und sicherzustellen, dass die Tabelle in ihren geerbten Zugriffsstatus zurückgekehrt ist.
Kopiert!
1CAS casauto;
2 
3/* Création d'une caslib temporaire et d'une table */
4caslib _NAME_TEMP_2 cas datasource=(srctype='path') path='/tmp/';
5DATA _NAME_TEMP_2.autre_table;
6 SET sashelp.class;
7RUN;
8 
9/* Appliquer des ACLs directes variées */
10ACCESSCONTROL.addTableAcl / caslib='_NAME_TEMP_2', TABLE='autre_table', userId='sasguest', perm='read';
11ACCESSCONTROL.addTableAcl / caslib='_NAME_TEMP_2', TABLE='autre_table', userId='sasuser', perm='update';
12 
13/* Afficher les ACLs avant de les retirer */
14PROC CAS;
15 ACCESSCONTROL.showTableAcl / caslib='_NAME_TEMP_2', TABLE='autre_table';
16RUN;
17 
18/* Réinitialiser les contrôles d'accès directs */
19ACCESSCONTROL.remAllAcsData / caslib='_NAME_TEMP_2', TABLE='autre_table';
20 
21/* Afficher les ACLs après réinitialisation pour confirmer l'héritage */
22PROC CAS;
23 ACCESSCONTROL.showTableAcl / caslib='_NAME_TEMP_2', TABLE='autre_table';
24RUN;
25 
26/* Nettoyage */
27PROC CAS;
28 TABLE.dropTable / caslib='_NAME_TEMP_2', name='autre_table';
29 caslib.dropCaslib / caslib='_NAME_TEMP_2';
30RUN;
3 Codeblock
CAS Action Data
Erklärung :
Dieses Beispiel vertieft das Verständnis der Berechtigungsvererbung. Eine Tabelle wird erstellt und ihre anfänglichen Berechtigungen (von der Caslib geerbt) werden angezeigt. Anschließend wird eine direkte Berechtigung zur Tabelle hinzugefügt. `remAllAcsData` wird verwendet, um diese direkte Berechtigung zu entfernen, was zeigt, wie der geerbte Zugriff wieder vorherrschend wird. Ziel ist es, die Auswirkungen des Zurücksetzens auf die Berechtigungskaskade klar darzustellen.
Kopiert!
1CAS casauto;
2 
3/* Création d'une caslib et d'une table */
4caslib _NAME_TEMP_3 cas datasource=(srctype='path') path='/tmp/';
5DATA _NAME_TEMP_3.table_heritee;
6 x=1; y=2;
7RUN;
8 
9/* Afficher les permissions initiales de la caslib et de la table */
10PROC CAS;
11 ACCESSCONTROL.showCaslibAcl / caslib='_NAME_TEMP_3';
12 ACCESSCONTROL.showTableAcl / caslib='_NAME_TEMP_3', TABLE='table_heritee';
13RUN;
14 
15/* Ajouter une permission directe à la table qui surcharge l'héritage */
16ACCESSCONTROL.addTableAcl / caslib='_NAME_TEMP_3', TABLE='table_heritee', userId='sasguest', perm='promote';
17 
18/* Vérifier que la permission directe est active */
19PROC CAS;
20 ACCESSCONTROL.showTableAcl / caslib='_NAME_TEMP_3', TABLE='table_heritee';
21RUN;
22 
23/* Réinitialiser la table aux permissions héritées */
24ACCESSCONTROL.remAllAcsData / caslib='_NAME_TEMP_3', TABLE='table_heritee';
25 
26/* Vérifier l'état après réinitialisation - la permission 'promote' devrait avoir disparu au niveau de la table */
27PROC CAS;
28 ACCESSCONTROL.showTableAcl / caslib='_NAME_TEMP_3', TABLE='table_heritee';
29RUN;
30 
31/* Nettoyage */
32PROC CAS;
33 TABLE.dropTable / caslib='_NAME_TEMP_3', name='table_heritee';
34 caslib.dropCaslib / caslib='_NAME_TEMP_3';
35RUN;
4 Codeblock
CAS Action Data
Erklärung :
Dieses Beispiel konzentriert sich auf Robustheit und Fehlerbehandlung. Es versucht zunächst, `remAllAcsData` auf eine nicht existierende Tabelle anzuwenden, um zu demonstrieren, wie das System solche Situationen handhabt (normalerweise durch die Rückgabe eines Fehlercodes). Anschließend wird eine Tabelle erstellt, Berechtigungen werden angewendet und dann zurückgesetzt, um die korrekte Funktion der Aktion auf eine gültige Ressource zu zeigen. Dies hilft, die erwarteten Verhaltensweisen in nicht idealen Szenarien zu verstehen.
Kopiert!
1CAS casauto;
2 
3/* Création d'une caslib temporaire */
4caslib _NAME_TEMP_4 cas datasource=(srctype='path') path='/tmp/';
5 
6/* Tentative de réinitialisation sur une table qui n'existe pas */
7PROC CAS;
8 ACCESSCONTROL.remAllAcsData / caslib='_NAME_TEMP_4', TABLE='table_inexistante';
9 IF _STATUS_ ne 0 THEN DO;
10 PRINT 'Erreur: La table n\'existe pas ou une autre erreur s\'est produite.';
11 END;
12RUN;
13 
14/* Création d'une table et application de permissions */
15DATA _NAME_TEMP_4.ma_table_err;
16 id=1;
17 name='Test';
18RUN;
19ACCESSCONTROL.addTableAcl / caslib='_NAME_TEMP_4', TABLE='ma_table_err', userId='sasguest', perm='delete';
20 
21/* Réinitialisation réussie */
22PROC CAS;
23 ACCESSCONTROL.remAllAcsData / caslib='_NAME_TEMP_4', TABLE='ma_table_err';
24RUN;
25 
26/* Nettoyage */
27PROC CAS;
28 TABLE.dropTable / caslib='_NAME_TEMP_4', name='ma_table_err';
29 caslib.dropCaslib / caslib='_NAME_TEMP_4';
30RUN;
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.


Zugehörige Dokumentation

Aucune documentation spécifique pour cette catégorie.