Permissões de segurança

O common language runtime permite que o código para executar somente as operações que o código tem permissão para executar. O runtime usa objetos chamados permissões para impor restrições no código gerenciado. O runtime fornece classes de permissão interna em vários espaços para nome e também oferece suporte à criação e implementação de classes de permissão personalizada.

Há dois tipos de permissões e cada um tem uma finalidade específica:

Permissões de segurança podem ser na forma de uma classe de permissão (segurança imperativa) ou um atributo que representa uma classe de permissão (segurança declarativa). A classe base para permissões de segurança é System.Security.CodeAccessPermission; a classe base para os atributos de permissão de segurança é System.Security.Permissions.CodeAccessSecurityAttribute.

Um aplicativo, na forma de um assembly, é concedido a um conjunto de permissões no momento em que ele é carregado em um domínio de aplicativo. As concessões são normalmente feitas usando conjuntos de permissão predefinidas são determinados pelo SecurityManager.GetStandardSandbox método. O conjunto de concessão determina as permissões de código tem disponível para ele. O runtime concede permissões com base no local de origem do código (por exemplo, a máquina local, intranet local ou Internet). Código também pode ser concedido permissões especiais se ele é carregado em um modo seguro. Para obter mais informações sobre como executar o código em um modo seguro, consulte Como: Executar o código parcialmente confiável em um modo seguro.

Principais usos de permissões são as seguintes:

  • Código da biblioteca pode exigir que os chamadores tenham permissões específicas. Se você colocar um Demand de permissão no seu código, todo o código que usa seu código é esperado para ter essa permissão para executar. Demandas podem ser usadas para determinar se os chamadores têm acesso a recursos específicos ou para descobrir a identidade de um chamador.

  • Código pode usar permissões para negar acesso a recursos que deseja proteger. Você pode usar SecurityAction.PermitOnly especificar a permissão limitada definido, implicitamente negando todas as outras permissões. No entanto, não recomendamos o uso PermitOnly para proibir o acesso para fins de proteção contra uso indevido intencional. Chamado assemblies, que tem as permissões recusadas implicitamente no conjunto de concessão, pode substituir permissões negadas, realizando uma SecurityAction.Assert qualquer permissão que desejam usar. Por exemplo, se você tem permissão somente UIPermission e chamado de um assembly que tenha inerentemente FileIOPermission, o assembly pode simplesmente fazer uma Assert para FileIOPermission e realizar operações de arquivo. A única maneira de proteger com segurança os recursos de código não confiável em assemblies referenciados é executar esse código com um conjunto de concessão não inclui essas permissões.

Consulte também

Conceitos

Permissões de acesso de código

Permissões de segurança baseada em função

Outros recursos

Conceitos chaves sobre segurança