Publicado el :

Extracción de Grupos y Miembros (Metadatos SAS 9)

Este código también está disponible en: Français
En espera de validación
Attention : Este código requiere privilegios de administrador.
Este programa configura una conexión a un servidor de metadatos SAS© 9 a través de la instrucción OPTIONS, luego utiliza las funciones de interfaz de metadatos (metadata_resolve, metadata_getnobj, metadata_getnasn) para extraer los objetos 'IdentityGroup'. Recorre estos grupos para listar sus atributos y miembros. Aunque técnicamente ejecutable en un entorno SAS© Viya con componentes de compatibilidad, este código es específico de la arquitectura de metadatos SAS© 9 tradicional y no refleja el modelo de seguridad nativo de Viya (que utiliza el servicio Identities/LDAP).
Análisis de datos

Type : EXTERNE


Los datos provienen de un servidor de metadatos SAS 9 consultado dinámicamente a través de funciones del sistema. No se requiere ninguna tabla física como entrada.

1 Bloque de código
OPTIONS
Explicación :
Configuración de los parámetros de conexión al servidor de metadatos SAS 9 (Host, Puerto, Usuario, Contraseña, Repositorio).
¡Copiado!
1options
2 metaserver="meta.demo.sas.com"
3 metaport=8561
4 metauser="sasadm @saspw"
5 metapass="password"
6 metarepository=Foundation
7 metaprotocol=bridge;
2 Bloque de código
DATA STEP Data
Explicación :
Paso Data principal que consulta el servidor de metadatos. Inicializa una consulta para los objetos 'IdentityGroup', itera sobre cada grupo encontrado para extraer su nombre y nombre de visualización, luego itera sobre los miembros asociados ('MemberIdentities') para recuperar sus detalles. Los resultados se estructuran en la tabla de salida 'groups'.
¡Copiado!
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 Bloque de código
PROC REPORT
Explicación :
Generación de un informe simple que lista las columnas extraídas: Nombre del grupo, Nombre de visualización del grupo, Nombre del miembro, Nombre de visualización del miembro.
¡Copiado!
1 
2PROC REPORT
3DATA=groups;
4column group_name group_dn m_name m_dn ;
5RUN;
6 
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
Información de copyright : Author: Greg Wootton Date: 29JUN2017