Cette action nécessite des droits élevés.
Code élévation : proc cas; accessControl.assumeRole / adminRole="superuser"; run;
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.
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.
| 1 | |
| 2 | PROC CAS; |
| 3 | caslib SalesData path='/tmp/sales' dataSource={srcType='path'}; |
| 4 | loadTable / caslib='casuser' path='cars.sashdat' casOut={caslib='SalesData', name='cars', promote=true}; |
| 5 | |
| 6 | RUN; |
| 7 | |
| 8 | QUIT; |
| 9 |
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`.
| 1 | |
| 2 | PROC CAS; |
| 3 | ACCESSCONTROL.assumeRole / adminRole='superuser'; |
| 4 | |
| 5 | RUN; |
| 6 | ACCESSCONTROL.startTransaction; |
| 7 | |
| 8 | RUN; |
| 9 | ACCESSCONTROL.updSomeAcsTable / caslib='SalesData' TABLE='cars' principal='Public' perm='Select' grant='add'; |
| 10 | |
| 11 | RUN; |
| 12 | ACCESSCONTROL.commitTransaction; |
| 13 | |
| 14 | RUN; |
| 15 | |
| 16 | QUIT; |
| 17 |
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.
| 1 | |
| 2 | PROC CAS; |
| 3 | ACCESSCONTROL.assumeRole / adminRole='superuser'; |
| 4 | |
| 5 | RUN; |
| 6 | ACCESSCONTROL.startTransaction; |
| 7 | |
| 8 | RUN; |
| 9 | ACCESSCONTROL.repAllAcsCaslib / caslib='SalesData' acs={{principal='testuser', perm='ReadInfo', grant='add'}}; |
| 10 | |
| 11 | RUN; |
| 12 | ACCESSCONTROL.commitTransaction; |
| 13 | |
| 14 | RUN; |
| 15 | ACCESSCONTROL.listAcsCaslib / caslib='SalesData'; |
| 16 | |
| 17 | RUN; |
| 18 | |
| 19 | QUIT; |
| 20 |
Le département des Ressources Humaines souhaite restreindre l'accès à la table des salaires. La modification doit être atomique : révoquer l'accès public et accorder l'accès aux...
Un administrateur teste une nouvelle politique de sécurité. Il fait une erreur, l'annule (Rollback), puis tente de valider une transaction sans l'avoir démarrée (Test Cas Limite...
Lors d'une réorganisation d'entreprise, les droits d'accès de trois départements (Marketing, Finance, Ventes) doivent être réinitialisés. L'objectif est de valider la performanc...