Definição – O que significa Segurança de Acesso a Código (CAS)?
A segurança de acesso ao código (CAS) é um mecanismo de segurança pelo qual o common language runtime (CLR) do .NET framework pode restringir o código gerenciado para executar operações com um conjunto limitado de permissões.
O CAS reforça as políticas de segurança na estrutura .NET, evitando o acesso não autorizado a recursos e operações protegidos. Ao contrário dos métodos de segurança tradicionais, em que as credenciais do usuário são obtidas do usuário, o CAS foi projetado para resolver os problemas enfrentados ao obter código de fontes externas, que contêm bugs e vulnerabilidades. Esses bugs e vulnerabilidades podem tornar o sistema do usuário vulnerável a códigos maliciosos, que podem executar tarefas sem que o usuário saiba. O CAS realmente conhece e permite apenas as operações que o código de um determinado usuário pode ou não realizar. Este recurso é aplicável a todos os códigos gerenciados direcionados ao CLR.
O CAS fornece segurança baseada em evidências construída em uma camada acima da segurança fornecida pelo sistema operacional Windows. Enquanto o Windows é baseado nas permissões do usuário, o CAS é baseado na evidência do assembly. O assembly contém as permissões definidas na política de segurança e forma a base para permitir que o código execute as ações necessárias.
Definirtec explica Código de Segurança de Acesso (CAS)
O CAS é construído sobre os seguintes elementos, entre outros:
- Permissões: esses são os direitos básicos necessários para acessar um recurso protegido ou executar uma operação protegida.
- Conjunto de permissões: é um conjunto de permissões, como “confiança total”, “nada”, “Internet”, “intranet local” e outras.
- Grupo de código: este é um agrupamento lógico de código com uma condição especificada para associação, como LocalIntranet_zone e Internet_zone.
- Evidência: Esta é a informação relacionada ao assembly, como diretório do aplicativo, editor, URL e zona de segurança.
- Política de Segurança: Este é um conjunto de regras configuradas por um administrador para determinar as permissões concedidas a um código expresso hierarquicamente em quatro níveis como empresa, máquina, usuário e domínio do aplicativo.
A operação privilegiada de execução de código exige o CLR para uma ou mais permissões. A permissão real é calculada usando a união de permissões definidas nos grupos de código e, em seguida, uma interseção no nível da política. O CLR garante que as permissões exigidas estejam nas permissões concedidas do método desse assembly. Se a permissão não for concedida, uma exceção de segurança será lançada.
O CAS fornece dois modos de segurança para definir permissões para o código:
- A segurança declarativa é implementada definindo atributos de segurança no nível de montagem, nível de classe ou nível de membro. O modo declarativo é usado quando as chamadas precisam ser avaliadas em tempo de compilação.
- A segurança imperativa usa chamadas de método de tempo de execução para criar instâncias de classes de segurança. O modo imperativo é usado quando as chamadas precisam ser avaliadas em tempo de execução.
O CAS tem limitações, incluindo o mau funcionamento de um aplicativo movido para outro sistema quando a política de segurança é diferente. Além disso, não há controle sobre o código não gerenciado e nenhum controle do desenvolvimento de aplicativos para atender às necessidades de diferentes cenários de configurações de segurança nos sistemas do usuário.
Para usar com eficácia a tecnologia de segurança de baixa granularidade do CAS, os desenvolvedores devem escrever código de tipo seguro, usar sintaxe declarativa ou imperativa com base no contexto, solicitar permissões em tempo de execução para que o código seja executado e usar bibliotecas seguras.