. NET 2.0 Code Access Security

Por Claudio Ulisse
18/03/2008 – 17:57

A ideia principal do CAS é que a confiança de uma aplicação depende da identidade dos componentes que são usados. Por exemplo se a origem de um software é uma fonte confiável, tipo um componente shrink-wrapped instalado pelo usuário, todo aquele que sará verificado em runtime terá as permissões do usuário e poderá fazer ações definidas por essas permissões. Se a fonte do software é parcialmente confiável ou desconhecida, poderão ser adicionadas restrições ao código. Você poderia querer que rode na sua maquina um código com determinadas permissões, que faça parte de uma determinada categoria,e que não rode código procedente de outras categorias. O CAS engine é a resposta do .NET Framework a essas exigências. Muitas vezes a adoção do CAS no código pode gerar mau estar entre desenvolvedores por sem um sub-Framework bastante complexo e rico de classes.

Para começar é útil saber os conceitos básicos que estão por trás do CAS:

  • Evidence(System.Security.Policy namespace): Objeto que representa a origem e a identidade do componente, informa Quem, Onde e Como verificar. As classes valores Publisher e StrongName indicam de quem está vindo o código. Zone, Site, Url, GacInstalled, e ApplicationDirectory, dizem de onde. Hash, serve como prova anti-adulteração, comprova a genuinidade do código. A CLR é em grau de construir uma instância Evidence com os devidos detalhes de uma parte de código, acessando a Assembly.Evidence property. Se um cogido é carregado com tipo ThirdPartyCode , pode ser acessada a Evidence via typeof(ThirdPartyCode).Assembly.Evidence .

  • Code Group: è um grupo de códigos logicamente ordenados em categorias baseadas na Evidence de cada codigo e que tem carateisticas em comum.

  • Permission(System.Security.Permissions namespace): è um nível de privilegio que pode ser cedido e negado pela CAS. Um permissão é uma instância que deriva de System.Security.IPermission e tem outros tipos quais:FileIOPermission, ReflectionPermission, and RegistryPermission. Permite ao código de requerer ou configurar permissões para rodar em determinados ambientes.

  • Permission Set: um conjunto de permissions logicamente reunidas e que podem ser aplicadas ou removidas em grupo. Cada permissão desse grupo pode ter opções diferentes.

  • Policy: o um conjunto de regras definidas por administradores que definem como os componentes CAS deverão se relacionar,por exemplo é o conjunto de permissões que devem ser aplicadas em um conjunto de maquinas e em quais partes de código vão interferir, qual a politica de acesso a um código, que tipo de membros, procedentes de qual meio(intranet,internet…).

O CAS verifica as permissões e as politicas percorrendo a stack e comparando as permissões requeridas por cada chamador e as permissões que o código chamado possui. Se tiver algum código que não corresponde ás necessidades do chamador então é disparada uma security exception e o acesso é recusado.Por enquanto essas são as ideias principais que sustentam o CAS. È um sistema bem eficiente mesmo sendo complexo…afinal nada é perfeito :)
Abçs

Claudio Ulisse

You must be logged in to post a comment.

Creative Commons License
Esta obra está licenciada sob uma Licença Creative Commons.