isInRole
Privilèges administrateur requis
Cette action nécessite des droits élevés sur l'environnement SAS Viya.
Code d'élévation : proc cas; accessControl.assumeRole / adminRole="superuser"; run;
Description
L'action `isInRole` permet de vérifier si votre session a actuellement assumé un rôle d'administrateur spécifique sur la plateforme SAS Viya. C'est un peu comme demander au vigile virtuel de SAS si on a bien le badge VIP autour du cou ! Cette vérification est cruciale dans vos scripts automatisés avant de lancer des opérations sensibles, afin de s'assurer que l'élévation de privilèges a bien été prise en compte.
Paramètres Clés
Préparation des données
Initialisation d'une session CAS
L'action isInRole ne nécessite aucune donnée en entrée. Il suffit d'initialiser une session CAS classique pour interroger nos privilèges.
| 1 | /* Demarrage de la session CAS */ |
| 2 | cas mySession sessopts=(metrics=true); |
| 3 | LIBNAME casuser cas caslib="casuser"; |
Exemples d'utilisation
Vérifier le statut Superuser (comportement par défaut)
Exécution basique de l'action sans paramètre. Par défaut, elle interroge le système pour savoir si le rôle 'SUPERUSER' est assumé.
| 1 | PROC CAS; |
| 2 | ACCESSCONTROL.isInRole RESULT=r STATUS=rc; |
| 3 | PRINT "A-t-on le role SUPERUSER ? "; |
| 4 | PRINT r; |
| 5 | RUN; |
Résultat Attendu :
Vérification conditionnelle des trois rôles d'administration
Ce script illustre les bonnes pratiques en essayant d'assumer le rôle Superuser, puis en vérifiant explicitement si l'élévation a réussi pour les rôles 'DATA', 'ACTION' et 'SUPERUSER'. Une petite boucle bien pratique pour s'assurer que toutes les portes nous sont ouvertes.
| 1 | PROC CAS; |
| 2 | /* Tentative d'elevation des privileges */ |
| 3 | ACCESSCONTROL.assumeRole / adminRole="superuser"; |
| 4 | /* Liste des roles a tester */ |
| 5 | roles = {"DATA", "ACTION", "SUPERUSER"}; |
| 6 | PRINT "--- Resultats de l'audit des badges --- "; |
| 7 | do roleName over roles; |
| 8 | accessControl.isInRole result=res status=rc / adminRole=roleName; |
| 9 | if res.isInRole == TRUE then |
| 10 | print "SUCCES : Le role " || roleName || " est actif."; |
| 11 | else |
| 12 | print "ECHEC : Vous n'avez pas le role " || roleName || "."; |
| 13 | END; |
| 14 | END; |
| 15 | RUN; |