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).
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é !
data groups;
/* Initialize variables. */
length type id group_uri group_name mgroup_uri
muser_uri m_name $ 50 m_dn group_dn $ 256;
call missing(of _character_);
label group_name = "Group Name"
group_dn = "Group Display Name"
m_name = "Member Name"
m_dn = "Member Display Name"
;
/* Define initial query for groups. */
group_obj="omsobj:IdentityGroup? @PublicType='UserGroup'";
/* Test query for results. */
group_count=metadata_resolve(group_obj,type,id);
put "NOTE: Found " group_count "User Groups";
if group_count > 0 then do n=1 to group_count;
/* If groups are found, get each group's name and display name. */
rc=metadata_getnobj(group_obj,n,group_uri);
rc=metadata_getattr(group_uri,"Name",group_name);
rc=metadata_getattr(group_uri,"DisplayName",group_dn);
/* Test for presence of members associated with the group. */
muser_count=metadata_getnasn(group_uri,"MemberIdentities",1,muser_uri);
if muser_count > 0 then do o=1 to muser_count;
/* If found, extract each associated user's name and display name. */
rc=metadata_getnasn(group_uri,"MemberIdentities",o,muser_uri);
rc=metadata_getattr(muser_uri,"Name",m_name);
rc=metadata_getattr(muser_uri,"DisplayName",m_dn);
output;
call missing (m_name,m_dn);
end;
else do;
put "NOTE: No members of group " group_name group_dn;
output;
end;
end;
else put "ERROR: No groups found";
keep group_name group_dn m_name m_dn ;
put "NOTE: No members of group " group_name group_dn;
39
OUTPUT;
40
END;
41
END;
42
ELSE put "ERROR: No groups found";
43
keep 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.
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
« 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. »
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.