Atualização de diretiva de segurança

Diretiva de segurança padrão não sabe sobre a existência de qualquer permissão personalizada.Por exemplo, a Tudo chamado permissão conjunto contém todos os códigos internos acessar permissão s que o tempo de execução fornece mas ele não inclui quaisquer s permissão personalizado.Para atualizar diretiva de segurança de modo que ele sabe sobre seu personalizado permissão, você deve fazer três coisas:

  • Tornar diretiva atento a sua permissão personalizada.

  • Adicionar o assembly à lista de assemblies confiáveis.

  • Informe diretiva de segurança que o código deve ser concedido a permissão personalizada.

Tornando diretiva reconhecimento da sua permissão personalizada

Para conscientizar política de permissão personalizada, você deve:

  • Crie um novo conjunto de permissão nomeadas que inclui a permissão personalizada.(Você pode modificar uma existente chamado-definição de permissão em vez de criar um novo.)

  • Dar o permissão conjunto um nome.

  • Informar a diretiva de segurança que a chamada-permissão existe um conjunto.

Para obter mais informações, consulte Código acesso diretiva de segurança Tool (Caspol.exe) or Ferramenta de configuração do .NET estrutura (Mscorcfg.msc).Você pode adicionar um novo conjunto de várias maneiras de permissões.Usando a ferramenta de política de segurança de acesso do código (Caspol.exe), você pode criar um arquivo .xml que contém uma representação XML de um conjunto de permissão personalizada e adicionar esse arquivo com a diretiva de segurança no computador onde o código é executado.Usando a ferramenta de configuração do .NET estrutura (Mscorcfg.msc), você pode copiar um conjunto de permissão existente e adicionar uma representação XML de uma permissão para o novo conjunto de permissão.

Para garantir que sua representação XML é válida e corretamente representa sua permissão, você pode gerar usando código semelhante ao exemplo a seguir.Observe que esse código cria uma permissão personalizada chamada MyCustomPermission, inicializada para o estado irrestrito. Se a permissão personalizada não implementa IUnrestrictedPermission, ou se desejar conjunto diretiva de permissão em um estado irrestrito, use o construtor para inicializar sua permissão para o estado em que você deseja que ele tem.

Imports System
Imports System.IO
Imports System.Security
Imports System.Security.Permissions

Class PSetXML
   Public Shared Sub Main()
      Dim perm As New MyCustomPermission(PermissionState.Unrestricted)
      Dim pset As New NamedPermissionSet("MyPermissionSet", PermissionState.None)
      pset.Description = "Permission set containing my custom permission"
      pset.AddPermission(perm)
      Dim file As New StreamWriter("mypermissionset.xml")
      file.Write(pset.ToXml())
      file.Close()
   End Sub
End Class
using System;
using System.IO;
using System.Security;
using System.Security.Permissions;

class PSetXML {
   public static void Main() 
   {
   MyCustomPermission perm = 
    new MyCustomPermission(PermissionState.Unrestricted);
   NamedPermissionSet pset = 
    new NamedPermissionSet("MyPermissionSet", PermissionState.None);
   pset.Description = "Permission set containing my custom permission";
   pset.AddPermission(perm);
   StreamWriter file = new StreamWriter("mypermissionset.xml");
   file.Write(pset.ToXml());
   file.Close();
   }
}

Após você ter criado o arquivo .xml que contém sua permissão conjunto, você pode adicioná-lo à diretiva de segurança.Para usar Caspol.exe, digite o seguinte na linha de comando:

caspol –machine –addpset mypermissionset.xml

Quando Caspol.exe perguntar se você deseja adicionar o assembly que contém a sua permissão personalizada à lista de assemblies confiáveis, digite Sim.

Para adicionar o arquivo .xml que contém sua permissão conjunto usando o Ferramenta de configuração do .NET estrutura, selecionar o Diretiva de segurança do Common Language tempo de execução nó e, em seguida, selecionar o nível de diretiva que deseja modificar.clicar com o botão direito do mouse em Conjuntos de permissão e selecionar Novo.Use o Assistente para adicionar a permissão conjunto.

Adicionando o conjunto à lista de assemblies confiáveis

sistema autônomo sua permissão personalizada participarão o sistema de segurança do .NET estrutura, ele deve ser totalmente confiável (sistema autônomo qualquer código que depende do sistema de segurança deve ser).Você pode obter confiança total para o assembly adicionando-a lista de assemblies confiáveis.Depois que você adicionou assembly a permissão personalizada à lista usando Caspol.exe (conforme descrito anteriormente), também será necessário adicionar todos sistema autônomo assemblies que faz referência a sua classe de permissão.Para adicionar assemblies adicionais à lista usando Caspol.exe, digite o seguinte na linha de comando:

caspol -addfulltrust mypermissionset.dll

Para exibir a lista de assemblies totalmente confiável, use o seguinte comando:

caspol -listfulltrust

Como assembly a permissão personalizada (e todos os assemblies que faz referência a) serão totalmente confiável pelo sistema de segurança, é importante que os arquivos ser assinado com um nome criptograficamente forte.Caspol.exe não adicionará um assembly à lista de certificados confiáveis total se não tiver um nome forte.

Adicionar um assembly à lista de assemblies totalmente confiável usando o Ferramenta de configuração do .NET estrutura, clicar com o botão direito do mouse o Diretiva de segurança do Common Language tempo de execução nó e selecionar Assembly de confiança.Use o Assistente para o assembly de confiança.

Cuidado Se o assembly que implementa o objeto de segurança personalizado faz referência a outros assemblies, primeiro você deve adicionar assemblies referenciados à lista de assemblies confiança total.Objetos de segurança personalizado criados usando o Visual Basic, Visual C++ ou JScript, referência Microsoft.VisualBasic.dll, Microsoft.VisualC.dll ou Microsoft.JScript.dll, respectivamente.Esses assemblies não estão na lista de assembly confiança total por padrão.Você deve adicionar o assembly apropriado para a lista de certificados confiáveis total antes de adicionar um objeto de segurança personalizado.Falha ao fazer isso interromperá o sistema de segurança, fazendo com que todos os assemblies Falha ao carregar.Nessa situação, o Caspol.exe -all - reiniciar opção não irá reparar segurança.Para reparar a segurança, você deve edição manualmente os arquivos de segurança para remover o objeto de segurança personalizado.

Configurar a diretiva para conceder a permissão personalizada

Você deve associar o novo conjunto com os grupos de código apropriado para que a diretiva de segurança irá conceder a permissão personalizada para o código que deve tê-lo de permissões.Você fazer isso modificando um agrupar de código existente ou adicionando um novo agrupar de códigos que identifica o conjunto de código que deve ser concedido a permissão personalizada.Para obter mais informações sobre grupos de códigos, consulte Diretiva de segurança.Use o seguinte Caspol.exe comando fazermypermissionset o permissão concedido definida como código que atenda à condição de associação da LocalIntranet o agrupar de códigos:

caspol -user -chggroup 1.2. mypermissionset

Neste exemplo, o rótulo 1.2 representa o agrupar de códigos LocalIntranet.Para exibir todos os grupos de código e seus rótulos associados, use o seguinte comando:

caspol -list

Para exibir a lista de permissão conjuntos, use o seguinte comando:

caspol -listpset

Para tornar mypermissionset o conjunto de permissões concedido a membros das LocalIntranet código de agrupar usando o Ferramenta de configuração do .NET estrutura, selecionar o Diretiva de segurança do Common Language tempo de execução nó e, em seguida, selecionar o computador diretiva.clicar com o botão direito do mouse o LocalIntranet_Zone nó e selecionar Propriedades.Alterar a permissão definida usando o Conjunto de permissão guia.

Consulte também

Conceitos

Criando suas próprias permissões de acesso ao código

Política de segurança

Referência

Código Acessar Segurança Policy Tool (Caspol.exe)

Ferramenta de configuração do .NET framework (Mscorcfg.msc)

IUnrestrictedPermission

Outros recursos

Segurança de Acesso de código