accessControl

commitTransaction

Description

Valide de manière permanente toutes les modifications effectuées au sein d'une transaction de contrôle d'accès. Cette action enregistre les changements sur le serveur, libère tous les objets qui avaient été réservés (check-out) et met fin à la transaction. C'est l'étape finale et irréversible pour appliquer un ensemble de modifications de sécurité de manière atomique.

proc cas; accessControl.commitTransaction / result=r status=s; run;
Préparation des Données Voir la fiche de ce code dataprep
Création d'une caslib et chargement de données

Ce bloc de code crée une nouvelle caslib nommée 'SalesData' et y charge la table 'CARS' pour servir de base aux exemples de contrôle d'accès. La table est promue pour être accessible à toutes les sessions.

Copié !
1 
2PROC CAS;
3caslib SalesData path='/tmp/sales' dataSource={srcType='path'};
4loadTable / caslib='casuser' path='cars.sashdat' casOut={caslib='SalesData', name='cars', promote=true};
5 
6RUN;
7 
8QUIT;
9 

Exemples

Cet exemple montre le cycle complet : démarrer une transaction, ajouter un contrôle d'accès simple (accorder la permission 'Select' au groupe 'Public' sur la table 'CARS'), puis valider la transaction avec `commitTransaction`.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1 
2PROC CAS;
3ACCESSCONTROL.assumeRole / adminRole='superuser';
4 
5RUN;
6ACCESSCONTROL.startTransaction;
7 
8RUN;
9ACCESSCONTROL.updSomeAcsTable / caslib='SalesData' TABLE='cars' principal='Public' perm='Select' grant='add';
10 
11RUN;
12ACCESSCONTROL.commitTransaction;
13 
14RUN;
15 
16QUIT;
17 
Résultat :
La transaction est validée avec succès. Le groupe 'Public' a désormais la permission 'Select' sur la table 'SalesData.CARS'. Un message de succès est affiché dans le journal SAS.

Cet exemple plus avancé illustre comment remplacer intégralement tous les contrôles d'accès sur une caslib, puis valider ces changements. Après avoir assumé un rôle d'administrateur, une transaction est démarrée. `repAllAcsCaslib` est utilisé pour définir un nouvel ensemble de règles (donner le droit de lecture à 'testuser'). Enfin, `commitTransaction` rend ces changements permanents. L'action `listAcsCaslib` est utilisée à la fin pour vérifier que les nouveaux droits sont bien en place.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1 
2PROC CAS;
3ACCESSCONTROL.assumeRole / adminRole='superuser';
4 
5RUN;
6ACCESSCONTROL.startTransaction;
7 
8RUN;
9ACCESSCONTROL.repAllAcsCaslib / caslib='SalesData' acs={{principal='testuser', perm='ReadInfo', grant='add'}};
10 
11RUN;
12ACCESSCONTROL.commitTransaction;
13 
14RUN;
15ACCESSCONTROL.listAcsCaslib / caslib='SalesData';
16 
17RUN;
18 
19QUIT;
20 
Résultat :
La transaction est validée. Les anciens contrôles d'accès sur la caslib 'SalesData' sont supprimés et remplacés par la nouvelle règle. La sortie de `listAcsCaslib` affichera uniquement la permission 'ReadInfo' pour 'testuser' sur cette caslib.

FAQ

Quel est l'objectif principal de l'action `commitTransaction` dans SAS Viya ?
À quel jeu d'actions (action set) appartient `commitTransaction` ?
Que se passe-t-il si j'utilise `commitTransaction` sans avoir démarré de transaction au préalable ?
Quelle est la différence entre `commitTransaction` et `rollbackTransaction` ?
Qu'advient-il des objets extraits (checked-out) après un `commitTransaction` ?