Segurança do IIS e do .NET Framework

Windows Server AppFabric usa os recursos de segurança eficientes do IIS e o .NET Framework versão 4 para proteger os serviços do .NET Framework 4 armazenados em Serviço de Ativação de Processos do Windows (WAS). Para ajudar você a entender como configurar corretamente a segurança do AppFabric, é importante entender as opções de segurança no IIS e .NET Framework.

Em geral, há muitas camadas de opções de segurança disponíveis e você deve utilizar as mais adequadas à sua implantação. Cada camada de segurança oferece a capacidade de proteger recursos específicos. Por exemplo, as ferramentas no IIS geralmente oferecem os meios de proteger artefatos do IIS como sites e aplicativos, enquanto as definições de segurança do .NET Framework 4 podem ser aplicadas aos conceitos do serviço do WCF/WF como serviços, pontos de extremidade e operações.

Para obter informações sobre segurança, consulte Windows Communication Foundation Security (https://go.microsoft.com/fwlink/?LinkId=183157) e IIS Security (https://go.microsoft.com/fwlink/?LinkId=183159).

IIS Security e AppFabric

O IIS afeta a segurança de um aplicativo do lado do cliente solicitante e também quando o serviço de .NET Framework acessa os repositórios de dados do monitoramento e da persistência. O IIS afeta a segurança do AppFabric nas seguintes áreas:

  • IIS_IUSRS. O grupo de segurança do Windows usado para gerenciar o acesso do tempo de execução a pastas na instalação padrão do IIS.

    securitySegurança Observação
    Não confunda o grupo de segurança da Windows IIS_IUSRS com o nome de login do SQL Server IIS_IUSRS. Eles estão relacionados, mas são entidades distintas.

  • Identidade de pool de aplicativos. O IIS insere dinamicamente todas as identidades do pool de aplicativos no grupo IIS_IUSRS no tempo de execução. Esse grupo de segurança recebe permissão para acessar os repositórios de dados necessários, principalmente o repositório de dados da persistência. Para obter mais informações, consulte Segurança do SQL Server.

.NET Framework Security para AppFabric

Quando discutimos a segurança para serviços do .NET Framework configurados em AppFabric, estamos na verdade nos referindo a WCF. WCF define o protocolo de transporte usado para se comunicar entre um cliente WCF e um serviço .NET Framework (WCF ou WF). É parte do .NET Framework, que oferece um modelo de programação unificado para criar rapidamente aplicativos voltados ao serviço que se comunicam pela Web e pela empresa. O WCF não só se integra com infraestruturas existentes, mas também estende a segurança distribuída para além dos domínios apenas com Windows, usando mensagens de SOAP seguras. Para obter mais informações, consulte Windows Communication Foundation Security (https://go.microsoft.com/fwlink/?LinkId=183157) e Arquitetura da segurança (https://go.microsoft.com/fwlink/?LinkId=183160).

Combinando segurança de IIS e .NET Framework

É importante para a integridade de um aplicativo garantir que uma mensagem enviada ao serviço não seja exibida ou modificada durante o processo de transferência. É possível fazer isso usando a criptografia e assinatura. Mas a transferência de mensagem será realmente segura somente se você também puder validar ou autenticar com certeza completa a identidade do aplicativo cliente de chamada. No AppFabric, é importante entender como o IIS e WCF trabalham juntos para garantir que isso ocorra.

Para obter mais informações sobre padrões e práticas a respeito da segurança de serviços da Web, consulte Padrões & Práticas: Guia de Aprimoramento de Segurança dos Serviços da Web (https://go.microsoft.com/fwlink/?LinkId=183161).

Autenticação do IIS no AppFabric

Os mecanismos de segurança de transporte do WCF no Windows dependem do vínculo e do transporte subsequente que está sendo usado. Por exemplo, ao usar a classe WSHttpBinding, o transporte é HTTP e o mecanismo primário para a segurança do transporte é SSL (Secure Sockets Layer) sobre HTTP, comumente reconhecido como HTTPS.   A segurança da mensagem usa a especificação WS-Security para garantir a segurança das mensagens no nível da mensagem. Isso transmite os aprimoramentos para as mensagens de SOAP, a fim de garantir a confidencialidade, a integridade e a autenticação no nível da mensagem de SOAP (em vez de ser no nível do transporte).

Modos de serviço hospedados

Serviços hospedados podem ser executados de duas maneiras: Modo de transportes mistos ou Modo de compatibilidade ASP.NET O modo é controlado por um sinalizador de configuração no nível do aplicativo aspNetCompatibilityEnabled. Também é possível obter esse sinalizador no tempo de execução da propriedade estática ServiceHostingEnvironment.AspNetCompatibilityEnabled. O sinalizador aspNetCompatibilityEnabled é false por padrão e, portanto, os serviços são executados no Modo de Transportes Misto, a menos que você altere explicitamente essa definição.

<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="false"/>
</system.serviceModel>

Modo de Transportes Mistos

No modo de Transportes Mistos, o módulo do HTTP intercepta a solicitação no primeiro estágio do pipeline: BeginRequest. Quando a solicitação ocorre, O módulo HTTP define HttpContext.Current como nulo e reverte a representação quando o thread é representado. Como a solicitação do cliente é interceptada nesse nível inicial, outros recursos do HTTP são desabilitados automaticamente. Portanto, ao executar no Modo de Transportes Mistos, os serviços não possuem acesso aos seguintes recursos específicos de HTTP do ASP.NET.

  • HttpContext.Current. Isso é sempre nulo nesse modo. WCF oferece um recurso similar: OperationContext.Current.

  • Autorização de arquivo/URL. Esse recurso de autorização da camada de transporte é normalmente habilitado na seção <system.web/authorization> do arquivo Web.config para serviços ASMX. A autorização de transporte é desabilitada no modo misto em WCF. Sua única opção para realizar a autorização do arquivo/URL é usar a autorização no nível da mensagem implementada no WCF.

  • Representação. A representação permite que o serviço atue como o cliente enquanto realiza uma ação no servidor. O recurso de representação do ASP.NET é normalmente habilitado na seção <system.web/identity> do arquivo Web.config para serviços ASMX. Não está disponível na camada de transporte do WCF no modo misto.

  • Estado de sessão. O estado de sessão do ASP.NET não é suportado no modo misto. WCF possui sua própria implementação de sessão, que oferece o gerenciamento de estado da sessão flexível. O maior problema para WCF é que o estado da sessão não sobrevive na reciclagem do aplicativo e não funciona em Web gardens ou Web farms. Isso ocorre porque não há um mecanismo para compartilhar o estado entre aplicativos ou processos, diferentemente do serviço de estado ASP.NET (desabilitado).

  • Outros recursos de HTTP. Outros recursos de HTTP contam com HttpContext.Current e não são suportados no modo misto. Por exemplo, não é possível esperar para receber o resultado correto de ConfigurationManager.AppSettings. O recurso de globalização em <system.web/globalization> não está disponível.

A autenticação do IIS é ignorada nas chamadas do WCF nos serviços do .NET Framework ao executar no Modo de Transportes Mistos. Isso deixa a segurança do WCF como o mecanismo principal para autenticar e assegurar a transferência de mensagens entre o cliente WCF e o serviço do .NET Framework.  No Modo de Transportes Mistos, todos os transportes são tratados da mesma maneira. Um serviço pode ter diversos pontos de extremidade do WCF e podem ouvir o mesmo ou diferentes transportes como HTTP, net.tcp, net.pipe, net.msmq, etc.  No entanto, serviços hospedados em execução no Modo de Transportes Mistos ainda contam com ASP.NET e IIS para oferecer o ambiente de host, a configuração do aplicativo e a implantação.

Modo de compatibilidade do ASP.NET

Para usar a autenticação do IIS em qualquer aplicativo hospedado por WAS, incluindo qualquer aplicativo hospedado no AppFabric, é necessário usar o Modo de compatibilidade do ASP e segurança do Transporte do WCF.  É possível aproveitar os seguintes recursos de segurança do IIS apenas usando o Modo de compatibilidade do ASP:

  • Controle quais usuários do Windows e quais membros de quais grupos do Windows podem se conectar a um site ou aplicativo que hospede serviços que usam o Gerenciador de IIS.

  • Converta um site em um diretório virtual de IIS e depois defina as configurações de segurança para o caminho físico do diretório virtual de duas maneiras. A autenticação de passagem diz ao IIS para passar para o sistema de arquivos do Windows as credenciais do usuário autenticado quando acessar o caminho físico do diretório virtual.  Como alternativa, é possível designar a identidade de um usuário específico para o processo que hospeda seus serviços do .NET Framework, a fim de acessar todo o conteúdo no caminho físico especificado. 

  • Selecione o método de autenticação de IIS adequado (Anônimo, Básico, Formas, Síntese, Autenticação do Windows ou representação de formas ASP.NET) para controlar a segurança para chamadas nos serviços associados ao site.

É possível aproveitar os seguintes recursos de segurança de IIS, independentemente de o Modo de compatibilidade do ASP estar ou não habilitado:

  • Configurar as definições de SSL para usar a criptografia de 64 ou 128 bits e configurar o modo de tratamento de certificados do cliente para solicitações de entrada.

  • Criar regras de autorização para permitir ou negar o acesse do usuário a sites ou aplicativos.

  • Usar os recursos de login do IIS para criar uma auditoria de segurança de solicitações de entrada.

  • Editar as cadeias de conexão a respeito da segurança nos bancos de dados de monitoramento e de persistência.

  • Gerenciar definições de vínculo para clientes solicitando serviços.

  • Configurar as permissões de execução no nível do arquivo (controle total, ler e executar, listar conteúdo do arquivo, gravar e assim por diante) no site ou em seus aplicativos de serviço.

  • Alterar a identidade padrão do NetworkService de um pool de aplicativos personalizado para uma identidade específica em que ela possa ser executada. No SQL Server, essa é a identidade usada para realizar chamadas para o SQL Server.

Para obter mais informações, consulte WCF Services e ASP.NET (https://go.microsoft.com/fwlink/?LinkId=183163).

Orientação de autenticação

Para habilitar a autenticação do IIS para um aplicativo:

  • Use o Modo de compatibilidade do ASP

  • Use um vínculo do WCF com base em HTTP, que suporte o modo de segurança do transporte (basicHttpBinding, wsHttpBinding e wsFederationHttpBinding)

Depois que esses requisitos forem atendidos, configure o IIS e o serviço do .NET Framework hospedado para usar o IIS compatível e as definições de segurança do WCF.  Configure as diversas definições de segurança do aplicativo para corresponder à segurança e vínculos de todos os seus serviços.  Especificar um esquema diferente causará um erro de ativação do serviço do WCF. Os modos de segurança no WCF (nesse caso, modo de segurança do transporte) são especificados nos elementos de vínculo.  Eles devem suportar a autenticação; portanto, certifique-se de que as definições de segurança do WCF que você selecionou sejam compatíveis com as definições do IIS.  O transporte será mapeado para a autenticação do WCF configurada para o vínculo. O serviço controla o modo de autenticação por meio da configuração de vínculo; o cliente do WCF deve estar em conformidade com isso no seu arquivo de configuração. O cliente deve ser configurado para oferecer o formulário adequado das credenciais do cliente, a fim de suportar o esquema de autenticação oferecido pelo serviço.  Como o AppFabric não oferece um elemento de interface de usuário para realizar esses tipos de alteração, é necessário fazer isso manualmente no arquivo Web.config aplicável.

securitySegurança Observação
wsDualHttpBinding suporta apenas a segurança com base em mensagens; portanto, não será possível usá-lo se estiver usando a autenticação IIS em seus serviços.

  2011-12-05