eBS R12 : Configurer l'accès aux sorties de traitements d'une même Responsabilité avec RBAC

eBS R12 : Configurer l’accès aux sorties de traitements d’une même Responsabilité avec RBAC

Dans la eBusiness Suite, un utilisateur applicatif ne peut voir – par défaut – que les sorties des traitements simultanés qu’il a lui-même lancés.

En version 11i, l’option de profil « Traitement : Niveau d’accès aux états » (US : « Concurrent: Report Access Level ») permet à un utilisateur de voir les sorties des traitements lancés par les utilisateurs qui utilisent la même responsabilité.

En R12, cette option de profil est remplacée par une nouvelle mécanique qui s’appuie sur le RBAC (« Role Based Access Control »).

L’avantage : pouvoir donner un accès aux sorties des traitements selon des critères beaucoup plus variés que simplement « on a la même responsabilité », puisque nous allons nous-mêmes écrire la clause where à utiliser …

L’inconvénient : beaucoup moins intuitif qu’une simple option de profil !

Ce document présente les différentes étapes permettant de mettre en place cette mécanique :

  1. Création d’un « Instance Set » (en gros, la clause WHERE à utiliser)
  2. Création d’un rôle qui donnera le droit d’accès à cet Instance Set
  3. Affectation du rôle à un utilisateur

A)  Définir un « instance set »

Un « instance set » correspond à un ensemble d’enregistrements d’un objet de la base de données. Ici, il s’agira d’un ensemble de lignes de la table FND_CONCURRENT_REQUESTS  : l’ « instance set » que nous allons définir contiendra un « prédicat » (correspondant à une clause where) dans lequel nous préciserons que nous voulons donner un accès à tous les traitements soumis à partir de la même responsabilité que celle dans laquelle nous sommes connectés.

A.1) Retrouver l’objet « Concurrent Requests »

Chemin d’accès :

  • Responsabilité : Functional Developer (FR : Développeur Fonctionnel)
  • Onglet : Security (FR : Sécurité)
  • Sous-onglet : Objects (FR : Objets)

Puis

  • Critère de recherche : Code : FND_CONCURRENT_REQUESTS
  • Lancez la recherche
  • Cliquez sur le lien « Concurrent Requests » (FR : Demandes de traitements simultanés ) dans la table du bas

VTH 1.1 - Recherche Conc Requ

A.2) Définir un nouvel Instance Set

Dans l’écran affichant la définition de l’objet FND_CONCURRENT_REQUESTS :

  • cliquez sur l’onglet « Object Instance Sets » (FR : Jeux d’instances d’objet )
  • puis sur le bouton « Create Instance Set » (FR : Créer un jeu d’instances).

VTH 1.2 - Create instance set

Dans l’écran de création qui apparaît, saisissez un nom, un code et une description pour l’instance set.

D’une façon générale, le champ Predicat d’un Instance Set contiendra une condition qui sera ajoutée dynamiquement à une clause Where par la suite.

Dans ce cas bien précis, le prédicat va permettre de préciser quels REQUEST_ID nous souhaitons voir dans l’écran de consultation des traitements simultanés :

&TABLE_ALIAS.request_id in (select cr.request_id from fnd_concurrent_requests cr where
 cr.responsibility_id = fnd_global.resp_id and cr.responsibility_application_id =
 fnd_global.resp_appl_id)

Ce qui donnera ensuite un  « …WHERE request_id in… » et une sous-interrogation.

Ici, cette sous-interrogation renvoie les IDs des demandes soumises à partir de la responsabilité en cours, quel que soit l’utilisateur. Le package FND_GLOBAL contient des variables resp_id et resp_appl_id qui correspondent aux IDs de la responsabilité en cours et de son application.

Mais cette sous-interrogation pourrait aussi renvoyer la liste des REQUEST_ID rattachés à une application donnée, ou correspondant à des dates de soumission particulières ou tous les traitements sans restriction ou …

VTH 1.3 - Predicat

Cliquez sur Apply pour sauvegarder.

B)  Création d’un Rôle et d’un Grant

L’ « instance set » créé précédemment doit être rattaché à un rôle sous forme de « Grant »; ce rôle sera ensuite lui-même rattaché à un utilisateur. Cette mécanique fonctionne sur le mode : « je donne le rôle à un utilisateur, donc je donne en cascade tous les droits qui sont dans ce rôle à cet utilisateur ».

B.1) Création d’un Rôle

  • Responsabilité : User Management (FR : Gestion des Utilisateurs)
  • Onglet : Role and Role Inheritance (FR : Rôle et héritage de rôle)
  • Bouton « Create Role » (FR : Créer un rôle)

VTH 2.1 - Create Role

Dans l’écran de création des rôles, choisissez une catégorie (qui permet de « ranger » votre rôle), saisissez un code, un nom, une description, et l’application à laquelle est rattaché votre rôle; cliquez sur « Save ».

VTH2.2 - Create Role détail

(Si vous cliquez sur « Apply », vous serez redirigé vers la page de recherche des rôles; il faudra alors retrouver votre rôle, puis cliquer sur « Update » pour retourner sur la page permettant de définir les grants).

 

B.2) Création du Grant

Cliquez sur « Create Grant » (« Créer des droits ») :

2.2 - Create Role détail2Donnez un nom au nouveau droit, puis dans le champ « Object » de la partie « Data Security », saisissez « Concurrent Requests » : vous êtes en train de définir un droit d’accès à la table des demandes de traitements simultanés :

VTH 2.3 - Grant1Cliquez sur « Next », puis précisez que vous voulez restreindre l’accès à un « Instance Set » (un ensemble d’enregistrements) de la table FND_CONCURRENT_REQUESTS, en utilisant l’instance set créé précédemment :

VTH 2.4 - Grant2

Dans l’écran suivant, vous pouvez consulter le prédicat de l’instance set choisi et saisir des valeurs de paramètres (il n’y en a pas pour ce prédicat).

Et vous pouvez enfin indiquer tout en bas le « Set » dans lequel ce droit/Grant sera activé; pour la consultation des demandes de traitements simultanés, il s’agit du set « Request Operations » (FR : Opérations sur demande de traitement) :

VTH 2.5 - Grant3

(Ce « set » est le nom d’un menu qui contient 2 sous-fonctions (soumettre et voir les demandes de traitements), qui seront testées par la suite à l’ouverture de l’écran de consultation des demandes de traitements simultanés)

Cliquez sur Next, puis Finish sur le dernier écran. Le rôle est créé, et il donne le droit d’accéder aux demandes de traitements soumises à partir de la même responsabilité.

C)  Rattacher le rôle à un utilisateur

  • Responsabilité : User Management (Gestion des Utilisateurs)
  • Menu ou Onglet : Users (Utilisateurs)
  • Saisir le nom d’un utilisateur dans les critères de recherche
  • Icône Update sur la droite

VTH 3.1 - Recherce UserDans l’écran suivant, cliquez sur Assign Roles :

VTH 3.2 - Bouton Assign Roles

Dans la liste de valeur qui apparaît, retrouvez et sélectionnez le rôle créé à l’étape 2.

Saisissez une justification (obligatoire), puis sauvegardez.

VTH 3.3 - Justification

Et voilà : l’utilisateur auquel vous avez rattaché le rôle a maintenant la possibilité de voir les demandes de traitements soumises à partir de la même responsabilité que celle dans laquelle il se connectera.

Pour aller plus loin sur les aspect sécurité de la eBusiness Suite et sur l’administration de l’ERP en général, n’hésitez pas à suivre la formation R12.x Oracle Applications System Administrator Fundamentals.

Source : doc « R12: How To Configure Access To Request Output Of The Same Responsibility » (ID 804296.1)