Publié le :

Extraction des Groupes et Membres (Métadonnées SAS 9)

Ce code est également disponible en : Español
En attente de validation
Attention : Ce code nécessite des droits administrateur.
Ce programme configure une connexion vers un serveur de métadonnées SAS© 9 via l'instruction OPTIONS, puis utilise les fonctions d'interface de métadonnées (metadata_resolve, metadata_getnobj, metadata_getnasn) pour extraire les objets 'IdentityGroup'. Il boucle sur ces groupes pour lister leurs attributs et leurs membres. Bien que techniquement exécutable dans un environnement SAS© Viya disposant des composants de compatibilité, ce code est spécifique à l'architecture de métadonnées SAS© 9 traditionnelle et ne reflète pas le modèle de sécurité natif de Viya (qui utilise le service Identities/LDAP).
Analyse des données

Type : EXTERNE


Les données proviennent d'un serveur de métadonnées SAS 9 interrogé dynamiquement via des fonctions système. Aucune table physique n'est requise en entrée.

1 Bloc de code
OPTIONS
Explication :
Configuration des paramètres de connexion au serveur de métadonnées SAS 9 (Hôte, Port, Utilisateur, Mot de passe, Référentiel).
Copié !
1options
2 metaserver="meta.demo.sas.com"
3 metaport=8561
4 metauser="sasadm @saspw"
5 metapass="password"
6 metarepository=Foundation
7 metaprotocol=bridge;
2 Bloc de code
DATA STEP Data
Explication :
Étape Data principale qui interroge le serveur de métadonnées. Elle initialise une requête pour les objets 'IdentityGroup', itère sur chaque groupe trouvé pour extraire son nom et nom d'affichage, puis itère sur les membres associés ('MemberIdentities') pour récupérer leurs détails. Les résultats sont structurés dans la table de sortie 'groups'.
Copié !
1DATA groups;
2/* Initialize variables. */
3LENGTH type id group_uri group_name mgroup_uri
4 muser_uri m_name $ 50 m_dn group_dn $ 256;
5call missing(of _character_);
6label group_name = "Group Name"
7 group_dn = "Group Display Name"
8 m_name = "Member Name"
9 m_dn = "Member Display Name"
10 ;
11 
12 
13/* Define initial query for groups. */
14group_obj="omsobj:IdentityGroup? @PublicType='UserGroup'";
15 
16/* Test query for results. */
17group_count=metadata_resolve(group_obj,type,id);
18put "NOTE: Found " group_count "User Groups";
19IF group_count > 0 THEN DO n=1 to group_count;
20 
21/* If groups are found, get each group's name and display name. */
22 rc=metadata_getnobj(group_obj,n,group_uri);
23 rc=metadata_getattr(group_uri,"Name",group_name);
24 rc=metadata_getattr(group_uri,"DisplayName",group_dn);
25 
26/* Test for presence of members associated with the group. */
27 muser_count=metadata_getnasn(group_uri,"MemberIdentities",1,muser_uri);
28 IF muser_count > 0 THEN DO o=1 to muser_count;
29 
30/* If found, extract each associated user's name and display name. */
31 rc=metadata_getnasn(group_uri,"MemberIdentities",o,muser_uri);
32 rc=metadata_getattr(muser_uri,"Name",m_name);
33 rc=metadata_getattr(muser_uri,"DisplayName",m_dn);
34 OUTPUT;
35 call missing (m_name,m_dn);
36 END;
37 ELSE DO;
38 put "NOTE: No members of group " group_name group_dn;
39 OUTPUT;
40 END;
41END;
42ELSE put "ERROR: No groups found";
43keep group_name group_dn m_name m_dn ;
3 Bloc de code
PROC REPORT
Explication :
Génération d'un rapport simple listant les colonnes extraites : Nom du groupe, Nom d'affichage du groupe, Nom du membre, Nom d'affichage du membre.
Copié !
1 
2PROC REPORT
3DATA=groups;
4column group_name group_dn m_name m_dn ;
5RUN;
6 
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 : Author: Greg Wootton Date: 29JUN2017


Banner
Le Conseil de l'Expert
L'équipe WeAreCAS
L'équipe officielle du site.
« Attention, ce code est un héritage pur de SAS 9. Dans un environnement SAS Viya, la sécurité est déléguée à un micro-service d'identités souvent synchronisé avec un LDAP ou Azure AD. Bien que la compatibilité existe, l'audit natif sous Viya se fera via des appels API REST ou la CLI sas-viya, car les objets IdentityGroup ne sont plus stockés dans un serveur de métadonnées traditionnel. »