support clients /

SAS® 9.2 – La sécurité olap en quelques clics

En SAS®9.1.3SP4, la gestion de la sécurité OLAP nécessitait de maîtriser le langage MDX (MultiDimensional eXpression language) car seule une fenêtre de saisie était disponible à travers la SAS® Management Console.
En SAS®9.2, une nouvelle interface graphique a été développée afin d'aider les utilisateurs ne connaissant pas le langage MDX à sécuriser leurs données OLAP. Le but de cet article sera donc de présenter cette nouvelle interface dans ses grandes lignes.

1. Accéder à l'interface via la SAS Management Console

Pour pouvoir positionner une sécurité sur une dimension d’un cube OLAP via la SAS Management Console, il faut accéder aux propriétés de cette dimension. Pour cela, allez au niveau suivant :
Gestionnaire de droits / Gestion des ressources / Par emplacement / Votre serveur d'applications / Votre schéma OLAP / Votre cube / Dimensions.

Cliquez droit sur la dimension sur laquelle vous souhaitez implémenter une sécurité et accédez aux propriétés :

 

Dans l’onglet Droits, sélectionnez l’utilisateur ou le groupe d’utilisateurs sur lequel vous souhaitez positionner une sécurité puis accordez-lui explicitement le droit « Lecture », le bouton « Ajouter une condition… » sera alors disponible :



Cliquez ensuite le bouton « Ajouter une condition… ».

2. Utilisation de l'interface

L’interface propose 2 choix :

Le premier choix permet de créer une expression MDX élaborée à l'aide du générateur de formules qui met à la disposition des utilisateurs un nombre important de fonctions MDX ainsi qu'un arbre de dimensions présentant la structure et les membres de cette dimension.
Le 2e choix, quant à lui, permet de positionner une sécurité OLAP simple basée sur l'inclusion ou l'exclusion de membres ainsi que ses descendants.
Dans les exemples qui suivent, nous prendrons un cube OLAP construit à partir de la table SASHELP.PRDSALE et notamment la dimension géographique nommée « DGEO » dont la structure est la suivante : Country (Canada, Germany et U.S.A.) / Region (East et West) / Division (Consumer et Education).

Commençons par présenter le cas d’expressions MDX simples. Imaginons que nous souhaitons n’afficher que les données du pays CANADA, il suffit alors de naviguer dans l’arbre de dimension, de sélectionner le membre CANADA puis de cocher l’option « Spécifier l'accès à ce membre et ses descendants ». Par défaut l’option « Accorder les droits en lecture » est sélectionnée, ce qui correspond à notre souhait. Vous pourrez alors remarquer que l’expression MDX a été automatiquement générée :

Voici le rendu lors de l’affichage par défaut du cube OLAP dans SAS® Enterprise Guide® 4.2 :

Mais qui donne bien la possibilité d’accéder également aux descendants de CANADA :



Maintenant, si au lieu de cocher l’option « Accorder les droits en lecture » on utilise l’option « Refuser les droits en lecture », la fonction MDX EXCEPT est alors utilisée et voici l’expression MDX générée :

{Except([DGEO].[DGEO].Members,
{[DGEO].[DGEO All].[CANADA],
Descendants([DGEO].[DGEO All].[CANADA])})}


Tous les membres sauf CANADA seront alors affichés, ce que nous pouvons vérifier en affichant le cube OLAP dans SAS Enterprise Guide 4.2 :



Abordons désormais un cas un peu plus complexe où nous souhaitons que seul le membre CANADA puisse être accessible sans donner accès à ses descendants. Il faut alors construire une expression MDX avancée mais nous pouvons partir du premier exemple présenté dans cet article.

Pour rappel :



Cliquez sur « Créer une expression MDX avancée en utilisant le générateur d'expressions », le message ci-dessous s’affichera :



Afin de copier l’expression MDX dans le générateur d’expressions, cliquez sur « Oui », le bouton « Générateur de formules » sera alors disponible :



Cliquez sur le générateur de formules, l’expression MDX est alors bien copiée :

Le générateur de formules disponible à travers la SAS Management Console est en fait très similaire au générateur d'expressions présent dans SAS® Information Map Studio 4.2 (qui était également présent dans SAS® Information Map Studio 3.1).

Modifiez l’expression de sorte à retirer la fonction DESCENDANTS puis validez l’expression :

{[DGEO].[DGEO All],
[DGEO].[DGEO All].[CANADA]}
 

L’affichage par défaut du cube OLAP dans SAS Enterprise Guide 4.2 valide bien le fait que seul le membre CANADA est disponible, sans pouvoir descendre au niveau inférieur et ainsi afficher les descendants :

Vous pouvez également  créer directement une expression MDX complexe. Pour cela sélectionnez alors l’option « Créer une expression MDX avancée en utilisant le générateur d'expressions » après avoir cliqué sur le bouton « Ajouter une condition… » au niveau des droits de la dimension.
Le générateur de formules propose une diversité large de fonctions MDX, un arbre de dimension permettant la sélection d'un membre en particulier ainsi qu'un panel d'opérateurs.



Dès lors que l'expression contient plusieurs membres ou sets (ensembles de membres), il est alors nécessaire de l'encadrer par des accolades et de séparer chaque membre ou set par une virgule.
Afin d’illustrer l’utilisation de ce générateur de formules, nous allons chercher à construire l’expression MDX citée auparavant (même s’il s’agit d’un cas simple) :

{[DGEO].[DGEO All],
[DGEO].[DGEO All].[CANADA],
Descendants([DGEO].[DGEO All].[CANADA])}
 

Pour parvenir à cette expression, les actions ci-dessous peuvent être réalisées :

  • cliquez sur le bouton afin de rajouter des accolades à l’expression
  • via l’onglet « Sources de données », sélectionnez le membre « DGEO All » puis cliquez sur « Ajouter à l’expression »
  • cliquez sur le bouton afin d’ajouter ensuite un autre membre
  • sélectionnez le membre CANADA puis cliquez sur « Ajouter à l’expression »
  • dans l’onglet « Fonctions », sélectionnez « Toutes les fonctions », sélectionnez la fonction « Descendants » sur la fenêtre de droite et cliquez sur « Ajouter à l’expression »
  • sélectionnez le membre CANADA et cliquez sur « Ajouter à l’expression ». A ce moment donné l’expression MDX est alors la suivante :

{[DGEO].[DGEO All],
[DGEO].[DGEO All].[CANADA],
Descendants([DGEO].[DGEO All].[CANADA], , )}
 

Les paramètres "Distance" et "Desc_flags" étant inutiles dans notre cas, supprimez-les.

  • Validez l’expression finalisée, le message suivant apparaît alors :

Cette nouvelle interface mise à la disposition des utilisateurs en SAS 9.2 permet donc à des profils différents d’implémenter d’une manière simple une sécurité sur des données OLAP : un profil ne connaissant pas du tout le langage MDX pourra créer une expression MDX classique en quelques clics alors qu’un profil plus avancé pourra utiliser le générateur de formules afin d’élaborer des expressions MDX plus complexes, également en quelques clics.

Quelques informations complémentaires 

  • Plus d'informations sur la sécurité OLAP sont disponibles à l'adresse http://support.sas.com/documentation/cdl/en/bisecag/61133/HTML/default/a003139255.htm 
  • Il est nécessaire d'appliquer le correctif A01019 afin de palier à la non inclusion du membre all dans certains cas (cf http://support.sas.com/kb/36/437.html)
  • Il est également possible d'accéder à cette interface dans SAS® OLAP Cube Studio en accédant aux propriétés de la dimension via l'inventaire
  • Une limite existe pour cette interface : une fois l’expression MDX enregistrée pour un utilisateur ou un groupe donné, seul le générateur de formules est disponible lors de la modification de l’expression


Sylvain BERTIN

Consultant Support Clients - SAS France