Segurança asp.net

19
egurança 4 de 4 pessoas classificaram isso como útil - Avalie este tópico Desenvolvimento de software no Visual Studio .NET sem privilégios administrativos Lars Bergstrom Equipe principal do Visual Studio Microsoft Corporation Dezembro de 2003 Resumo: Os membros do grupo Administradores locais têm privilégios para executar qualquer ação em um computador. Isto se apresenta como um risco, tanto para o usuário que estiver executando as ações naquele ambiente como para o software que ele estiver desenvolvendo. Este artigo explica como desenvolver software de maneira produtiva estando logado sem privilégios administrativos. Aplica-se a: Microsoft® Windows® XP e a família Microsoft Windows Server 2003 Unidades de disco com sistema de arquivos NTFS Microsoft Visual Studio® .NET Introdução Segurança é importante. Ninguém tem dúvidas quanto a isso e todos passam um bom tempo pensando sobre problemas de segurança, bugs de segurança e usuários maliciosos. Contudo, poucos estão dispostos a esforçar-se para erradicar o principal motivo pelo qual vírus e cracks de e-mail em geral são tão perigosos: todos se conectam como um usuário membro do grupo Administrador local e a maioria dos serviços são executados como administradores. O princípio do "privilégio mínimo" afirma que trabalhar com o mínimo de direitos necessários para executar uma ação minimiza os danos quando algo ruim acontece, seja devido a um anexo danificado em um e-mail recebido pelo Outlook ou um serviço que apresenta um risco de segurança. Executando programas sem privilégios administrativos, sempre que possível, você garante um ambiente mais seguro. Normalmente, os softwares disponíveis atualmente exigem privilégios elevados para que funcionem corretamente. Para livrarem-se desse

Transcript of Segurança asp.net

Page 1: Segurança asp.net

egurança4 de 4 pessoas classificaram isso como útil - Avalie este tópico

Desenvolvimento de software no Visual Studio .NET sem privilégios administrativos

Lars Bergstrom

Equipe principal do Visual Studio

Microsoft Corporation

Dezembro de 2003

Resumo: Os membros do grupo Administradores locais têm privilégios para executar qualquer ação em um computador. Isto se apresenta como um risco, tanto para o usuário que estiver executando as ações naquele ambiente como para o software que ele estiver desenvolvendo. Este artigo explica como desenvolver software de maneira produtiva estando logado sem privilégios administrativos.

Aplica-se a:

Microsoft® Windows® XP e a família Microsoft Windows Server 2003 Unidades de disco com sistema de arquivos NTFS Microsoft Visual Studio® .NET

Introdução

Segurança é importante. Ninguém tem dúvidas quanto a isso e todos passam um bom tempo pensando sobre problemas de segurança, bugs de segurança e usuários maliciosos. Contudo, poucos estão dispostos a esforçar-se para erradicar o principal motivo pelo qual vírus e cracks de e-mail em geral são tão perigosos: todos se conectam como um usuário membro do grupo Administrador local e a maioria dos serviços são executados como administradores. O princípio do "privilégio mínimo" afirma que trabalhar com o mínimo de direitos necessários para executar uma ação minimiza os danos quando algo ruim acontece, seja devido a um anexo danificado em um e-mail recebido pelo Outlook ou um serviço que apresenta um risco de segurança. Executando programas sem privilégios administrativos, sempre que possível, você garante um ambiente mais seguro.

Normalmente, os softwares disponíveis atualmente exigem privilégios elevados para que funcionem corretamente. Para livrarem-se desse problema, os desenvolvedores devem dar o primeiro passo e deixar de executar as tarefas como administradores. Assim, se todos nós sempre nos logarmos, desenvolvermos e testarmos os aplicativos como usuários não administrativos, os softwares que produzirmos terão mais chances de serem executados sem as exigências artificiais dos privilégios elevados. Até que os desenvolvedores corrijam os softwares que criam e distribuem, os usuários também nunca poderão trabalhar em um ambiente seguro!

Participação no grupo e permissões para a conta de login

Page 2: Segurança asp.net

Tarefas como registro global, instalação de novos aplicativos e reconfiguração de dispositivos, exigem privilégios administrativos. A menos que um administrador gerencie seu computador em tempo integral, você deverá ter uma conta administrativa para executar essas tarefas.

De agora em diante, parte-se do pressuposto de que essa conta de usuário será chamada de 'Administrador' e que estará no computador local, ao invés de uma conta de domínio. Contudo, o usuário poderá, da mesma maneira, ser chamado de 'root' (raiz), desde que seja membro do grupo Administradores do computador local. Parte-se também do pressuposto de que você esteja trabalhando em um domínio Windows e que seu login principal seja uma conta nesse domínio, no formato DOMÍNIO\nome_de_usuário; contudo, isso não é uma exigência e ambas as contas poderiam estar no mesmo computador.

Alteração do status da conta

Após confirmar que você ainda possui acesso a uma conta administrativa, vá até o Gerenciador de usuários, remova sua conta de usuários do grupo Administradores e, em seguida, adicione-a ao grupo Usuários e a quaisquer outros grupos com privilégios reduzidos que forem apropriados. Para adicionar sua conta de usuário ao grupo Usuários, você deve antes iniciar o Microsoft Management Console (MMC) e o snap-in de gerenciamento de usuário.

Nota:   Na maioria das configurações de rede, o grupo Usuários do domínio já é membro do grupo Usuários local, assim sua conta de domínio já estará no grupo Usuários local.

Como usar o Microsoft Management Console

Clique com o botão direito em Meu computador e selecione Gerenciar.

—ou—

No menu Iniciar, selecione Executar e, em seguida, digite lusrmgr.msc.

Agora você está pronto para adicionar sua conta ao grupo Usuários.

Inclusão de sua conta em grupos com privilégios reduzidos

1. Confirme se a conta que será usada como seu login principal no futuro não faz parte do grupo Usuários avançados.

O grupo Usuários avançados é, na prática, o grupo Administradores, porque, por padrão, possui acesso de gravação nos diretórios HKLM\Software e Arquivos de programas.

a. Sob o nó Usuários e grupos locais, selecione a pasta Grupos.b. Clique duas vezes no grupo Usuários avançados.c. Se a sua conta, ou um grupo que contiver sua conta, estiver

relacionada na caixa de listagem Membros, selecione essa entrada.d. Selecione Remover.

Page 3: Segurança asp.net

2. Acrescente a conta ao grupo Usuários.3. Acrescente a conta ao grupo Usuários de depuração (Debugger Users).4. Remova a conta do grupo Administradores.5. Adicione a conta a qualquer outro grupo apropriado, de acordo com a tabela

a seguir:

Se você:

Usar Terminal Services para se conectar ao computador remotamente

Desenvolve e depura aplicativos Web locais e estiver usando o Windows Server 2003

Nota:   Se você desenvolve e depura aplicativos Web locais no Windows XP Professional, adote o procedimento a seguir para adicionar o privilégio Fazer logon como um trabalho em lotes (Log on as Batch Job) à sua conta.

Logando com um batch job

1. 1.       No menu Iniciar, selecione Executar e, em seguida, digite gpedit.msc.

Será exibido o Editor de objetos de diretiva de grupo.

2. Expanda o nó Configuração do computador para exibir os nós Configurações do Windows, Configurações de segurança, políticas locais e Atribuição de direitos ao usuário.

3. Adicione a conta DOMÍNIO\nome_de_usuário restrita ao grupo Logon como um trabalho em lotes (Log on as a batch job).

4. Faça logoff e volte a fazer logon como esse usuário, para que as alterações sejam ativadas.

Como garantir o acesso a arquivos e compartilhamentos

Enquanto você estava conectado como membro do grupo Administradores local, talvez tenha criado diretórios para seu uso pessoal. Talvez você tenha também criado compartilhamentos de rede que desejava que sua conta de usuário tivesse acesso, mas esses compartilhamentos de rede foram criados com acesso concedido somente ao grupo Administradores local. Você deve garantir que os diretórios que criou na unidade local, fora do diretório do seu perfil, ainda estejam disponíveis para você e de propriedade de sua conta de usuário.

Para verificar a propriedade de um arquivo ou diretório particular

1. Clique com o botão direito sobre o arquivo ou pasta e selecione Propriedades.

2. Na guia Segurança, selecione Avançado.3. Na guia Proprietário, verifique se sua conta de usuário está relacionada. Se

não estiver, aproprie-se.

Page 4: Segurança asp.net

Para verificar o acesso ao compartilhamento de arquivos

1. Clique com o botão direito em Meu computador e selecione Gerenciar.2. Expanda o nó Pastas compartilhadas e, em seguida, o

nó Compartilhamentos.3. Para verificar o acesso a cada compartilhamento criado por usuário, clique

com o botão direito sobre o compartilhamento e selecione Propriedades.4. A guia Permissões de compartilhamento e a

guia Segurança correspondem ao acesso ao compartilhamento e às permissões subjacentes ao sistema de arquivos, respectivamente. A conta de usuário deve ter acesso por meio de ambas as listas, para que possa realizar quaisquer operações com aquele compartilhamento.

Se você não tiver acesso, adicione sua conta de usuário em ambos os locais.

Execução de tarefas administrativas

Ao efetuar o log in, você notará que muitos recursos da interface de usuário deixaram de funcionar. Um duplo clique no relógio na barra de tarefas, por exemplo, não abre mais o calendário, porque o calendário pode alterar a data e esse recurso só está disponível para usuários com privilégios elevados.

Execução de um aplicativo como outro usuário

O Windows XP contém recursos para executar facilmente um aplicativo como outro usuário, sem necessidade de fazer logout e voltar como esse usuário. Observe, no entanto, que esses aplicativos serão encerrados quando você encerrar sua sessão principal de logon interativo. Há três maneiras de se fazer isso:

Executando um atalho com credenciais diferentes

1. Clique com o botão direito sobre o atalho.2. Será exibido o menu Propriedades.3. Selecione Executar como.

Isso permite que você forneça outro nome de usuário e outra senha para executar o aplicativo.

Se você pretende sempre executar um aplicativo como outro usuário, poderá também permitir que o Windows lhe peça essas informações automaticamente.

Executando aplicativo por linha de comando com outras credenciais

No menu Iniciar, selecione Executar e, em seguida, digite runas /user:Administrator program.exe.

— ou —

Na janela de shell de comando, digite runas /user:Administrator program.exe.

Page 5: Segurança asp.net

O programa runas.exe pedirá uma senha e executará qualquer linha de comando que você tiver passado como uma nova sessão de login. Essa é uma maneira prática de executar programas como o regedit e o iexplore, ou mesmo de abrir uma nova janela de comando; todos aqueles comandos filhos estarão sendo executados como aquele usuário. Como se trata de um novo login, não herda identificadores, variáveis de ambiente ou o diretório de trabalho atual de seu ponto de invocação; se você quiser executar programas que não estiverem na lista de diretórios do outro usuário, deverá fornecer o caminho completo até eles.

Pedindo outro nome de usuário automaticamente

1. O Windows XP e as versões posteriores também permitem que o usuário altere as propriedades dos atalhos, de modo que, sempre que forem ativados, o usuário será consultado para informar um novo nome de usuário (username) e uma nova senha.

2. Clique com o botão direito sobre o atalho e selecione Propriedades.3. Na guia Atalho, selecione Avançado.4. Selecione Executar com credenciais diferentes.

Execução de ferramentas administrativas especializadas com credenciais diferentes

A pergunta lógica seguinte é: Como executar as ferramentas que normalmente são iniciadas no painel de controle? Você deveria clicar com o botão direito em Meu computador e selecionar Gerenciar, ou usar outros recursos da interface de usuário que não apresentam atalhos intuitivos ou equivalentes óbvios para a linha de comando? Felizmente, todas as ferramentas administrativas estão disponíveis, seja por meio dos pequenos programas do painel de controle ou diretamente pelo Microsoft Management Console (MMC). As tabelas a seguir relacionam as ferramentas administrativas mais comuns (programas do painel de controle e arquivos do Microsoft Management Console) e como elas podem ser iniciadas (a partir do prompt de comando ou iniciando os aplicativos control.exe ou mmc.exe diretamente com o comando RunAs). Todas elas encontram-se armazenadas na pasta Windows System32, embora algumas estejam disponíveis exclusivamente na família Windows Server 2003 ou no Windows XP. Tais entradas estão identificadas na tabela abaixo.

Ação administrativa Programa do painel de controle

Opções de acessibilidade access.cpl

802.11 Monitor apgui.cpl

Adicionar ou remover programas appwiz.cpl

Console console.cpl 

Vídeo DESK.cpl

SCSI, PCMCIA, e dispositivos de fita DEVAPPS.cpl

Page 6: Segurança asp.net

Assistente para adicionar novo hardware hdwwiz.cpl

Internet inetcpl.cpl

Configurações Regionais INTL.cpl

Controladores de jogo joy.cpl

Mouse, Fontes, Teclado, Impressoras main.cpl

Multimídia e sons MMSYS.cpl

Modems MODEM.cpl 

Rede ncpa.cpl

Gerenciamento de logon do XP Nusrmgr.cpl (XP)

ODBC odbccp32.cpl

Opções de energia powercfg.cpl

Portas PORTS.cpl 1

Dispositivos, Serviços, Servidor srvmgr.cpl 1

Sistema SYSDM.cpl

Telefonia telephon.cpl

Data/Hora TIMEDATE.cpl

UPS ups.cpl 1

1 Usa a família Windows Server 2003 de sistemas operacionais

Ação administrativa

Certificados de Usuários

Autoridade de certificação

Modelos de certificados

Serviço de indexação

Gerenciamento do computador

Editor de objetos de diretiva de grupo

Page 7: Segurança asp.net

Gerenciador de dispositivos

Desfragmentador de disco

Sistema de arquivos distribuídos

Gerenciamento de disco

Domínios e relações de confiança do Active Directory

Configurações padrão de segurança de domínio

Usuários e computadores do Active Directory

Sites e serviços do Active Directory

Visualizar eventos (Event Viewer)

Servidor de arquivos

Pastas compartilhadas

Editor de objetos de diretiva de grupo

Serviço de autenticação da Internet

Usuários e grupos locais

Armazenamento removível

Solicitações do operador do armazenamento removível

Desempenho

Roteamento e acesso remoto

Conjunto de diretivas resultante

Configurações locais de segurança

Serviços

Telefonia

Configuração e conexões de serviços de terminal (Terminal Services)

Áreas de trabalho remotas

Infraestrutura de gerenciamento do Windows (Windows management infrastructure – WMI)

Page 8: Segurança asp.net

1 Usa a família Windows Server 2003 de sistemas operacionais

Credenciais de rede

Quando uma janela ou sessão de logon for aberta como administrador, as credenciais de rede padrão não serão as mesmas da conta de domínio normalmente usada para fazer logon. Como a maioria das redes expõe recursos críticos (tais como compartilhamentos de arquivos) somente a contas de domínio, é necessário estabelecer credenciais de rede alternativas.

Há duas maneiras de se fazer isso: Você pode abrir uma nova janela de comando e, em seguida, definir credenciais padrão alternativas para serem usadas na rede. Outra opção é permitir que servidores ou compartilhamentos individuais sejam acessados com outro nome de usuário e senha.

Quando você estiver executando um prompt de comando, poderá ser útil alterar seu ambiente para indicar claramente que se trata de uma janela com privilégios administrativos. Muitas pessoas usam um dos seguintes métodos:

Definir o prompt em que os comandos são inseridos como exclusivo, como PROMPT ADMIN $P$G

Definir uma cor diferente para o prompt, como um fundo vermelho brilhante com texto preto, usando o comando COLOR c0

Definir a barra de título com texto exclusivo, usando um comando como title Admin Window

Abertura de uma nova janela de comando com credenciais de rede alternativas

1. Para abrir a janela, use runas /user:administrator "runas /netonly /user:DOMAIN\username cmd.exe"

2. Na primeira janela de comando que surgir, insira a senha de administrador, quando solicitado.

3. Na segunda janela de comando que surgir, insira a senha do nome de usuário alternativo, cujas credenciais serão usadas ao acessar recursos pela rede.

Abertura de uma nova janela de comando para acessar compartilhamentos de servidores individuais

1. Abra uma nova janela de comando com o comando /user:administrator cmd.exe.

2. Para cada servidor de rede que precisar de um conjunto alternativo de credenciais, use o comando net use /user:DOMAIN\username \\server nessa janela de shell.

Outras formas do comando net use permitem que você mapeie uma unidade de rede em uma letra persistente ou forneça as credenciais de domínio para autenticar solicitações de acesso vindas desse computador. A tabela a seguir relaciona alguns

Page 9: Segurança asp.net

comandos net use. Depois que você tiver concluído esses comandos, os aplicativos poderão ser instalados dos compartilhamentos remotos, como normalmente seriam.

Comando net use Ação

net use Relaciona as conexões

net use * /persistent:no /user:DOMAIN\username \\server\share

Abre uma conexão mapeada em uma letra de unidade local com credenciais alternativas, mas não reconecta à unidade no próximo logon

net use /user:DOMAIN\username \\server\share Conecta ao compartilhamento de rede com credenciais de usuário alternativas

Instalação de software

Instalar software quando não se tem privilégios administrativos pode ser complicado. Por exemplo, a inserção de um disco de instalação inicia a instalação como o usuário que está logado atualmente, que provavelmente não possui as permissões necessárias para instalar o aplicativo. Para evitar isso, você pode:

Executar o programa de instalação (que geralmente é o setup.exe) com o comando RunAs.

—ou—

Use o comando runas /user:administrator "control appwiz.cpl".

Isso criará uma instância do aplicativo Adicionar ou remover programas sendo executado como o usuário Administrador. Opte por instalar para todos os usuários deste computador se o aplicativo oferecer essa opção, ou o usuário Administrador poderá ser a única pessoa que conseguirá executá-lo após a conclusão da instalação.

Controles ActiveX

Muitos sites da Web — principalmente de intranets corporativas — costumam exigir acesso administrativo para instalar seus controles ActiveX e não oferecer suporte para a instalação por usuários restritos.  A maneira mais fácil de iniciar o Internet Explorer como Administrador é a seguinte:

1. Clique com o botão direito sobre o ícone.

O ícone poderá estar na barra Quick Launch, na Área de trabalho ou no menu Iniciar.

2. Selecione Executar como na lista Propriedades e execute-o como Administrador.

O pacote do Windows Installer

Page 10: Segurança asp.net

Se for um pacote do Windows Installer (arquivo .MSI), o aplicativo MSIEXEC.exe será útil para instalar ou desinstalar aplicativos.

Para instalar, execute msiexec /I msifile.msi.

Nota:  Isto é exatamente o que o Windows faz quando você clica duas vezes sobre um arquivo .MSI.

Para desinstalar, execute msiexec /x msifile.msi.

Nota:  Os argumentos para o programa msiexec.exe encontram-se em ms-help://MS.VSCC/MS.MSDNVS/msi/app_73eb.htm.

Execução de programas que assumem acesso administrativo

Infelizmente muitos programas não são compatíveis com o programa Windows Logo e muitos dos programas que são compatíveis parecem ser menos compatíveis do que outros. O programa Windows Logo determina que um aplicativo deve funcionar razoavelmente sob uma conta menos privilegiada, sempre que possível. Ocasionalmente, um programa exige o acesso de gravação para contas de usuário em seu diretório em Arquivos de programas, ou mesmo uma chave em HKLM\Software. Se você puder determinar com facilidade o acesso ao diretório, aos arquivos ou às chaves de Registro, poderá editá-los para ajudar o programa a ser executado. Os procedimentos a seguir explicam como fazer isso.

Editar as permissões do Registro

1. Abra o regedit como Administrador, digitando runas /user:Administrator regedit.

2. Clique com o botão direito sobre a chave do Registro que você deseja editar.3. Selecione Permissões.4. Adicione o usuário apropriado ao conjunto dos usuários que tiverem

permissão Full Control ou dê a eles um conjunto personalizado de privilégios de acesso nessa chave.

Editar as permissões do sistema de arquivos

Para arquivos ou diretórios, o programa cacls.exe é útil para redefinir as permissões a partir da linha de comando. Há ajuda disponível para o Cacls.exe, que pode ser obtida de duas maneiras:

Na linha de comando, passando a flag /? Na ajuda do Windows

Exemplo: executar o programa cacls.exe para adicionar permissões para um usuário em um diretório

Execute o calcs.exe com as flags para conceder recursivamente privilégios de escrita .

runas /user:Administrator "cacls.exe directory /t /e /g domain\username:w"

Page 11: Segurança asp.net

No Windows Server 2003, insira o nome do diretório completo, usando barras de forma invertida (/)

No Windows XP Professional, talvez seja preciso omitir as aspas finais devido a diferenças no programa cacls.exe entre as versões do sistema operacional. Verifique o resultado do comando runas.exe e, se contiver aspas extras (como mostrado abaixo), remova as aspas finais da linha de comando acima.Attempting to start cacls.exe c:\foo\ /t /e /g domain\username:w" as user "MACHINE\Administrator" ...

Como último recurso, você pode usar o runas.exe para iniciar o programa como o usuário Administrador local; contudo, tenha cuidado — afinal, se o programa não for suficientemente bem-comportado para reduzir corretamente em um ambiente menos privilegiado, o quão confiável será em um ambiente com privilégios mais altos? Infelizmente, muitos programas não foram testados para serem executados como um usuário além daquele que o instalou, principalmente em contas menos privilegiadas; talvez você constate que terá que executar o programa como Administrador local para conseguir realizar o trabalho. Isso ainda é um ambiente melhor do que executar todos os softwares e fazer logon como membro do grupo Administradores local, mas você deve tentar entrar em contato com a empresa que desenvolveu o software e comunicá-los sobre os bugs, para que possam corrigi-los na versão seguinte. A única maneira de os usuários serem capazes de trabalhar em um ambiente de login mais seguro e ainda assim permanecerem tão produtivos quanto hoje, é os desenvolvedores corrigirem seus softwares.

Desenvolvimento de software

O Visual Studio .NET é compatível com o programa Windows Logo, por isso era de se esperar que funcionasse como um usuário restrito. Contudo, muito embora a grande maioria de todos os recursos funcione em permissões limitadas, há algumas tarefas que são ligeiramente mais difíceis nesse modelo, seja devido a limitações do sistema operacional ou à natureza básica das tarefas que estão sendo executadas. As seções a seguir oferecem soluções simples para todas as tarefas difíceis em um processo de desenvolvimento; nas próximas versões do ambiente de desenvolvimento integrado (IDE), esperamos construir esses recursos diretamente no shell e reduzir as exigências sempre que possível. Estamos trabalhando muito nas versões futuras tanto do sistema operacional como nas ferramentas de desenvolvimento, para facilitar a execução dessas tarefas de maneiras equivalentes e que não exijam privilégios administrativos.

Etapas pós-build (registro)

No Visual C++ clássico, é regsvr32.exe. No mundo Visual Basic .NET e do Visual C# .NET, são as montagens de registro para interop. Seja qual for o sistema de projeto que estiver determinando isso, há muitas ferramentas que exigem o acesso de gravação em HKLM\Software\Classes para registrar componentes COM e bibliotecas de tipo (type libraries). Se o seu aplicativo estiver atualmente realizando etapas de registro que exijam permissão de escrita a partes protegidas do registro, você deverá antes determinar se realmente precisa fazê-los. Lembre-se que:

HKCU\Software\Classes pode ser alterado por qualquer usuário e é exibido no HKCR da mesma forma que HKLM\Software\Classes, embora somente para o seu usuário.

Nota:  Os detalhes da composição de HKEY_CLASSES_ROOT podem ser encontrados em ms-help://MS.VSCC/MS.MSDNVS/sysinfo/regapi_0htl.htm

Você não deve se basear no regsvr32.exe como método de instalação para o usuário final dos componentes COM clássicos. É aceitável alterar o registro do

Page 12: Segurança asp.net

seu aplicativo para “por usuário” (per-user), porque o método DllRegisterServer somente deve ser usado para fins de depuração e desenvolvimento pessoais. Ao desenvolver aplicativos para usuários finais, você deve criar todas os requisitos de registro nas tabelas do arquivo .MSI do Windows Installer, para que possa lidar com questões tais como vários programas gravando nas mesmas chaves de registro e sendo instalados ou desinstalados em ordens variadas.

Infelizmente, muitas das ferramentas e APIs do sistema operacional permitem o registro somente em HKLM\Software\Classes; o registro na biblioteca de tipos (type library) é um exemplo típico disso. Nesses casos, as opções mais viáveis são usar runas /user:administrator cmd.exe, alterar o diretório para o diretório de saída e executar as etapas de registro manualmente, ou eliminar toda a dependência. Infelizmente, a eliminação da dependência no registro global é complexa o bastante para merecer um artigo totalmente dedicado ao assunto. Uma alternativa é criar arquivos manifesto personalizados para contornar todas as etapas de registro, mas isso também está fora dos propósitos deste artigo; há mais informações sobre isso em ms-help://MS.VSCC/MS.MSDNVS/sbscs/sidebysideref_03ol.htm. A maneira menos complicada de contornar as limitações do registro global é executar as etapas de registro com sua conta administrativa.

A tabela a seguir mostra tarefas de registro pós-construção (post-build registration) e seus registros. Execute-as na primeira vez e a partir de então você deverá ser capaz de construir e executar normalmente. Lembre-se, no entanto, que você poderá ter que refazer a etapa de registro sempre que mudar entre as configurações Debug e Release, e quando fizer alterações no aplicativo que tiverem impacto sobre os itens que estiverem sendo registrados.

Tipo de registro pós-construção

Registro de executável COM

Registro de DLL COM

Registro de assembly .NET para interoperabilidade COM

Instalação de um assembly .NET no Global Assembly Cachê

Registro de instalação de serviços .NET

Depuração de aplicativos locais

Ao se logar como não administrador, há um recurso que você perde: O Windows não permite a depuração de aplicativos locais que estiverem sendo executados como outro usuário, a menos que tenha o direito especial do usuário para usá-lo (SeDebugPrivilege), e o .NET Framework não permite a depuração de aplicativos de outros usuários, a menos que você esteja no grupo Administradores local. Você ainda será capaz de depurar aplicativos locais e gerenciados que tiver iniciado a partir do ambiente de desenvolvimento, ou que já estiverem em execução como seu usuário não-administrativo. Se você precisar depurar serviços ou outros programas para que funcionem em outros contextos de segurança, dê a si mesmo o privilégio do SO para aplicativos locais, adicione sua conta ao grupo Administradores local ou use RunAs para iniciar o Visual Studio .NET como usuário administrador local. Isto posto, há muitos métodos para iniciar seu aplicativo como

Page 13: Segurança asp.net

seu próprio usuário, ambos permitindo a depuração e ajudando a garantir que seu aplicativo funcionará corretamente em um ambiente com privilégios limitados.

Aplicativos locais e gerenciados

Sempre que possível, inicie sua aplicação como seu usuário não-administrativo e tudo funcionará. Por padrão, clicar em Iniciar (Start) no menu Debug em executáveis normais funciona, assim como anexar (Anexar ao Processo [Attach to Process] no menu Debug) a qualquer um dos aplicativos que você mesmo iniciou nesse computador. Você deverá ser um participante do grupo Usuários de Depuração para que possa anexar a qualquer processo (attach to process) com os mecanismos padrão do Visual Studio .NET. A participação nesse grupo não lhe dá acesso para depurar programas de outros usuários, mas permite somente que você use o serviço que anexa o depurador ao processo que estiver sendo depurado.

Computadores remotos (locais/gerenciados)

Há duas maneiras aceitáveis de realizar depuração remota: por meio do serviço gerenciador de depuração de computador (Machine Debug Manager Service) ou msvcmon.exe. O gerenciador de depuração de computador é um serviço que reconhece suas credenciais de rede, entende quem você é, verifica se você é membro do grupo de Usuários de Depuração do computador de destino e, se for, permite que você se conecte aos seus aplicativos. O gerenciador de depuração de computador (Machine Debug Manager) é também a única maneira de depurar aplicativos gerenciados remotos, inclusive aplicativos para a Web. Você não poderá se conectar aos aplicativos de outros usuários em computadores remotos somente por estar no grupo Usuários de Depuração. Para os programas nativos que estiverem sendo executados em um computador remoto, você precisará também do direito de usuário SeDebugPrivilege no computador de destino. Para aplicativos gerenciados em um computador remoto, você deverá ser membro do grupo Administradores.

Como método alternativo para depurar aplicativos nativos, o programa msvcmon.exe oferece uma maneira de conectar por TCP/IP a aplicativos gerenciados em um computador remoto. Nessa situação, as credenciais de login da máquina de depuração não serão duplicadas no computador remoto. Por exemplo, se msvcmon.exe for iniciado no computador remoto como o Administrador local do computador, mas com a flag "-anyuser", então qualquer pessoa poderá se conectar ao serviço e se anexar e depurar qualquer aplicativo nativo nesse computador, mesmo se não tiver originalmente os direito para fazê-lo.

Criação de aplicativos para a Web

Há duas opções para criar aplicativos para a Web. A primeira é adicionar a conta do usuário a que você estiver conectado ao grupo Desenvolvedores VS (VS Developers), permitindo que essa conta grave em qualquer lugar da WebRoot do IIS. A maneira alternativa é criar o diretório como esse usuário e, em seguida, adicionar uma Virtual Root. Em ambos os casos, depois que tiver concluído uma dessas opções, você poderá criar o novo aplicativo na caixa de diálogo Criar novo projeto do Visual Studio .NET como o usuário restrito.

Page 14: Segurança asp.net

Para adicionar uma Virtual Root no IIS

1. Execute o console de gerenciamento compmgmt.msc como um usuário administrativo.

2. Expanda o nó Serviços e aplicativos para exibir os nós Internet Information Services e Sites da Web.

3. Clique com o botão direito no nó Site da Web padrão e selecione Novo e, em seguida, selecione Pasta virtual.

4. Clique em Avançar, insira um nome para a raiz virtual e clique em Avançar novamente.

5. Insira o nome do diretório a expor e clique em Avançar.6. Não altere as permissões padrão e clique em Avançar.7. Clique em Concluir para estabelecer a raiz virtual.

Depuração de aplicativos para a Web

Há duas condições para depurar aplicativos para a Web: executar o ASP.NET como sua conta de login restrita e permissões de diretórios. Para o conjunto de diretórios a que você terá que adicionar a permissão de leitura ou gravação, consulte a tabela a seguir.

Diretório Permissões necessárias no diretório e todos os subdiretórios

%WINDIR%\Temp Leitura e gravação

%INSTALLROOT% Leitura

%INSTALLROOT%\ASP.NET Temporary Files Leitura e gravação

Nota:  %INSTALLROOT% segue o formato  D:\WINDOWS\Microsoft.NET\Framework\v1.0.3705 e %WINDIR% segue o formato D:\WINDOWS.

Por padrão, com o login de um usuário restrito, não é possível depurar aplicativos da Web porque o usuário que estiver executando o depurador não será membro do grupo apropriado para depurar programas de outros usuários (Administradores), e o servidor Web terá iniciado o ASP.NET como a conta NETWORK_SERVICE.

Se você não quiser conceder essa participação do login no grupo Administradores local ou executar o depurador como o Administrador local, terá que alterar a conta que estiver sendo usada pelo ASP.NET. No Windows XP Professional, edite o machine.config como mostrado abaixo e coloque seu nome de usuário e senha em texto puro. Isto apresenta a possível desvantagem de exigir que todos os aplicativos ASP.NET dessa máquina sejam executados como sua conta de usuário, mas é o melhor método para o IIS 5 e permite que você depure e crie aplicativos para a Web da mesma maneira que fazia anteriormente.

Nota de segurança   Se você fizer isso, o arquivo machine.config deverá estar em uma unidade NTFS e ter um conjunto ACL restritivo, ou qualquer pessoa que fizer logon no computador poderá ver sua senha. Mesmo fazendo isso, todos os usuários do grupo Administradores serão capazes de ler, independente do conjunto ACL.

Como permitir que o ASP.NET funcione como outro usuário no Windows XP Professional

Page 15: Segurança asp.net

Como um Administrador, edite os atributos do arquivo "%INSTALLROOT%\Config\machine.config" na tag processModel, como mostrado:

<processModel

                enable="true"

                userName="DOMAIN\username"

                password="MyPswd2"

                ...

/ >

Nota: %INSTALLROOT% segue o formato D:\WINDOWS\Microsoft.NET\Framework\v1.0.3705

Como permitir que o ASP.NET funcione como outro usuário no Windows Server 2003

No Windows Server 2003 e no IIS 6, há um novo recurso chamado pools de aplicativos (application pools). Cada pool pode ser configurado para funcionar como um usuário diferente, desde que o usuário seja membro do grupo IIS_WPG. Podem ser adicionados virtual roots a um pool de aplicativos, e o depurador será então capaz de anexar ao mesmo se o pool estiver funcionando como o mesmo usuário que tiver iniciado o depurador. Esse mecanismo oferece uma maneira fácil de configurar um ambiente de execução alternativo, proteger com segurança as credenciais do usuário e definir virtual roots adicionais.

Como adicionar e configurar um pool de aplicativos

1. Execute o console de gerenciamento compmgmt.msc como um usuário administrativo.

2. Expanda o nó Serviços e aplicativos para exibir os nós Internet Information Services e Pools de aplicativos (Application Pools).

3. Clique com o botão direito no nó Pools de aplicativos, selecione Novo e em seguida selecione Pool de aplicativos.

4. Digite um nome para o pool de aplicativos e clique em OK.5. Clique com o botão direito sobre o novo pool de aplicativos e

selecione Propriedades.6. Na guia Identidade, selecione a opção Configurável.7. Nas caixas correspondentes, insira o Nome de usuário e a Senha com que

você pretende executar o depurador e clique em OK.

Nota: Essa conta deve ser membro do grupo IIS_WPG e ter as permissões de acesso listadas acima para executar aplicativos ASP.NET.

Como definir uma Virtual Root para executar um pool de aplicativos

Page 16: Segurança asp.net

1. 1.       Execute o console de gerenciamento compmgmt.msc como um usuário administrativo.

2. Expanda o nó Serviços e aplicativos para exibir os nós Internet Information Services, Sites da Web e Site da Web padrão.

3. Expanda o nó Sites da Web padrão para exibir todas as virtual Root disponíveis.

4. Clique com o botão direito sobre a virtual Root e selecione Propriedades.5. Na guia Diretório virtual, altere o menu drop-down Pool de aplicativos e

selecione o pool de aplicativos usando a identidade de usuário apropriada e clique em OK.

Instalando distribuições dos projetos output

Instalando o projeto output de distribuição envolve as mesmas restrições que a instalação de um aplicativo a partir de uma rede, como mencionado anteriormente sobre as ferramentas RunAs.exe e MSIEXEC. Instale-o como um aplicativo normal, para todos os usuários, ou poderá ser difícil iniciá-lo ou depurá-lo.