Determinación del usuario de sesión

Este código también está disponible en: Deutsch English Français
Nivel de dificultad
Principiante
Publicado el :
Attention : Este código requiere privilegios de administrador.
Esta macro analiza varias variables de sistema y macro-variables específicas del entorno SAS© (tales como `_sasjs_username`, `SYS_COMPUTE_SESSION_OWNER`, `_metaperson` y `sysuserid`) para identificar al usuario actual. Gestiona las especificidades de las sesiones de Viya Compute, Stored Process (donde `_metaperson` se utiliza para los usuarios de metadatos) y Workspace Server. También incluye una lógica para limpiar el nombre de usuario eliminando las extensiones de dominio de autenticación si están presentes. El código referenciado 'DYNAMIC_ASSIGNMENT_OF_AUTHDOMAIN.sas©' ilustra una gestión administrativa de los dominios de autenticación basada en el ID de usuario.
Análisis de datos

Type : CREACIÓN_INTERNA


Los datos son exclusivamente variables de sistema y macro-variables generadas por el entorno SAS, que reflejan el usuario conectado o el contexto de la sesión. No hay lectura de archivos externos o datasets SAS preexistentes.

1 Bloque de código
MACRO mf_getuser
Explicación :
Este bloque define la macro `mf_getuser` que determina el identificador del usuario activo. Verifica la existencia de varias macro-variables en un orden específico: `_sasjs_username`, `SYS_COMPUTE_SESSION_OWNER`, `_metaperson` y `sysuserid`. Según el entorno (SAS Viya Compute, Stored Process o Workspace), una de estas variables se utilizará para asignar el ID de usuario. Se incluye una lógica específica para procesar `_metaperson` eliminando las extensiones de dominio de autenticación y gestionando los nombres de usuario que contienen comas. El valor final es devuelto por la macro.
¡Copiado!
1%macro mf_getuser(
2)/*/STORE SOURCE*/;
3 %local user;
4 
5 %IF %symexist(_sasjs_username) %THEN %let user=&_sasjs_username;
6 %ELSE %IF %symexist(SYS_COMPUTE_SESSION_OWNER) %THEN %DO;
7 %let user=&SYS_COMPUTE_SESSION_OWNER;
8 %END;
9 %ELSE %IF %symexist(_metaperson) %THEN %DO;
10 %IF %LENGTH(&_metaperson)=0 %THEN %let user=&sysuserid;
11 /* sometimes SAS will add @code_sas/DYNAMIC_ASSIGNMENT_OF_AUTHDOMAIN.sas extension - remove for consistency */
12 /* but be sure to quote in case of usernames with commas */
13 %ELSE %let user=%unquote(%scan(%quote(&_metaperson),1, @));
14 %END;
15 %ELSE %let user=&sysuserid;
16 
17 %quote(&user)
18 
19%mend mf_getuser;
2 Bloque de código
MACRO setenv (referenciada)
Explicación :
Este bloque, proveniente del archivo referenciado `DYNAMIC_ASSIGNMENT_OF_AUTHDOMAIN.sas`, define la macro `setenv`. Esta macro es un ejemplo de script administrativo que utiliza `sysuserid` para determinar y definir un dominio de autenticación (`access_auth`), lo que la hace relevante para la gestión de accesos y la seguridad del sistema. Demuestra cómo `sysuserid` puede usarse para adaptar los parámetros del entorno en función del tipo de usuario.
¡Copiado!
1/* DYNAMIC_ASSIGNMENT_OF_AUTHDOMAIN.sas */
2%put &sysuserid.;
3%macro setenv;
4%global access_auth;
5%IF %substr(&sysuserid.,1,3) = app %THEN %DO;
6 %let access_auth = DefaultAuth;
7%END;
8%ELSE %DO;
9 %let access_auth = LDAP_Auth;
10%END;
11%mend setenv;
12%setenv;
13 
14%put _all_;
3 Bloque de código
MACRO _version (referenciada)
Explicación :
Esta macro `_version`, referenciada por el encabezado, está diseñada para verificar si la versión actual de SAS es igual o superior a una versión especificada. Compara los números de versión utilizando las macro-funciones `%scan` y `%eval`. Aunque no es llamada directamente por la macro principal a analizar, su presencia en las referencias destaca la importancia de la compatibilidad de versiones en el entorno SAS.
¡Copiado!
1%put NOTE: You have called the macro _VERSION, 2006-02-15.;
2%put NOTE: Copyright (c) 2001-2006 Rodney Sparapani;
3%put;
4 
5/*
6Author: Rodney Sparapani <rsparapa @mcw.edu>
7Created: 2001-00-00
8 
9This file is free software; you can redistribute it and/or modify
10it under the terms of the GNU General Public License as published by
11the Free Software Foundation; either version 2, or (at your option)
12any later version.
13 
14This file is distributed in the hope that it will be useful,
15but WITHOUT ANY WARRANTY; without even the implied warranty of
16MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17GNU General Public License for more details.
18 
19You should have received a copy of the GNU General Public License
20along with this file; see the file COPYING. If not, write to
21the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
22*/
23 
24/* _VERSION Documentation
25 
26 Returns a one (true) if the current version of SAS is equal to or
27 greater than the version requested; zero (false) otherwise.
28
29 POSITIONAL Parameters
30
31 ARG1 version requested
32
33 Specific OPTIONAL Parameters
34
35 NOTES= default is to not display the returned value in a NOTE,
36 if set to something, then do display
37
38 VERSION=ARG1 alias
39*/
40 
41%macro _version(arg1, notes=, version=&arg1);
42 
43%local RESULT;
44%let RESULT=%eval(%scan(&sysver, 1, .)*100+0%scan(&sysver, 2, .)>=%scan(&version, 1, .)*100+0%scan(&version, 2, .));
45%IF %LENGTH(¬es) %THEN %put NOTE: _VERSION is returning the value &RESULT;
46 
47&RESULT
48 
49%mend _version;
50 
51%*VALIDATION TEST STREAM;
4 Bloque de código
MACRO mm_getdetails (referenciada)
Explicación :
Esta macro `mm_getdetails` (referenciada por el encabezado HELP START) es una herramienta de administración que extrae atributos y asociaciones de metadatos para un URI específico. Utiliza funciones de metadatos de SAS como `metadata_getnasl`, `metadata_getnasn` y `metadata_getattr` para recorrer y recopilar información sobre los objetos de metadatos, guardándolos en conjuntos de datos de salida. Su función está principalmente relacionada con la gestión y auditoría de recursos dentro de un entorno SAS.
¡Copiado!
1/*** HELP START ***//**
2 @code_sas_json_prod_multi/mf_getuniquefileref_de.json mm_getdetails.sas
3 @code_sas/macro_with_brief_tag.sas extracts metadata attributes and associations for a particular uri
4 @code_sas_json_prod/print_macro_parameters.json [in] uri the metadata object for which to return
5 attributes / associations
6 @code_sas_json_prod/print_macro_parameters.json [in] sortoptions= Enables sorting of the output datasets, for example,
7 `SORTSEQ=LINGUISTIC`
8 @code_sas_json_prod/print_macro_parameters.json [out] outattrs= (work.attributes)
9 The dataset to create that contains the list of attributes
10 @code_sas_json_prod/print_macro_parameters.json [out] outassocs= (work.associations)
11 The dataset to contain the list of associations
12 
13 <h4> Related Files </h4>
14 @code_sas_json_prod_multi/mf_getuniquelibref.test_de.json mm_getobjects.sas
15 @code_sas_json_prod_multi/mf_getuniquelibref.test_de.json mm_gettypes.sas
16 
17**//*** HELP END ***/
18 
19%macro mm_getdetails(uri
20 ,outattrs=work.attributes
21 ,outassocs=work.associations
22 ,sortoptions=
23)/*/STORE SOURCE*/;
24 
25DATA &outassocs;
26 keep assoc assocuri name;
27 LENGTH assoc assocuri name $256;
28 call missing(of _all_);
29 rc1=1;n1=1;
30 DO while(rc1>0);
31 /* Walk through all possible associations of this object. */
32 rc1=metadata_getnasl("&uri",n1,assoc);
33 rc2=1;n2=1;
34 DO while(rc2>0);
35 /* Walk through all the associations on this machine object. */
36 rc2=metadata_getnasn("&uri",trim(assoc),n2,assocuri);
37 IF (rc2>0) THEN DO;
38 rc3=metadata_getattr(assocuri,"Name",name);
39 OUTPUT;
40 END;
41 call missing(name,assocuri);
42 n2+1;
43 END;
44 n1+1;
45 END;
46RUN;
47PROC SORT &sortoptions;
48 BY assoc name;
49RUN;
50 
51DATA &outattrs;
52 keep type name value;
53 LENGTH type $4 name $256 value $32767;
54 rc1=1;n1=1;type='Prop';name='';value='';
55 DO while(rc1>0);
56 rc1=metadata_getnprp("&uri",n1,name,value);
57 IF rc1>0 THEN OUTPUT;
58 n1+1;
59 END;
60 rc1=1;n1=1;type='Attr';
61 DO while(rc1>0);
62 rc1=metadata_getnatr("&uri",n1,name,value);
63 IF rc1>0 THEN OUTPUT;
64 n1+1;
65 END;
66RUN;
67PROC SORT &sortoptions;
68 BY type name;
69RUN;
70 
71%mend mm_getdetails;
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 : Allan Bowe (mencionado en el encabezado HELP START). Además, Rodney Sparapani (c) 2001-2006 (para _version.sas) y HMS Analytical Software GmbH (para macro_without_brief_tag.sas) son fuentes de código referenciadas que pueden haber influido en el desarrollo o la lógica de las macros relacionadas con la gestión de sesiones de usuario.


Documentación relacionada

Aucune documentation spécifique pour cette catégorie.