SAS Viya : Automatisez l'extraction des groupes d'utilisateurs via l'API REST

Niveau de difficulté
Débutant
Publié le :
Michael

Le Conseil de l'Expert

Michael
Responsable de l'infrastructure Viya.

Cette macro est un parfait exemple de la modernité de SAS Viya. On ne se contente plus de gérer les utilisateurs via des interfaces graphiques ; on utilise la puissance du langage SAS pour interroger directement le cœur du système via son API REST.

Attention : Ce code nécessite des droits administrateur.
Cette macro, nommée %mv_getgroups, permet de récupérer la liste des groupes d'utilisateurs configurés dans SAS© Viya. Elle utilise l'API REST de SAS© Viya pour interroger le point de terminaison des identités (`/identities/groups`). Le script gère l'authentification via OAuth bearer (en fonction du type de grant). Il utilise des procédures SAS© standard comme PROC HTTP pour faire la requête, et LIBNAME JSON pour traiter la réponse. Les informations récupérées sont ensuite stockées dans un dataset SAS© spécifié par l'utilisateur.
Analyse des données

Type : EXTERNE


Les données sont récupérées via une requête HTTP GET vers l'API REST de SAS Viya (/identities/groups). Le résultat est ensuite traité comme un fichier JSON.

1 Bloc de code
MACRO
Explication :
Déclare la macro et initialise les variables locales pour l'authentification et la configuration de base de l'API Viya.
Copié !
1%macro mv_getgroups(
2 access_token_var=ACCESS_TOKEN,
3 grant_type=sas_services,
4 outds=work.viyagroups
5 );
6%local oauth_bearer base_uri fname1 libref1;
7%IF &grant_type=detect %THEN %DO;
8 %IF %symexist(&access_token_var) %THEN %let grant_type=authorization_code;
9 %ELSE %let grant_type=sas_services;
10%END;
11%IF &grant_type=sas_services %THEN %DO;
12 %let oauth_bearer=oauth_bearer=sas_services;
13 %let &access_token_var=;
14%END;
15 
16%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password
17 and &grant_type ne sas_services
18 )
19 ,mac=&sysmacroname
20 ,msg=%str(Invalid value for grant_type: &grant_type)
21)
22options noquotelenmax;
23/* location of rest apis */
24%let base_uri=%mf_getplatform(VIYARESTAPI);
25 
2 Bloc de code
MACRO / PROC HTTP
Explication :
Obtient des références de fichier et de librairie uniques, effectue la requête HTTP GET vers l'API Viya pour récupérer les groupes, et vérifie le code de retour HTTP. Un libname JSON est ensuite créé pour lire la réponse.
Copié !
1%let fname1=%mf_getuniquefileref();
2%let libref1=%mf_getuniquelibref();
3 
4PROC HTTP method='GET' out=&fname1 &oauth_bearer
5 url="&base_uri/identities/groups?limit=10000";
6 headers
7 %IF &grant_type=authorization_code %THEN %DO;
8 "Authorization"="Bearer &&&access_token_var"
9 %END;
10 "Accept"="application/json";
11RUN;
12/*data _null_;infile &fname1;input;putlog _infile_;run;*/
13%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200)
14 ,mac=&sysmacroname
15 ,msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)
16)
17LIBNAME &libref1 JSON fileref=&fname1;
3 Bloc de code
DATA STEP Data
Explication :
Crée le dataset de sortie (&outds) en sélectionnant les éléments de la librairie JSON. Ensuite, libère les références de fichier et de librairie.
Copié !
1DATA &outds;
2 SET &libref1..items;
3RUN;
4 
5 
6/* clear refs */
7filename &fname1 clear;
8LIBNAME &libref1 clear;
4 Bloc de code
MACRO
Explication :
Termine la définition de la macro %mv_getgroups.
Copié !
1%mend mv_getgroups;
L'Astuce Pro
our optimiser la récupération de vos groupes via l'API REST des identités SAS Viya, utilisez systématiquement le moteur LIBNAME JSON sur le fichier de sortie de la PROC HTTP, car il transforme automatiquement la structure hiérarchique complexe du JSON renvoyé par le service Web en une table SAS plate nommée ITEMS, rendant vos données de sécurité immédiatement exploitables par des procédures classiques comme PROC PRINT ou PROC SQL.
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Informations de Copyright : Source potentielle : https://github.com/sasjs/core


Documentation liée

Aucune documentation spécifique pour cette catégorie.