Compartilhar via


Níveis de confiança de segurança ao acessar recursos

Este tópico discute como o acesso está restrito a tipos de recursos que System.Transactions expõe.

Há três principais níveis de confiança para System.Transactions. Os níveis de confiança são definidos com base nos tipos de recursos que System.Transactions expõe e o nível de confiança deve ser necessária para acessar esses recursos. Os recursos que System.Transactions fornece acesso a são recursos ampla do sistema, recursos ampla do processo compartilhado e memória do sistema. Os níveis são:

  • AllowPartiallyTrustedCallers (APTCA) para aplicativos que usam transações em um único domínio de aplicativo.

  • DTP (DistributedTransactionPermission ) para aplicativos que usam transações distribuídas.

  • Confiança total para recursos duráveis, aplicativos de gerenciamento de configuração e os aplicativos herdados de interoperabilidade.

Observação

Você não deve chamar qualquer uma das interfaces de inscrição com contextos representados.

Níveis de confiança

APTCA (confiança parcial)

O assembly System.Transactions pode ser chamado pelo código parcialmente confiável, porque ela foi marcada com o atributo APTCA (AllowPartiallyTrustedCallers). Basicamente, esse atributo remove implícito LinkDemand para a permissão FullTrust definida caso contrário será colocado automaticamente em cada método publicamente acessível em cada tipo. No entanto, alguns tipos e membros ainda requerem permissões mais fortes.

O atributo APTCA permite que aplicativos usem as transações em confiança parcial em um único domínio de aplicativo. Isso permite que as transações não escalonados e inscrições voláteis que podem ser usadas para tratamento de erros. Um exemplo disso é uma tabela de hash transacionado e um aplicativo que utiliza. Dados podem ser adicionados ao e removidos da tabela de hash em uma única transação. Se a transação é posteriormente revertida, todas as alterações feitas na tabela de hash em transação podem ser desfeitas.

DistributedTransactionPermission (DTP)

Quando um System.Transactions transação será escalada para ser gerenciado pelo MSDTC, System.Transactions demandas de DistributedTransactionPermission (DTP) para criar a transação distribuída. Isso significa que o código que faz com que a transação ser escalados (como por meio de serialização ou mais inscrições duráveis) precisa ser concedida DTP. O código que criou o System.Transactions transação não necessariamente precisa ter essa permissão.

Esse nível de permissão destina-se para restringir os aplicativos que gravam dados Recursos duráveis. Em caso de falha, o aplicativo precisa ser capaz de recuperar-se com o Gerenciador de transações para determinar o resultado final da transação, para que ele possa atualizar dados permanente. Esse tipo de aplicativo é conhecido como um Gerenciador de fonte durável. Um exemplo clássico desse tipo de aplicativo é SQL.

Para habilitar a recuperação, esse tipo de aplicativo tem a capacidade de consumir permanentemente os recursos do sistema. Isso ocorre porque o Gerenciador de transações recuperável deve se lembrar de transações que foram confirmadas até que ele possa confirmar que todos os gerenciadores de recursos duráveis que participam da transação tem recebido o resultado. Portanto, esse tipo de aplicativo requer confiança total e não deve ser executado, a menos que nível de confiança recebeu.

Para obter mais informações sobre a alistamentos duráveis e a recuperação, consulte os tópicos De inscrição de recursos como participantes de uma transação e execução de tópicos de recuperação.

Aplicativos que executam o trabalho com herdado interoperabilidade com COM+ também precisam ter confiança total.

A seguir está uma lista de tipos e membros que não podem ser chamados por parcialmente confiável código porque eles são decorados com o atributos de segurança declarativa FullTrust:

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

Somente o chamador imediato é necessário ter o permissão FullTrust definida para usar a tipos ou métodos acima.