Níveis de confiança de segurança no acesso a recursos
Este tópico discute como o acesso é restrito nos tipos de recursos expostos System.Transactions .
Existem três níveis principais de confiança para System.Transactionso . Os níveis de confiança são definidos com base nos tipos de recursos que System.Transactions são expostos e no nível de confiança que deve ser necessário para acessar esses recursos. Os recursos aos quais System.Transactions fornece acesso são a memória do sistema, os recursos compartilhados de todo o processo e os recursos de todo o sistema. Os níveis são:
AllowPartiallyTrustedCallers (APTCA) para aplicativos que usam transações dentro de um único domínio de aplicativo.
DistributedTransactionPermission (DTP) para aplicativos que usam transações distribuídas.
Confiança total para recursos duráveis, aplicativos de gerenciamento de configuração e aplicativos de interoperabilidade herdados.
Nota
Você não deve chamar nenhuma das interfaces de alistamento com contextos representados.
Níveis de confiança
APTCA (Confiança Parcial)
O System.Transactions assembly pode ser chamado por código parcialmente confiável porque foi marcado com o atributo AllowPartiallyTrustedCallers (APTCA). Esse atributo essencialmente remove o implícito LinkDemand para o conjunto de permissões FullTrust que, de outra forma, é colocado automaticamente em cada método acessível publicamente em cada tipo. No entanto, alguns tipos e membros ainda exigem permissões mais fortes.
O atributo APTCA permite que os aplicativos usem transações em confiança parcial dentro de um único domínio de aplicativo. Isso permite transações não escalonadas e alistamentos voláteis que podem ser usados para tratamento de erros. Um exemplo disso é uma tabela de hash transacionada e um aplicativo que a usa. Os dados podem ser adicionados e removidos da tabela de hash em uma única transação. Se a transação for revertida posteriormente, todas as alterações feitas na tabela de hash sob essa transação poderão ser desfeitas.
DistributedTransactionPermission (DTP)
Quando uma System.Transactions transação é escalada para ser gerenciada pelo MSDTC, System.Transactions exige que o DistributedTransactionPermission (DTP) crie a transação distribuída. Isso significa que o código que faz com que a transação seja escalada (como por meio de serialização ou alistamentos duráveis adicionais) precisaria receber DTP. O código que originalmente criou a System.Transactions transação não precisa necessariamente possuir essa permissão.
Demandas de link FullTrust
Esse nível de permissão destina-se a restringir aplicativos que estão gravando em recursos duráveis. Em caso de falha, o aplicativo precisa ser capaz de recuperar com o gerenciador de transações para determinar o resultado final da transação, para que possa atualizar dados permanentes. Esse tipo de aplicativo é conhecido como um gerenciador de código-fonte durável. Um exemplo clássico desse tipo de aplicativo é o SQL.
Para habilitar a recuperação, esse tipo de aplicativo tem a capacidade de consumir permanentemente recursos do sistema. Isso ocorre porque o gerenciador de transações recuperáveis deve se lembrar das transações que foram confirmadas até que possa confirmar que todos os gerentes de recursos duráveis que estão participando da transação receberam o resultado. Portanto, esse tipo de aplicativo requer confiança total e não deve ser executado a menos que esse nível de confiança tenha sido concedido.
Para obter mais informações sobre alistamentos duráveis e recuperação, consulte os tópicos Recrutando recursos como participantes de uma transação e Executando recuperação .
Os aplicativos que executam trabalho de interoperabilidade herdado com COM+ também precisam ter confiança total.
A seguir está uma lista de tipos e membros que não são chamáveis por código parcialmente confiável porque são decorados com o atributo de segurança declarativa FullTrust :
PermissionSetAttribute(SecurityAction.LinkDemand, Name := "FullTrust")
Somente o chamador imediato é obrigado a possuir o conjunto de permissões FullTrust para usar os tipos ou métodos acima.