Les Bases de données privées virtuelles (Virtual Private Database
ou VPD)
Les VPDs sont un nouveau moyen (disponible à partir de Oracle 9i et
amélioré en Oracle 10g) de renforcer la sécurité
d'une base de données Oracle.
La politique de sécurité peut être définie via une
interface graphique : Oracle Policy Manager
Caractéristiques principales :
- affinent la granularité du contrôle d'accès aux données,
- sont centralisées au niveau de la base,
à ne définir qu'une fois quelque soit l'applicatif client, et
transparentes pour l'application
- peuvent concerner des vues, des tables, des colonnes (Oracle 10g) ou des
synonymes
- fournit un package de chiffrement DBMS_CRYPTO (Oracle 10g)
les vues paramétrées étaient jusqu'à présent
présent le seul moyen d'obtenir une granularité d'accès
inférieure à la table.
Les sécurités mises au niveau applicatifs sont d'une part à
réécrire pour chaque applicatif et sont aisément contournables
lorsque l'on fait un accès direct aux données avec un autre programme
client.
Principes de fonctionnement
modification dynamique de requête
Les VPDs utilisent la modification dynamique de requête .
Tout ordre commençant par ou incluant 'SELECT' , est filtré, des
conditions différentes (clauses WHERE ou fonction booleene personnalisée
par exemple ) sont appliquées en fonction de l'utilisateur qui fait la
demande.
contextes applicatifs
Les VPDs s'appuient sur des informationsn contexctuelles personnalisées
pour déterminer le niveau d'accès autorisé et appliquer
la politique de sécurité du groupe d'utilisateurs concerné
Pour des raisons
évidentes de sécurité, si aucun contexte n'est spécifié,
un utilisateur ne pourra pas accéder à des données globales
non filtrées. Dans ce cas, par défaut, Oracle applique TOUTES
les politiques de sécurités existantes, sur TOUTES les applications.
Ainsi aucun contournement n'est possible.
- contextes applicatifs simples
Un contexte applicatif est unique au niveau de la base, et il peut
en exister autant que d'application.
Il existe des contexte applicatifs simples, qui permettent d'identifier finement
l'utilisateur connecté en fonction de paramètres choisis. Par
exemple le contexte peut déterminer le niveau hirarchique de l'utilisateur
dans la société, son appartenance à tel ou tel groupe,
ou service, son origine géographique, etc.
L'application montrant dès lors les données autorisées
relatives à ce contexte précis
- contextes applicatifs globaux
Dans certains cas de figure, pour éviter des consommations
de ressources excessives, améliorer les performances ou pour simplifier
la gestion des utilisateurs Oracle, il n'y a pas une connexion et un process
dédié à chaque utilisateur accédant au données.
C'est le cas notamment lorsque qu'on a un utilisateur applicatif générique
pour tous les utilisateurs réels, ou lorsque qu'on utilise le 'connection
pooling'. Ceci est fréquent dans les architectures 3 tiers, mettant
en jeu un serveur web applicatif.