Introduction
Sur la plateforme SAP HANA, la sécurité est gérée au moyen de privilèges. Il en existe plusieurs types :
Les privilèges systèmes vont permettre de définir la fonction de l’utilisateur : administrer la base de données, réaliser des sauvegardes etc.
Les privilèges sur les objets vont définir les droits d’accès sur les objets de la base de données : Select sur les tables, sur les vues, insérer des données, supprimer des tables etc.
Les privilèges sur les objets sont intéressants pour limiter l’accès et l’utilisation des objets mais ce n’est pas suffisent pour gérer l’accès aux données de façon plus fine. Selon leur métier, tous les utilisateurs n’accèdent pas aux mêmes données.
Pour cela, SAP HANA dispose de privilèges analytiques pour permettre un contrôle d’accès précis aux données. C’est-à-dire définir quelles lignes de données peuvent être vues par quels utilisateurs.
Les privilèges analytiques vont être appliqué au travers des modèles virtuels (Calculation Views).
Pour permettre l’accès et l’utilisation des modèles virtuels, il est également nécessaire d’appliquer des privilèges sur les packages contenant les modèles.
Tous ces privilèges peuvent être définis et regroupés dans des « Rôles » afin de facilité la gestion de la sécurité par métier ou fonction.
Les privilèges analytiques
Application des privilèges analytiques
Il existe deux types de privilèges Analytiques : privilèges analytiques classiques et les privilèges analytiques SQL.
Le type « SQL » a fait son apparition avec la SP10 de SAP HANA 1 et tend à remplacer les privilèges analytiques classiques. En effet, ils offrent plus de flexibilité et supportent des opérations de restrictions plus complexes et plus précises.
Création d'un privilège analytique
Il est recommandé de créer les privilèges analytiques de type run-time object afin qu’ils soient associés au catalogue lors des déploiements alors qu’un privilège analytique de type design-time object ne permettra pas cette facilité de déploiement.
Pour l’exemple, nous allons attribuer un privilège analytique sur une calculation view de type Dimension. Cette dimension retourne la liste de tous les clients. Le but est de limiter la liste des clients aux groupes de comptes clients dont l’utilisateur est responsable.
1 – Pour créer un privilège analytique sélectionner et faire un clique-droit sur le package qui contiendra le privilège, cliquer sur « Nouveau » > « Analytic Privilège« .
Dans la boite de dialogue qui s’ouvre choisir le type de privilège analytique (ici SQL Analytic Privilege). Et dans la suivante, choisir le package de destination.
2 – Lorsque le privilège analytique est créé, la fenêtre de paramétrage s’ouvre afin de saisir les valeurs de restriction :
- Secured Model : Cliquer sur Add et sélectionner la vue concernée.
- Sur la droite, sélectionner le mode de définition du privilège
- Définir une période de validité (si nécessaire).
- Sélectionner un attribut sur lequel sera appliqué la restriction
- Assigner une valeur.
- Une fois le paramétrage terminé, cliquer sur le bouton afin d’activer le privilège.
3 – La version SQL se présente ainsi :
Il est possible de créer un privilège analytique dynamique. Le principe est d’appliquer une restriction en fonction d’un élément associé à l’utilisateur. Ainsi on ne définit pas dans le privilège la valeur de l’attribut qui va permettre la restriction mais on va utiliser une procédure stockée qui retournera une valeur en fonction d’éléments de la base de données.
Exemple : une table de la base de données contient la répartition des Groupes de comptes client par utilisateur.
Une requête exécutée dans une procédure peut donc retourner le groupe de compte client en fonction de l’utilisateur qui exécute la calculation view.
La première étape est donc de créer une procédure stockée ainsi :
Remarque : la procédure n’accepte aucun paramètre en entré et doit avoir un paramètre en sortie.
C’est donc cette procédure qui sera associée au privilège analytique :
Application des privilèges
Pour pouvoir appliquer les privilèges analytiques, il faut les attribuer aux utilisateurs concernés :
Pour cela, il faut ouvrir le dossier « Security » puis « Users », sélectionner l’utilisateur auquel attribuer le privilège. Dans l’onglet « Analytic Privilege », cliquer sur le bouton « + » et dans la boite qui s’affiche, rechercher et sélectionner le privilège analytique à attribuer.
Ce privilège peut être attribué directement à l’utilisateur ou à un rôle.
Résultats
Avant application du privilège la vue « Dim_Customer » retournait 79 lignes réparties ainsi :
Le datamart utilisant la dimension « Dim_Customer » présentait la répartition du CA de la façon suivante : 36 clients sur deux groupes de comptes. Notez que seule la vue « Dim_Customer » a fait l’objet d’un privilège analytique qui s’est appliqué automatiquement (par jointure) à la vue de fait du datamart.
Après application du privilège, la vue interrogée n’affiche que 50 clients pour un seul groupe de compte :
Et le datamart utilisant cette dimension n’affiche plus que 9 lignes sous-ensembles du résultat avant application du privilège.
CONCLUSION DE L’EXPERT
SAP HANA montre toute sa puissance par de simples opérations qui auront la capacité d’appliquer une politique de sécurité efficace d’accès aux données. L’utilisation des privilèges analytiques dynamiques au travers des Calculations Views apportera la flexibilité nécessaire lors de la mise en place de la sécurité.