Le jeu de données `work.users` est créé et peuplé dynamiquement à partir des informations extraites du serveur de métadonnées SAS via les fonctions `metadata_getnobj` et `metadata_getattr`. Il n'y a pas de source de données externe au script (fichier, base de données) ou de jeu de données SASHELP directement utilisé comme entrée.
1 Bloc de code
OPTIONS
Explication : Ce bloc configure les options de connexion au serveur de métadonnées SAS. Il spécifie l'adresse du serveur (`metaserver`), le port (`metaport`), les identifiants de l'utilisateur (`metauser`, `metapass`), le référentiel de métadonnées (`metarepository`) et le protocole de communication (`metaprotocol`). Ces informations sont essentielles pour établir la connexion et interroger les métadonnées.
Explication : Ce bloc `DATA STEP` est responsable de la création du jeu de données `work.users` et de son peuplement avec les identifiants des utilisateurs. Il déclare et initialise les variables nécessaires. Il utilise `metadata_getnobj` pour trouver le domaine d'authentification 'DefaultAuth' et son URI, puis `metadata_getattr` pour récupérer son identifiant. Ensuite, une boucle `do while` parcourt tous les objets de connexion (Login) associés à ce domaine. Pour chaque Login, l'identifiant utilisateur (`UserID`) est extrait via `metadata_getattr` et ajouté au jeu de données `work.users`. Seule la variable `user_id` est conservée dans le jeu de données final.
Copié !
data work.users; /* Create work.users library to house data. */
/* declare variables */
length
ad_uri $ 256
ad_id $ 256
login_uri $ 256
user_id $ 256;
/* initialize variables. */
call missing(ad_uri,ad_id,login_uri,user_id);
keep user_id; /* only keep the user ids in the table. */
n=1;
/* Get the URI for the DefaultAuth Authentication Domain. */
adrc=metadata_getnobj("omsobj:AuthenticationDomain? @name = 'DefaultAuth'",1,ad_uri);
rc=metadata_getattr(ad_uri,"Id",ad_id);
/* Get number of login objects that have the DefaultAuth authentication */
/* domain associated with them, as well as the URI of the first login. */
loginrc=metadata_getnobj("omsobj:Login?Login[Domain/AuthenticationDomain[ @Id='"||ad_id||"']",n,login_uri);
do while(loginrc>0);
/* extract the user ID from login */
rc=metadata_getattr(login_uri,"UserID",user_id);
output;
n+1;
/* Get the URI of the next login. */
loginrc=metadata_getnobj("omsobj:Login?Login[Domain/AuthenticationDomain[ @Id='"||ad_id||"']",n,login_uri);
end;
run;
1
DATA work.users; /* Create work.users library to house data. */
2
3
/* declare variables */
4
5
LENGTH
6
ad_uri $ 256
7
ad_id $ 256
8
login_uri $ 256
9
user_id $ 256;
10
11
/* initialize variables. */
12
13
call missing(ad_uri,ad_id,login_uri,user_id);
14
keep user_id; /* only keep the user ids in the table. */
15
16
n=1;
17
/* Get the URI for the DefaultAuth Authentication Domain. */
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: 08FEB2017
« L'extraction des identifiants de connexion associés à un domaine spécifique est une tâche fondamentale pour l'administration et la sécurité d'une plateforme SAS 9.4. Ce script illustre parfaitement la puissance de la manipulation directe des métadonnées via l'étape DATA. En ciblant le domaine 'DefaultAuth', vous accédez au référentiel central des comptes utilisateurs qui n'utilisent pas de méthodes d'authentification externes complexes (comme LDAP ou Active Directory) pour leurs connexions internes. »
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.