accessControl

isInRole

##admin ##admin_required ##set_accesscontrol ##security
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.

Syntaxe Officielle
proc cas;
accessControl.isInRole <result=results> <status=rc> /
adminRole="ACTION" | "DATA" | "SUPERUSER";
run;

Paramètres Clés

Nom du paramètre Description
adminRole Spécifie le rôle d'administrateur à vérifier. Les valeurs possibles sont 'ACTION' (fournit un accès sans restriction aux ensembles d'actions et aux actions), 'DATA' (accès total sans vérification des permissions aux données, tables, colonnes et possibilité d'ajouter des caslibs) ou 'SUPERUSER' (le boss final, combine ACTION, DATA et ajoute la capacité de gérer les rôles et les chemins). Si ce paramètre est omis, la valeur par défaut est 'SUPERUSER' .

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 */
2cas mySession sessopts=(metrics=true);
3LIBNAME 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é.

1PROC CAS;
2 ACCESSCONTROL.isInRole RESULT=r STATUS=rc;
3 PRINT "A-t-on le role SUPERUSER ? ";
4 PRINT r;
5RUN;
Résultat Attendu :
Le résultat affiché dans le journal sera un dictionnaire contenant la clé 'isInRole' avec une valeur booléenne (1/true ou 0/false).
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.

1PROC 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;
15RUN;
Résultat Attendu :
Le journal listera les trois rôles testés avec un message SUCCÈS ou ÉCHEC selon que l'utilisateur exécutant le code dispose ou non des droits d'administration sur l'environnement Viya.