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
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éseauxtimouts
: mise en place d’un timeout en secondesreadonly
: force la lecture seule- …