> Tech > Autorité adoptée par programme

Autorité adoptée par programme

Tech - Par iTPro - Publié le 24 juin 2010
email

Pour le développement d’applications modernes, y compris du genre client/serveur et web, il est de plus en plus important que l’accès à la base de données soit sécurisé. Pour protéger l’intégrité du système, il faut que les utilisateurs distants puissent accéder à la base de données sans exposer le système

Autorité adoptée par programme

à des attaques malveillantes.

Pour offrir un tel accès, la méthode la plus simple consiste à utiliser l’autorité adoptée par programme. Pour utiliser celle-ci, le programmeur doit compiler une procédure ou un programme (pour les déclencheurs et les fonctions) avec l’option USRPRF(*OWNER). Ce paramètre de commande apparaît sur pratiquement toutes les commandes de compilation. Avec cette option, un utilisateur peut appeler une procédure ou une fonction et l’exécuter en utilisant les autorités du possesseur du programme (en plus des autorités utilisateur et publiques). Ainsi un programmeur peut offrir à des utilisateurs le moyen de changer ou de visualiser des données, contrairement à ce qu’ils pourraient faire normalement. Cependant, cette possibilité n’existe que pour les tâches spécifiques incluses dans le programme. Cette technique est particulièrement utile pour accorder cette possibilité à des clients et sites Web distants sans exposer dangereusement votre base de données.

La figure 2 montre une application qui permet à une application sur PC d’ajouter une commande au fichier des en-têtes de commandes. L’utilisateur du PC exécute une application Visual Basic (VB) et se connecte au System i à l’aide d’un profil spécial nommé PCVBUSR créé juste pour cette application. Ce profil a des droits très limités et ne peut pas accéder aux fichiers base de données ou à la plupart des programmes applicatifs. Les seuls objets qu’il peut utiliser sont ceux d’une bibliothèque ouverte au public. Ces programmes peuvent être exécutés en tant que procédures stockées à partir de SQL, à l’aide de la syntaxe suivante :

CALL ADD_ORD(123456, ‘ITEM1’,19)

Le code SQL suivant pour ADD_ORD autorise des réceptions dans trois paramètres : un numéro de commande, un numéro d’article et une quantité. En utilisant ces trois variables, une instruction Insert est émise, ajoutant un nouvel enregistrement à la table ORDMAST.

CREATE PROCEDURE ADD_INV(IN Ord DECIMAL(6,0)
IN Itm CHAR(7), IN Qty DECIMAL(7,2)) LANGUAGE SQL MODIFIES SQL DATA
BEGIN INSERT INTO ORDMAST VALUES(Ord, Itm, Qty) END

Pour des procédures stockées écrites en SQL, la valeur par défaut pour l’attribut USRPRF est *OWNER si la convention de nommage *SQL est utilisée et *USER si c’est la convention de nommage *SYS. Cependant, la meilleure pratique consiste à utiliser une clause Set Option sur l’instruction Create Procedure pour définir l’attribut USRPRF explicitement, comme dans l’exemple précédent. Les procédures stockées écrites dans d’autres langages, comme RPGLE, doivent être définies pendant la compilation du programme.

Du fait que la procédure stockée ADD_INV appartient à un profil utilisateur avec l’autorité appropriée, tous les utilisateurs qui peuvent accéder à la procédure peuvent ajouter des lignes à la table ORDMAST – même si elle réside dans une bibliothèque à laquelle ils n’ont pas accès par leur propre profil utilisateur. Par conséquent, ils ne peuvent pas modifier la base de données en exécutant directement des instructions SQL comme INSERT, UPDATE et DELETE. Ils ne peuvent effectuer que les tâches que le développeur a incluses dans la procédure, en même temps que toutes les éditions et journalisations nécessaires. Cette faculté de donner une possibilité à un utilisateur distant sans ouvrir l’accès à la base de données elle-même souligne tout l’intérêt des procédures stockées dans le modèle de sécurité de toute application moderne.

Téléchargez gratuitement cette ressource

Guide des Services Managés pour se moderniser et se sécuriser

Guide des Services Managés pour se moderniser et se sécuriser

À l’heure où les talents du numérique sont rares et difficiles à séduire, comment bénéficier des meilleures compétences en infrastructure Cloud ou en cybersécurité pour gagner en agilité et en cyber-résilience ? Découvrez le Guide des Services managés dédiés aux PME.

Tech - Par iTPro - Publié le 24 juin 2010