Partager via


Niveaux de confiance en matière de sécurité pour l'accès aux ressources

Ce sujet explique comment l’accès est restreint sur les types de ressources que System.Transactions expose.

Il existe trois niveaux de confiance principaux pour System.Transactions. Les niveaux d’approbation sont définis en fonction des types de ressources que System.Transactions expose, ainsi que le niveau de confiance requis pour accéder à ces ressources. Les ressources auxquelles System.Transactions donne accès sont la mémoire système, les ressources partagées à l'échelle du processus et les ressources à l'échelle du système. Les niveaux sont les suivants :

  • AllowPartiallyTrustedCallers (APTCA) pour les applications utilisant des transactions au sein d’un domaine d’application unique.

  • DistributedTransactionPermission (DTP) pour les applications utilisant des transactions distribuées.

  • Confiance totale pour les ressources durables, les applications de gestion de la configuration et les applications d’interopérabilité héritées.

Remarque

N'appelez pas les interfaces inscrites avec des contextes personnifiés.

Niveaux de confiance

APTCA (Confiance partielle)

L’assembly System.Transactions peut être appelé par du code partiellement approuvé, car il a été marqué avec l’attribut AllowPartiallyTrustedCallers (APTCA). Cet attribut supprime le champ LinkDemand implicite pour le jeu d’autorisations FullTrust, qui est habituellement automatiquement placé sur les méthodes accessibles publiquement de chaque type. Toutefois, certains types et membres nécessitent toujours des autorisations plus fortes.

L'attribut APTCA permet aux applications d'utiliser des transactions en confiance partielle au sein d'un domaine d'application unique. Cela active les transactions non remontées et les inscriptions volatiles qui peuvent être utilisées pour la gestion des erreurs. Un exemple de ceci est une table de hachage transactionnée et une application qui l’utilise. Les données peuvent être ajoutées et supprimées de la table de hachage sous une seule transaction. Si la transaction est annulée ultérieurement, toutes les modifications apportées à la table de hachage dans le cadre de cette transaction peuvent être annulées.

DistributedTransactionPermission (DTP)

Lorsqu'une System.Transactions transaction est escaladée pour être gérée par System.Transactions MSDTC, il demande au DistributedTransactionPermission (DTP) de créer la transaction distribuée. Cela signifie que le code provoquant la remontée de la transaction (par exemple, via la sérialisation ou les inscriptions durables supplémentaires) doit se voir accorder la DTP. Le code qui a créé la transaction à l’origine System.Transactions n’a pas nécessairement besoin de posséder cette autorisation.

Ce niveau d’autorisation est destiné à limiter les applications qui écrivent vers des ressources permanentes. En cas d’échec, l’application doit être en mesure de récupérer avec le gestionnaire de transactions pour déterminer le résultat final de la transaction, afin qu’elle puisse mettre à jour des données permanentes. Ce type d’application est appelé gestionnaire de source durable. Un exemple classique de ce type d’application est SQL.

Pour activer la récupération, ce type d’application a la possibilité de consommer définitivement des ressources système. Cela est dû au fait que le gestionnaire de transactions récupérable doit mémoriser les transactions validées jusqu’à ce qu’elle puisse confirmer que tous les gestionnaires de ressources durables participant à la transaction ont reçu le résultat. Par conséquent, ce type d’application nécessite une confiance totale et ne doit pas être exécuté, sauf si ce niveau d’approbation a été accordé.

Pour plus d’informations sur les inscriptions durables et la récupération, consultez les rubriques Inscription de ressources comme participants à une transaction et Exécution de la récupération.

Les applications qui assurent l'interopérabilité avec les systèmes hérités et fonctionnent avec COM+ doivent également bénéficier d'une confiance totale.

Voici une liste de types et de membres qui ne sont pas appelables par du code en partie approuvé, car ils sont décorés par l’attribut de sécurité déclaratif FullTrust :

PermissionSetAttribute(SecurityAction.LinkDemand, Name := "FullTrust")

Seul l’appelant immédiat est nécessaire pour disposer du jeu d’autorisations FullTrust permettant d’utiliser ces types ou méthodes.