Partilhar via


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.

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.