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!
CAS casauto;
/* Création d'une caslib temporaire et d'une table simple */
caslib _NAME_TEMP_ cas datasource=(srctype='path') path='/tmp/';
data _NAME_TEMP_.ma_table_test;
x=1;
output;
run;
/* Appliquer un contrôle d'accès direct pour la démonstration */
accessControl.addTableAcl / caslib='_NAME_TEMP_', table='ma_table_test', userId='sasguest', perm='read';
/* Vérifier les contrôles d'accès avant la réinitialisation (optionnel) */
proc cas;
accessControl.showTableAcl / caslib='_NAME_TEMP_', table='ma_table_test';
run;
/* Réinitialiser tous les contrôles d'accès directs pour 'ma_table_test' */
accessControl.remAllAcsData /
caslib='_NAME_TEMP_',
table='ma_table_test';
/* Vérifier les contrôles d'accès après la réinitialisation */
proc cas;
accessControl.showTableAcl / caslib='_NAME_TEMP_', table='ma_table_test';
run;
/* Nettoyage */
proc cas;
table.dropTable / caslib='_NAME_TEMP_', name='ma_table_test';
caslib.dropCaslib / caslib='_NAME_TEMP_';
run;
1
CAS casauto;
2
3
/* Création d'une caslib temporaire et d'une table simple */
4
caslib _NAME_TEMP_ cas datasource=(srctype='path') path='/tmp/';
5
DATA _NAME_TEMP_.ma_table_test;
6
x=1;
7
OUTPUT;
8
RUN;
9
10
/* Appliquer un contrôle d'accès direct pour la démonstration */
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!
CAS casauto;
/* Création d'une caslib temporaire et d'une table */
caslib _NAME_TEMP_2 cas datasource=(srctype='path') path='/tmp/';
data _NAME_TEMP_2.autre_table;
set sashelp.class;
run;
/* Appliquer des ACLs directes variées */
accessControl.addTableAcl / caslib='_NAME_TEMP_2', table='autre_table', userId='sasguest', perm='read';
accessControl.addTableAcl / caslib='_NAME_TEMP_2', table='autre_table', userId='sasuser', perm='update';
/* Afficher les ACLs avant de les retirer */
proc cas;
accessControl.showTableAcl / caslib='_NAME_TEMP_2', table='autre_table';
run;
/* Réinitialiser les contrôles d'accès directs */
accessControl.remAllAcsData / caslib='_NAME_TEMP_2', table='autre_table';
/* Afficher les ACLs après réinitialisation pour confirmer l'héritage */
proc cas;
accessControl.showTableAcl / caslib='_NAME_TEMP_2', table='autre_table';
run;
/* Nettoyage */
proc cas;
table.dropTable / caslib='_NAME_TEMP_2', name='autre_table';
caslib.dropCaslib / caslib='_NAME_TEMP_2';
run;
1
CAS casauto;
2
3
/* Création d'une caslib temporaire et d'une table */
4
caslib _NAME_TEMP_2 cas datasource=(srctype='path') path='/tmp/';
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!
CAS casauto;
/* Création d'une caslib et d'une table */
caslib _NAME_TEMP_3 cas datasource=(srctype='path') path='/tmp/';
data _NAME_TEMP_3.table_heritee;
x=1; y=2;
run;
/* Afficher les permissions initiales de la caslib et de la table */
proc cas;
accessControl.showCaslibAcl / caslib='_NAME_TEMP_3';
accessControl.showTableAcl / caslib='_NAME_TEMP_3', table='table_heritee';
run;
/* Ajouter une permission directe à la table qui surcharge l'héritage */
accessControl.addTableAcl / caslib='_NAME_TEMP_3', table='table_heritee', userId='sasguest', perm='promote';
/* Vérifier que la permission directe est active */
proc cas;
accessControl.showTableAcl / caslib='_NAME_TEMP_3', table='table_heritee';
run;
/* Réinitialiser la table aux permissions héritées */
accessControl.remAllAcsData / caslib='_NAME_TEMP_3', table='table_heritee';
/* Vérifier l'état après réinitialisation - la permission 'promote' devrait avoir disparu au niveau de la table */
proc cas;
accessControl.showTableAcl / caslib='_NAME_TEMP_3', table='table_heritee';
run;
/* Nettoyage */
proc cas;
table.dropTable / caslib='_NAME_TEMP_3', name='table_heritee';
caslib.dropCaslib / caslib='_NAME_TEMP_3';
run;
1
CAS casauto;
2
3
/* Création d'une caslib et d'une table */
4
caslib _NAME_TEMP_3 cas datasource=(srctype='path') path='/tmp/';
5
DATA _NAME_TEMP_3.table_heritee;
6
x=1; y=2;
7
RUN;
8
9
/* Afficher les permissions initiales de la caslib et de la table */
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!
CAS casauto;
/* Création d'une caslib temporaire */
caslib _NAME_TEMP_4 cas datasource=(srctype='path') path='/tmp/';
/* Tentative de réinitialisation sur une table qui n'existe pas */
proc cas;
accessControl.remAllAcsData / caslib='_NAME_TEMP_4', table='table_inexistante';
if _STATUS_ ne 0 then do;
print 'Erreur: La table n\'existe pas ou une autre erreur s\'est produite.';
end;
run;
/* Création d'une table et application de permissions */
data _NAME_TEMP_4.ma_table_err;
id=1;
name='Test';
run;
accessControl.addTableAcl / caslib='_NAME_TEMP_4', table='ma_table_err', userId='sasguest', perm='delete';
/* Réinitialisation réussie */
proc cas;
accessControl.remAllAcsData / caslib='_NAME_TEMP_4', table='ma_table_err';
run;
/* Nettoyage */
proc cas;
table.dropTable / caslib='_NAME_TEMP_4', name='ma_table_err';
caslib.dropCaslib / caslib='_NAME_TEMP_4';
run;
1
CAS casauto;
2
3
/* Création d'une caslib temporaire */
4
caslib _NAME_TEMP_4 cas datasource=(srctype='path') path='/tmp/';
5
6
/* Tentative de réinitialisation sur une table qui n'existe pas */
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.