Partilhar via


Permissões de acesso ao código e segurança no .NET Framework com Visual Basic

No .NET Framework, a segurança de acesso de código limita o acesso que o código tem a recursos e operações protegidos.Todos os aplicativos que acessam o Common Language Runtime devem interagir em tempo de execução com o sistema de segurança.Quando um aplicativo é executado, ele é avaliado e é fornecido um conjunto de permissões em tempo de execução automaticamente.Dependendo das permissões que o aplicativo recebe, ele é executado corretamente ou gera uma exceção de segurança.

As configurações de segurança local em um computador específico basicamente controla quais permissões seu código recebe.Como essas configurações podem alterar de computador para computador, você nunca poderá ter certeza que seu código receberá permissões suficientes para executar.Para obter mais informações, consulte Noções Básicas sobre Segurança de Accesso a Código.

Permissões de Acesso ao Código

Os Objetos de permissão de acesso ao código são usados para proteger os recursos e operações do uso por usuários não autorizados.Eles são parte fundamental do mecanismo do Common Language Runtime para impor restrições de segurança no código gerenciado.

Permissões de acesso ao código permitem que um usuário acessem um recurso protegido, como um arquivo, ou executar uma ação protegida, tais como acessar código gerenciado.Todas as permissões de acesso ao código pode ser solicitado pelo código; Se as permissões são concedidas sim ou não é determinado em tempo de execução.Cada permissão de acesso ao código deriva do CodeAccessPermission classe e portanto permissões tem métodos comuns: Assert, Demand, Deny, PermitOnly, IsSubSetOf, Intersect, e Union.

Permissões fornecidas pelo .NET Framework

Esta tabela mostra as permissões de acesso a código providas pelo .NET Framework.

Classe da permissão

Permite

AspNetHostingPermission

Acesso aos recursos em ambientes hospedados ASP.NET.

DirectoryServicesPermission

Acesso a classes de System.DirectoryServices.

DnsPermission

Acesso aos servidores do sistema de nome de domínio (DNS) em uma rede.

EnvironmentPermission

Leitura ou Gravação para variáveis de ambiente.

EventLogPermission

Leitura ou gravação aos serviços de Log de eventos.

FileDialogPermission

Leitura ou gravação aos arquivos por meio de uma caixa de diálogo Open.

FileIOPermission

Leitura ou gravação a arquivos ou pastas.

IsolatedStorageFilePermission

Leitura ou gravação a arquivos ou pastas no armazenamento isolado.

MessageQueuePermission

Acesso a filas de mensagens através da interface de gerenciamento do enfileiramento (também conhecido como MSMQ).

OdbcPermission

Acessando a fontes de dados ODBC (Open Database Connectivity).

OleDbPermission

Acessar a bancos de dados usando OLE DB.

OraclePermission

Acessar a bancos de dados Oracle.

PerformanceCounterPermission

Acessando os contadores de desempenho.

PrintingPermission

Acessar impressoras.

ReflectionPermission

Determinando as informações sobre um tipo em tempo de execução.

RegistryPermission

Lendo do, gravação no, criando, ou excluindo chaves e valores de registro.

SecurityPermission

Executar, afirmar permissões, chamado em código não gerenciado, ignorando a verificação, e outros direitos relacionados a segurança.

ServiceControllerPermission

Acessando serviços em execução ou parados.

SocketPermission

Fazer ou aceitar conexões em um endereço de transporte.

SqlClientPermission

Acessar bancos de dados SQL.

UIPermission

Acessando funcionalidades da interface de usuário.

WebPermission

Fazer ou aceitar conexões em um endereço da Web.

Criando suas próprias permissões

O .NET Framework fornece um conjunto de classes para permissão de acesso ao código projetadas para ajudá-lo proteger um conjunto específico de recursos e operações, com enfoque sobre os recursos expostos pelo .NET Framework.Para a maioria dos ambientes, as permissões internas de acesso ao código são adequadas.Entretanto, em algumas situações, pode fazer sentido definir sua própria classe de permissão de acesso ao código.Para obter mais informações, consulte Criar suas próprias permissões de Acessar ao código.

Permissões de identidade

As permissões de identidade representam características que identificam um assembly.O common language runtime concede permissões de identidade em tempo de execução para um assembly quando ele for carregado, baseado nas informações obtidas sobre o assembly.Para obter mais informações, consulte Permissões de identidade.

Permissões baseadas em funções

Aplicativos comerciais geralmente fornecem acesso a dados ou recursos com base no credenciais fornecidas pelo usuário.Normalmente, esses aplicativos verificam a função de um usuário e fornecem acesso a recursos com base nessa função.O Common Language Runtime fornece o suporte para autorização baseada em função baseado em uma conta do Windows ou uma identidade personalizada.Para obter mais informações, consulte Segurança baseada em função.

Tarefas de segurança

A tabela a seguir lista as tarefas associadas à permissões e segurança.

Para

Consulte

Solicitar permissão para acessar código não gerenciado

Como: Solicitar Permissão para Acessar Código Não-Gerenciado

Solicitar permissões opcionais

Como: Solicitar permissões opcionais usando o sinalizador RequestOptional

Solicitar permissão de um conjunto de permissão nomeado

Como: Solicitar Permissão para um Conjunto de Permissões Nomeadas

Solicitar permissões codificadas em XML

Solicitando permissões codificado em XML

Recusar permissões

Como: Recusar permissões usando o sinalizador RequestRefuse

Executar uma verificação de imperativa de segurança

Como: Executar Verificações de Segurança Imperativas

Executar uma verificação declarativa de segurança

Executar verificações de segurança declarativa

Substituir uma verificação de segurança

Substituindo verificações de segurança

Compartilhar uma biblioteca com código parcialmente confiável

Compartilhamento uma biblioteca com código parcialmente confiável

Exigir confiança total para tipos em um assembly AllowPartiallyTrustedCallersAttribute

Necessidade de confiança Completo para tipos em um AllowPartiallyTrustedCallersAttribute Assembly

Criar objetos WindowsIdentity e WindowsPrincipal

Como: Criar um Objeto WindowsPrincipal

Criar objetos GenericPrincipal e GenericIdentity

Como: Criar Objetos GenericPrincipal e GenericIdentity

O modelo de diretiva de segurança no .Net Framework

Cinco elementos compõem o modelo de política de segurança no .NET Framework .Elas são:

  • Níveis de política de segurança: empresa, computador, usuário e domínio do aplicativo.

  • Grupos código que existe como uma hierarquia corporação, máquina, e usuário, dentro dos níveis de diretiva.

  • Conjuntos de permissões nomeadas e associadas com cada grupo de código.

  • Evidências que fornecem informações sobre a identidade do código.

  • Hosts do domínio do aplicativo que fornecem evidências sobre código para o Common Language Runtime.

Níveis de Diretiva de segurança

Quatro níveis de política de segurança são fornecidos pelo .NET Framework para calcular a concessão de permissão de um domínio de aplicativo ou assembly.Cada nível contém sua própria hierarquia de grupos de código e conjuntos de permissões.Em tempo de execução se calcula o conjunto de permissões permitidas, com a soma das permissões permitidas por todos os níveis de participação em cada diretiva

Os níveis são:

  • Diretiva corporativa.Se aplica a todo o código gerenciado em uma configuração de corporação onde um arquivo de configuração de corporação é distribuído.

  • Diretiva da máquina.Se aplica a todo o código gerenciado em um computador.

  • Diretiva de usuário.Se aplica ao código em todos os processos associado ao usuário atual do sistema operacional quando inicia o Common Language Runtime.

  • Aplicativo Diretiva de domínio.Se aplica ao código gerenciado no domínio do aplicativo do host.

Para obter mais informações, consulte Níveis de Diretiva de segurança.

Grupos de código

Um grupo de códigos é um agrupamento lógico de código que tem uma condição especificada para a associação.Qualquer código que atenda a condição de associação está incluído no grupo.Grupos código são associados a conjuntos de permissões que são avaliados durante a concessão de uma diretiva.Para obter mais informações, consulte Grupos de código.

O Conjunto de permissão nomeada

Um conjunto permissão nomeada é um conjunto de permissões que administradores podem associar a um grupo de códigos.Um conjunto de permissões nomeadas consiste de pelo menos uma permissão, bem como um nome e descrição para o conjunto.Mais um grupo de códigos podem ser associados a um conjunto de permissões específicas.

Esta tabela mostra os conjuntos nomeados de permissões fornecidas pelo Common Language Runtime.

Nome

Descrição

Nothing

Nenhuma permissão (o código não pode ser executado).

Execution

Permissão para executar, mas nenhuma permissão para usar recursos protegidos.

Internet

Permissão de diretiva padrão definida adequada ao conteúdo de origem desconhecida.

Local Intranet

Padrão de permissão diretiva definida em uma corporação.

Everything

Todos os padrões de permissões (internas), exceto a permissão para ignorar a verificação.

FullTrust

Acesso total a todos os recursos.

Para obter mais informações, consulte O Conjunto de permissão nomeada.

Evidência

A evidência é a informação que o Common Language Runtime usa para tomar decisões com base em política de segurança.As evidências indicam em tempo de execução que código tem uma característica específica e pode incluir o diretório de aplicativo, o publisher, o site, e a URL.Para obter mais informações, consulte Evidência.

Host de domínio do aplicativo

Cada aplicativo do .NET Framework é executado em um domínio de aplicação sob o controle de um host que cria o domínio do aplicativo e carrega os assemblies nele.Os domínios de aplicativo podem incluir:

  • Hosts navegador.Executar o código dentro do contexto de um site da Web.

  • Hosts personalizados.Criar domínios e carregar módulos (assemblies) para domínios, incluindo montagens dinâmicas.

  • Servidor de Hosts. Executar o código que manipula as solicitações enviadas a um servidor.

  • Shell hosts.Inicia os aplicativos (arquivos.exe) do shell.

Esta tabela lista as tarefas associadas aos domínios de um aplicativo:

Para

Consulte

Criar um domínio de aplicativo

Como: Criar um domínio de aplicativo

Definir a política de segurança a nível do domínio da aplicação

Diretiva de segurança Configuração aplicativo nível do domínio

Configurar um domínio do aplicativo

Como: Configurar um domínio de aplicativo

Chamar funções em um domínio de aplicativo específico

Chamar funções em um domínio de aplicativo específico

Recuperar informações de instalação de um domínio de aplicativo

Recuperando Informações de Configuração de um Domínio de Aplicativo

Descarregar um domínio de aplicativo

Como: Descarregar um domínio de aplicativo

Para obter mais informações, consulte AppDomain, Hosts do domínio de aplicativo, e Programação com domínios de aplicativo.

Consulte também

Tarefas

Solucionando problemas de exceções de segurança de Acessar de código

Conceitos

Isolamento por usuário, domínio e conjunto de módulos (assembly)

Outros recursos

Configurando a diretiva de segurança usando a ferramenta de configuração do .NET Framework (Mscorcfg.msc)

Configurando a diretiva de segurança usando o código Acessar Security Policy Tool (Caspol.exe)