Sécurité des composants mis en file d’attente
Lorsqu’un client effectue un appel de méthode à un objet mis en file d’attente, l’appel est en fait effectué à l’enregistreur, qui le package dans le cadre d’un message au serveur. L’écouteur lit le message de la file d’attente et le transmet au lecteur. Le joueur appelle le composant serveur réel et effectue le même appel de méthode. Le composant serveur doit observer le contexte d’appel de sécurité du client (et non le contexte d’appel de sécurité du joueur) lorsque le joueur effectue l’appel de méthode. L’enregistreur marshale le contexte d’appel de sécurité du client dans le message, et le joueur le démarshale sur le serveur avant d’effectuer l’appel de méthode. En ce qui concerne l’objet serveur, il n’existe aucune différence dans le contexte de sécurité entre un appel direct du client et un appel indirect du lecteur. En particulier, les méthodes appelées s’exécutent avec les privilèges de l’expéditeur.
Un composant en file d’attente COM+ prend en charge la sémantique de sécurité basée sur les rôles, comme d’autres composants conçus pour une utilisation avec des applications COM+. Les composants d’une application mise en file d’attente peuvent donc utiliser des interfaces programmatiques pour découvrir l’appartenance au rôle de leur appelant (ISecurityCallContext::IsCallerInRole) ou d’un utilisateur spécifique (ISecurityCallContext::IsUserInRole). Il est recommandé que tout composant mis en file d’attente ayant un impact potentiel sur la sécurité utilise ces interfaces pour case activée explicitement les informations d’identification de l’expéditeur.
L’identité de l’appelant est l’identité associée à un appel de méthode. L’identité de l’appelant est utilisée par la sécurité basée sur le rôle et est présente dans le contexte des appels de sécurité. Dans les composants mis en file d’attente, l’identité de l’appelant est représentée sous forme de données dans le message Message Queuing. Message Queuing authentifie l’identité de l’expéditeur du message. Lorsque l’identité de l’appelant et l’identité de l’expéditeur de message sont identiques, Message Queuing authentifie à la fois le message et l’appelant. C’est le cas habituel.
Notes
Les composants mis en file d’attente COM+ ne prennent pas en charge la sécurité de type emprunt d’identité, ce qui permet à un serveur d’obtenir un jeton d’accès correspondant à l’identité du client et de l’utiliser pour effectuer des vérifications de contrôle d’accès ou pour agir dans le contexte de sécurité du client.
Lorsque l’appelant d’un composant mis en file d’attente interagit avec le composant via un enregistreur hors processus, les identités de l’appelant et de l’expéditeur de messages (enregistreur) peuvent être différentes. Dans ce cas, les composants en file d’attente COM+ vérifient que l’expéditeur du message est membre du rôle Utilisateur approuvé QC sur le serveur. En outre, l’enregistreur hors processus nécessite un certificat d’authentification, car il est authentifié par Message Queuing.
Les membres du rôle Utilisateur approuvé QC sont autorisés à spécifier une identité arbitraire, ce qui signifie qu’un membre malveillant peut exécuter un appel de composant mis en file d’attente avec des privilèges élevés. Il est donc recommandé de maintenir le nombre de ces utilisateurs au minimum absolu.
En raison du risque d’attaque sophistiquée associée à n’importe quel mécanisme qui propage l’identité sur un réseau, ainsi que du risque d’attaque par déni de service simple en inondant les files d’attente de requêtes non exécutables, il est recommandé de déployer le service de composants en file d’attente COM+ uniquement sur un réseau d’hôtes approuvés, par exemple, sur un réseau privé ou un réseau privé virtuel, ou derrière un pare-feu configuré de manière appropriée.
Les composants en file d’attente COM+ s’exécutent sur DCOM. Vous pouvez donc protéger l’intégrité et le secret des appels de méthode mis en file d’attente en sélectionnant Confidentialité des paquets comme paramètre Niveau d’authentification des appels sous l’onglet Sécurité de la feuille Propriétés de votre application mise en file d’attente.
Rubriques connexes