Affecter les autorisations automatiquement sur SAP HANA

Je vais vous présenter une solution 100% spécifique, développée en python permettant l’affectation des rôles automatiquement à partir d’un choix de profil utilisateur.

Lorsque vous commencez à utiliser la base de données SAP HANA sans application au premier plan (comme SAP ECC ou encore S/4), vous arriverez à l’étape de devoir gérer au quotidien les profils utilisateurs manuellement. Et vous rêverez de retrouver le fonctionnement de la CUA dans un paysage SAP ABAP.

Dans la conception ci-dessous et cette découverte, il sera possible dans un second temps de connecter cette solution à une interface spécifique à la CUA SAP. Oui, et pourquoi pas ! Puisque la table à maintenir est relativement facile, on pourra imagnier une interface ABAP pour extraire les évolutions à faire côté SAP HANA. ou si on ne souhaite pas faire d’ABAP, on peut répliquer quelques tables (USR05, AGR_USERS) et extraire les évolutions récentes pour les transmettre dans la table d’administration.

Et dans un second article, je vous présenterai les droits dynamiques (Dynamic Analytic Privileges Using Procedures in SAP HANA) et le SSO Kerberos. qui me semblent des briques à mettre en place obligatoirement.

Juste une aparté, il existe un produit SAP IDM qui fera ce travail avec plus ou moins d’effort, et c’est ce que je commencerai à conseiller à mon client. et s’il ne prend pas ce produit, je lui proposerai une solution spécifique.

SAP CUA vs IDM :

comparatif

Alternative, le profil par défaut, dans certains cas on affecte les mêmes droits à 90% de la population avec un un rôle analytique dynamique selon le site de référence de l’utilisateur :

2620766 – How to set Default Role for Dynamically Generated Users for your SAP HANA XS APP

Resolution

  1. Double click on your system in the Systems tab of HANA Studio.
  2. Click on the Configuration tab and add the parameter defaultrole under indexserver.ini->saml.
  3. Set the value to be the name of a role that you have defined.
  4. Now new users that login to your app will be assigned your specified role by default.

Et pour récupérer le site de l’utilisation, on obtiendra ces informations par réplication en provenant du ECC par exemple ou du systèmes HR.

On commence !

Après avoir écarté les solutions les plus simples, passons maintenant au mode baroudeur en créant une solution spécifique !

Présentation du programme :

USERIDENABLEDROLESTO_UPDATETO_DISABLETO_ENABLELAST-CHANGE-DATELAST-CHANGE-TIME
Table (management) : APPRO_USER_MNGT
ZDATEZTIMEUSERIDACTIONROLES
Table (trace) : APPRO_USER_HISTORY

Objectifs du programme :
1ere tâche : Créer les utilisateur
2eme tâche : Attribuer les rôles
3eme tâche : Supprimer les utilisateurs
4eme tâche : Tracer ces actions dans une table d’historisation

Côté serveur, le code du programme sera dans un script python à planifier régulièrement pour un fonctionnement automatique.

la maintenance et la lecture des tables peuvent être réalisées depuis l’interface standard du webide.

Démonstration :

phase 1 , on initialise les entrées
on part d’une table historique vide
phase 2 : on lance le script python pour demander les actions (qu’il faudra planifier en cycle)
phase 3 : les actions sont tracées dans la table d’historique
phase 4 : la table de paramétrage est MAJ

Le programme spécifique en python :

lien github [ici]