Implementando Segurança de Acesso ao Código no .Net

Segue abaixo um artigo que comecei a escrever em resposta ao seguinte post:
http://forums.microsoft.com/msdn-br/ShowPost.aspx?postid=565879&siteid=21
e no fim nunca terminei.
Quem quiser ajudar a terminar me escreva que eu compartilho no GoogleDocs.

Implementando Segurança de Acesso ao Código

Segurança de Aceso ao Código, ou simplemente CAS (Code Access Security), é um sistema de segurança que permite administradores e desenvolvedores controlar o acesso das aplicações similarmente como fazem para controlar o acesso dos usuários. O CAS está para as aplicações assim como o role-based security (RBS) está para os usuários. CAS é algo muito grande para ser abordado apenas em um artigo, então aqui tentarei dar uma breve introdução de como ele funciona e como colocar em prática. Para uma abordagem mais profunda acesse:
http://msdn2.microsoft.com/en-us/library/930b76w0(VS.80).aspx

Com o CAS, você pode permitir uma aplicação ler ou gravar no registro enquanto restringe esse acesso a outras aplicações. Mas há um porém, o CAS não pode se sobresair às permissões do usuário (fornecidas pelo RBS). Por exemplo, se o usuário não tem permissão para acessar determinado recurso, a aplicação que o usuário executar também não terá.

Como o CAS você divide as aplicações em 2 grupos:
  • Parcialmente Confiável: A aplicação poderá executar com determinadas permissões, mas sempre verificando se ele tem acesso a determinado recurso.
  • Completamente Confiável: A aplicação não passará por verificação de segurança e poderá acessar todos os recursos que o SO permitir.

As permissões de uma aplicação são determinadas através do que é chamado de Evidência, que nada mais é que dados que identificam a aplicação. Alguns exemplos de evidência da aplicação são o local de onde está sendo executado e seu hash (calculado pelo .Net e que é único para cada versão da aplicação). Baseado na Evidência o .Net enquadra a aplicação em um Grupo de Código. Cada Grupo de Código estará atribuido a um conjunto de permissões, então assim será determinado o que a aplicação pode acessar. Os Grupos de Códigos e os conjuntos de permissões já vêm previamente configurados no .Net e podem ser customizados através da ferramenta de configuração do .Net localizado nas Ferramentas Administrativas do computador.

Comentários

koiti disse…
tipo... pelo post que você escreveu deixou a entender que com o CAS é possível proteger DLL de "usos indevidos (leia-se: ter acesso ao código fonte, fazer engenharia reversa, etc.)" o que não é verdade...
não sei se foi essa a intenção, mas o CAS não tem nada a ver com acesso ao código fonte que você cria através do .NET mas sim com permissões de acesso entre aplicações...
um exemplo disso é quando você cria um método private, teoricamente ele não pode ser acessado por classes externas, mas através de reflection eu consigo invocar esse método normalmente... o que pode ser evitado através do CAS

Postagens mais visitadas