Publié le :
Administration CREATION_INTERNE

Création de Rôle via Fonctions de Métadonnées SAS 9

Attention : Ce code nécessite des droits administrateur.
Ce programme utilise l'étape DATA et les fonctions d'interface de métadonnées (metadata_newobj, metadata_setattr, metadata_setassn) pour créer programmatiquement un objet de sécurité. Il crée un rôle, définit ses attributs (nom, description), lui associe la capacité 'Server Manager' et l'ajoute au groupe 'group 1'. Attention : Ce code repose spécifiquement sur le serveur de métadonnées SAS© 9 et n'est pas compatible avec l'architecture de gestion des identités de SAS© Viya 4.
Analyse des données

Type : CREATION_INTERNE


Le script ne charge pas de données externes mais interagit avec le référentiel de métadonnées système.

1 Bloc de code
DATA STEP
Explication :
Étape DATA _NULL_ exécutant des fonctions système pour manipuler les métadonnées. Elle initialise les variables d'URI, crée un nouvel objet 'IdentityGroup', définit ses propriétés comme étant un 'Role', recherche l'URI de la capacité 'Server Manager' et associe cette capacité ainsi que le groupe 'group1' au nouveau rôle créé.
Copié !
1DATA _null_;
2 /**** Initialize Variables ****/
3 LENGTH uri $ 38 cap_uri $ 43;
4 call missing (of _character_);
5
6 /**** Create the object. ****/
7 rc=metadata_newobj("IdentityGroup",uri,"New Role Name");
8
9 /* Add some required attributes. */
10 rc=metadata_setattr(uri,"PublicType","Role");
11 rc=metadata_setattr(uri,"GroupType","ROLE");
12 rc=metadata_setattr(uri,"UsageVersion","1000000.0");
13 rc=metadata_setattr(uri,"IsHidden","0");
14
15 /* Add some optional attributes. */
16 rc=metadata_setattr(uri,"Desc","This is the description of the new role");
17 rc=metadata_setattr(uri,"DisplayName","This is the display name of the new role");
18
19 /**** Add a capability. ****/
20
21 /* Define the search for the access control entry for the capability */
22 cap_obj="omsobj:AccessControlEntry?AccessControlEntry[Objects/ApplicationAction[ @Name='Server Manager']]";
23
24 /* Pull it's URI into the variable cap_uri */
25 rc=metadata_getnobj(cap_obj,1,cap_uri);
26
27 /* Add the capability association to the role. */
28 rc=metadata_setassn(uri,"AccessControlEntries","APPEND",cap_uri);
29
30 /**** Add the Role to a Group ****/
31 rc=metadata_setassn(uri,"MemberIdentities","APPEND","omsobj:IdentityGroup? @Name='group1'");
32RUN;
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 : Copyright © 2023, SAS Institute Inc., Cary, NC, USA. All Rights Reserved. SPDX-License-Identifier: Apache-2.0


Banner
Le Conseil de l'Expert
Expert
Simon
Expert SAS et fondateur.
« L'utilisation des fonctions METADATA_NEWOBJ et METADATA_SETASSN représente le niveau le plus avancé de l'administration SAS 9. Cette approche programmatique permet d'industrialiser la création de modèles de sécurité complexes, garantissant une reproductibilité parfaite que ne permet pas la manipulation manuelle dans la console de gestion (SMC).

Recommandations et points de vigilance
La précision du typage : Notez l'importance cruciale de définir PublicType="Role" et GroupType="ROLE". Dans le modèle de données SAS, un Rôle est techniquement un objet IdentityGroup. C'est la valeur de ces attributs qui détermine comment l'interface utilisateur traitera l'objet (icône, droits d'édition, etc.). Une erreur ici rendrait l'objet dysfonctionnel ou invisible dans les outils d'administration.

La gestion des associations (Associations) : La fonction metadata_setassn avec l'option "APPEND" est la clé de voûte du script. Elle permet de lier le rôle à ses capacités (via AccessControlEntries) et à son groupe parent. Soyez vigilant : un "APPEND" sur une association qui ne supporte qu'une seule liaison pourrait provoquer des erreurs silencieuses. Vérifiez toujours la cardinalité de l'association dans le dictionnaire du modèle de métadonnées SAS.

Intégrité et Rollback : Contrairement à une base de données SQL classique, les fonctions de métadonnées n'ont pas de mécanisme de "rollback" automatique en cas d'erreur en milieu de Data Step. Si le script échoue après la création de l'objet mais avant l'ajout des capacités, vous vous retrouverez avec un objet orphelin. Il est recommandé de tester chaque code retour (rc) et d'utiliser une logique d'annulation en cas d'échec. »