Mise en œuvre de RPC (Remote Procedure Call)

Logo

Introduction

RPC désigne Remote Procedure Call.

Une application cliente peut communiquer avec un serveur ASE en utilisant le « site handler » pour des requêtes RPC (remote procedure call) à destination d’un autre serveur.

Une application cliente peut également effectuer une requête sur une table proxy dans un serveur ASE qui est de manière transparente l’image d’un objet appartenant à un objet distant (table, vue, procédure stockée) : cet accès à distance s’effectue avec CIS (Component Integration Service), notion qui fait l’objet d’une fiche technique à part entière.

Les « site handlers » se chargent de l’envoi et de la réception des requêtes RPC et des résultats de ces dernières. L’accès à distance à un autre serveur via CIS n’utilise pas les « site handlers », ceci constitue la différence entre RPC et CIS.

Globalement, RPC permet d’exécuter une procédure stockée distante du serveur dans lequel le client est connecté. La commande exec classique pour le déclenchement des RPC est utilisée.

Syntaxe :

exec server.database.owner.procedure_name
Sybase RPC Remote Procedure Call

Mise en œuvre du RPC, préparation des serveurs

Afin de pouvoir mettre en œuvre le RPC vers un serveur distant, des informations doivent être indiquées au serveur qui adresse des RPCs ainsi que pour le serveur recevant les requêtes RPCs.

Dans la suite de cette fiche technique, on parlera du serveur émetteur de RPC (RPC sender) et du serveur récepteur de RPC (RPC receiver).

Préparation du serveur émetteur de RPCs

Indication des serveurs récepteurs : Il est indispensable d’indiquer au serveur émetteur quels sont les serveurs distants vers lesquels des requêtes RPC peuvent être envoyées. Cette manipulation s’effectue avec la procédure système sp_addserver, laquelle écrit les informations dans la table système sysservers du serveur émetteur. Syntaxe :

exec sp_addserver server_name [,server_class [,network_name]]
server_name Nom logique utilisé pour identifier le serveur. Ce dernier doit être unique.
server_class Type du serveur.
network_name Nom du serveur dans le fichier interfaces.

Exemple :

exec sp_addserver DS2, ASEnterprise, DS2

Les types de serveur disponibles sont regroupés ci-dessous :

  • ASEnterprise ( > = v 11.5)
  • ASAnywhere ( > = v 6.0)
  • ASIQ ( > = v 12.0)
  • sql_server ( <= v 4.9)
  • db2
  • direct_connect

Mise à jour du fichier interfaces : Dans le fichier interfaces du serveur RPC émetteur, l’entrée pour chaque serveur distant vers lesquels des requêtes RPC peuvent être émises doit figurer.

Application des paramètres de configuration : Certaines options de configuration doivent être appliquées pour le serveur émetteur de RPC afin d’autoriser et de paramétrer l’accès à un serveur distant. Ces options de configuration sont stockées dans la table syscurconfigs du serveur émetteur, lesquelles sont modifiées avec la procédure système sp_configure.

Parmi ces options :

  • allow remote access
  • number of remote logins
  • number of remote connections

Exemples :

exec sp_configure "allow remote access", 1
exec sp_configure "number of remote logins", 100
exec sp_configure "number of remote connections",50

Préparation du serveur récepteur de RPCs

Indication des serveurs émetteurs : Il est indispensable d’indiquer au serveur récepteur quels sont les serveurs distants émetteurs de requêtes RPC afin que le serveur récepteur soit en mesure de localiser exactement le ou les serveurs vers lequel(s) les résultats doivent être envoyés. Cette manipulation s’effectue avec la procédure système sp_addserver déjà évoquée précédemment.

Application des paramètres de configuration : Le paramètre de configuration 'allow remote access' pour le serveur récepteur doit être activé afin d’autoriser ce dernier à communiquer avec le serveur émetteur de RPC.

exec sp_configure "allow remote access", 1

Mise en place des options de sécurité : Une correspondance entre le login du serveur émetteur et le login du serveur récepteur doit être réalisée pour des raisons de sécurité. Cette correspondance s’effectue avec la procédure stockée système sp_addremotelogin qui écrit des informations dans la table système sysremotelogins du serveur distant receveur de RPCs. (Pour supprimer ces logins, voir la procédure stockée système sp_dropremotelogin). Syntaxe :

exec sp_addremotelogin remote_servername[ ,local_login_name[,remote_login_name]]

Exemple :

exec sp_addremotelogin DS1, login_DS2, login_DS1

Dans l’exemple, DS1 est le serveur émetteur de RPC et DS2 le serveur récepteur.

La dernière syntaxe est la syntaxe recommandée pour un niveau de sécurité optimal. Par défaut, le serveur receveur de requêtes RPC vérifie le mot de passe pour le login. Si le mot de passe du login dans le serveur émetteur est différent du mot de passe dans le serveur récepteur, la connexion au serveur récepteur est par défaut refusée. La procédure système sp_remoteoption permet de désactiver cette option de vérification du mot de passe au niveau du serveur récepteur (option trusted).

Syntaxe :

exec sp_remoteoption [remote_server,login_name,remote_name,opt_name,{true|false}]

Exemple :

exec sp_remoteoption DS1, login_DS2, login_DS1, trusted, true

Applications d’options pour les serveurs émetteurs de RPC : Il existe des options que l’on peut appliquer pour un serveur émetteur de RPCs grâce à la procédure stockée sp_serveroption à partir

Syntaxe :

exec sp_serveroption [server, optname, {true|false}]

Exemple :

exec sp_serveroption DS1,timeouts,false

Parmi ces options :

  • network password encryption : encryption du mot de passe des logins dans les échanges réseaux
  • timouts : mise en place d’un timeout en secondes
  • readonly : force la lecture seule