Partilhar via


Atualizar a diretiva de segurança

Diretiva de segurança padrão não sabe sobre a existência de qualquer permissão personalizada. Por exemplo, o tudo o conjunto de permissões nomeadas contém todas as permissões de acesso a código interno que o runtime fornece, mas ele não inclui todas as permissões personalizadas. Para atualizar a diretiva de segurança para que ele sabe sobre suas permissões personalizadas, você deve fazer três coisas:

  • Verifique a diretiva atento a sua permissão personalizada.

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

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

Observação importanteImportante

No .NET Framework versão 4, o common language runtime (CLR) está se afastando fornecendo a diretiva de segurança de computadores.Microsoft recomenda o uso de diretivas de restrição de Software do Windows como um substituto para a diretiva de segurança do CLR.As informações neste tópico se aplica à.NET Framework versão 3.5 e anterior; não se aplica para o .NET Framework 4 e posterior.Para obter mais informações sobre esta e outras alterações, consulte Alterações de segurança na.NET Framework 4.

Tornando a diretiva atento a sua permissão personalizada

Para tornar a diretiva atento a sua permissão personalizada, você deve:

  • Crie um novo conjunto de permissão nomeada que inclui a permissão personalizada. (Você pode modificar um existente chamado-conjunto de permissões em vez de criar um novo).

  • Nomeie o conjunto de permissões.

  • Informe a diretiva de segurança que o conjunto de permissões nomeado existe.

Para obter mais informações, consulte Code Access Security Policy Tool (Caspol. exe) ou .NET Framework (Mscorcfg. exe). Você pode adicionar uma nova permissão definida em uma das várias maneiras. Usando a ferramenta de política de segurança de acesso de 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 para a diretiva de segurança no computador onde o código é executado. Usando o.NET Framework (Mscorcfg), 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ões.

Para garantir que sua representação XML é válida e representa corretamente a 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 sua permissão personalizada não implementa IUnrestrictedPermission, ou se não quiser definir a diretiva para conceder permissão ao seu em um estado irrestrito, use o construtor para inicializar sua permissão para o estado desejado para ter.

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 ter criado o arquivo. XML que contém o conjunto de permissões, 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 o Caspol. exe perguntar se você deseja adicionar o assembly que contém a sua permissão personalizada à lista de assemblies confiáveis, o tipo de Sim.

Para adicionar o arquivo. XML que contém a sua permissão definida usando o .Ferramenta de configuração do NET Framework, selecione o runtime Security Policy nó e selecione o nível de diretiva que você deseja modificar. Com o botão direito Conjuntos de permissões e selecione nova. Use o Assistente para adicionar o conjunto de permissões.

Adição do Assembly à lista de Assemblies confiáveis

Porque a sua permissão personalizada participará da.Sistema de segurança do NET Framework, ele deve ser totalmente confiável (como qualquer código que depende do sistema de segurança deve ser). Para obter confiança total do seu conjunto, adicionando-o à lista de assemblies confiáveis. Depois de ter adicionado o assembly da sua permissão personalizada para a lista usando Caspol. exe (conforme descrito anteriormente), você também deve adicionar todos os 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áveis, use o seguinte comando:

caspol -listfulltrust

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

Para adicionar um assembly à lista de assemblies totalmente confiáveis usando a .Ferramenta de configuração do NET Framework, com o botão direito do runtime Security Policy nó e selecione Assembly 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, você deve primeiro adicionar assemblies referenciados à lista de assemblies de confiança total. Objetos de segurança personalizado criados usando 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 assemblies de confiança total por padrão. Você deve adicionar o assembly apropriado à lista de confiança 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 - redefinir opção não irá reparar a segurança. Para reparar a segurança, você deve editar manualmente os arquivos de segurança para remover o objeto de segurança personalizado.

A configuração de diretiva para conceder a permissão personalizada

Você deve associar o seu novo conjunto com os grupos de código apropriado para que a diretiva de segurança concede a permissão personalizada para o código que deve tê-la de permissões. Fazer isso modificando um grupo de código existente ou adicionando um novo grupo de código 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 A diretiva de segurança. Use o seguinte Caspol. exe comando para fazer mypermissionset o conjunto de permissões concedidas ao código que atenda à condição de associação da LocalIntranet o grupo de código:

caspol -user -chggroup 1.2. mypermissionset

Neste exemplo, o rótulo de 1.2 representa o grupo 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 conjuntos de permissões, use o seguinte comando:

caspol -listpset

Para fazer mypermissionset o conjunto de permissões concedido aos membros da LocalIntranet código de grupo usando o .Ferramenta de configuração do NET Framework, selecione o runtime Security Policy nó e selecione o máquina diretiva. Com o botão direito do LocalIntranet_Zone nó e selecione Propriedades. Alterar a permissão definida usando o Conjunto de permissões guia.

Consulte também

Referência

Caspol. exe (Code Access Security Policy Tool)

Mscorcfg. msc (.NET Framework Configuration Tool)

IUnrestrictedPermission

Conceitos

Segurança de Acesso de código

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

.NET Framework diretiva de segurança