Publié le :

Copie de membres entre groupes de métadonnées

Ce code est également disponible en : Deutsch Español
Attention : Ce code nécessite des droits administrateur.
Le script configure une connexion à un serveur de métadonnées SAS© (legacy SAS© 9). Il vérifie l'existence des groupes source et cible à l'aide de la fonction `metadata_resolve`. Ensuite, il récupère le nombre de membres du groupe source et boucle pour ajouter chaque membre au groupe de destination via `metadata_setassn`. Ce code est spécifique à la gestion des métadonnées SAS© 9 et ne s'applique pas directement au provider d'identité natif de SAS© Viya.
Analyse des données

Type : EXTERNE


Les données sont lues et écrites directement sur le serveur de métadonnées SAS (OMR) configuré dans les options.

1 Bloc de code
OPTIONS
Explication :
Configuration des paramètres de connexion au serveur de métadonnées SAS (hôte, port, identifiants, protocole).
Copié !
1options
2 metaserver="meta.demo.sas.com"
3 metaport=8561
4 metauser="sasadm @saspw"
5 metapass="password"
6 metaprotocol=bridge
7 metarepository=Foundation;
2 Bloc de code
MACRO VARIABLES
Explication :
Définition des noms des groupes source et destination via des macro-variables.
Copié !
1%let source_group_name='
2source group';
3%let dest_group_name='destination group';
4 
3 Bloc de code
DATA STEP
Explication :
Étape Data _null_ qui contient la logique métier : résolution des URIs des groupes, vérification de leur existence, comptage des membres, et boucle d'ajout des membres du groupe source vers le groupe cible via les fonctions `metadata_`.
Copié !
1DATA _null_;
2/* Initialize variables. */
3LENGTH type1 type2 id1 id2 src_uri dest_uri mem_uri mem_name $ 50;
4call missing (of _character_);
5 
6/* Define query. */
7src_obj="omsobj:IdentityGroup? @Name=&source_group_name";
8dest_obj="omsobj:IdentityGroup? @Name=&dest_group_name";
9 
10/* Test for the existence of the source group. */
11rc1=metadata_resolve(src_obj,type1,id1);
12src_uri=cats(type1,'\',id1);
13if rc1 < 1 then do; /* If unable to locate, notify and stop. */
14 put "ERROR: SOURCE group &source_group_name not found in Metadata.";
15 stop;
16end;
17 
18/* Test for the existence of the destination group. */
19rc2=metadata_resolve(dest_obj,type2,id2);
20dest_uri=cats(type2,'\',id2);
21 
22if rc2 < 1 then do; /* If unable to locate, notify and stop. */
23 put "ERROR: Destination group &dest_group_name not found in Metadata.";
24 stop;
25end;
26 
27/* Count the number of members in the source group. */
28mem_count=metadata_getnasn(src_uri,"MemberIdentities",1,mem_uri);
29put "NOTE: SOURCE group &source_group_name has " mem_count "members.";
30 
31/* For each member in the source group, */
32/* add the member to the destination group. */
33 
34do n=1 to mem_count;
35 rc=metadata_getnasn(src_uri,"MemberIdentities",n,mem_uri);
36 rc=metadata_getattr(mem_uri,"Name",mem_name);
37 put "NOTE: Adding " mem_name "to destination group &dest_group_name";
38 rc=metadata_setassn(dest_uri,"MemberIdentities","APPEND",mem_uri);
39 put mem_uri;
40END;
41RUN;
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: 29NOV2017


Banner
Le Conseil de l'Expert
Expert
Simon
Expert SAS et fondateur.
« L'automatisation de la gestion des droits sous SAS 9.4 repose sur une compréhension fine de l'architecture OMS (Open Metadata Architecture). L'utilisation combinée des fonctions metadata_resolve et metadata_setassn permet de manipuler les relations d'objets sans passer par l'interface graphique de la Management Console. La clé ici est la gestion des associations : en utilisant l'option "APPEND" dans la fonction metadata_setassn, vous garantissez que les membres du groupe source sont ajoutés au groupe cible sans écraser les utilisateurs déjà présents.

Attention toutefois : ce script manipule directement le référentiel de sécurité. Assurez-vous de toujours valider l'existence des URI avant toute itération pour éviter de corrompre les associations d'identités ou de générer des erreurs d'exécution bloquantes. »