• IIS 7.0 (Internet Information Services): Parte 7: Delegação

    O sistema de configurações do IIS 7, mencionado no post anterior, possui outra característica interessante: ele é Delegável.

    Isto, em termos simples, significa que usuários comuns, não-administradores do servidor podem efetuar alterações no IIS 7.0. Logicamente, há um controle de delgação, chamado "Feature Delegation" onde os administradores, de forma granular, dizem ao IIS quais características podem ou não ser delegadas, ou seja, alteradas.

    Assim, por exemplo, pode ser que o administrador queira controlar quais documentos podem ser o Default Page dos sites hospedados. Deste modo, essa característica, Default Page não é Delegada, ou seja, não pode ser alterada.

    Se isto não for verdade, o administrador delega essa características e indica quais usuários ou grupos (Active Directory, local ou IIS users) podem alterar tal característica.

    Tal configuração pode ser feita a nível de websites, assim, 2 ou mais sites podem ter diferentes configurações de Delegação.  O diagrama abaixo ilustra melhor tal situação:

     

    Perceba, que dentro do arquivo applicationhost.config ("coração" do IIS e que possui suas configurações globais), há uma linha "overridemodedefault="deny". Isto significa, que determinada seção de configuração está bloqueada, ou seja, não é delegável. Assim, se algum desenvolvedor tentar criar um arquivo web.config e alterar essa seção, receberá um erro do IE durante a execução. Isto permite total controle do servidor e suas alterações, que ficam sob responsabilidade final do administrador do webserver.

  • IIS 7.0 (Internet Information Services): Parte 6: Configuração

    O esquema de configuração do IIS 7.0 é bem flexível e modular. A primeira novidade, é que não existe mais o arquivo metabase.xml (na verdade existe apenas para o serviço de SMTP e não-web), que era um arquivo onde apenas os administradores do servidor podiam alterar e de difícil replicação entre máquinas, o que dificultava por exemplo, a construção de web farms.

    Toda a configuração do IIS fica agora armazenada em arquivos 100% texto, conforme descricão abaixo

    • applicationhost.config (armazenado em %windir%\system32\inetsrv\config): "coração" do IIS, que armazena as configurações globais, a nível de servidor. Apenas os administradores do servidor podem alterar este arquivo
    • administration.config: (armazenado em %windir%\system32\inetsrv\config): controla a interface gráfica do IIS. Ë onde pode-se customizar o IIS Manager e adicionar ícones, tabs, etc.
    • web.config (armazenado no diretório da aplicação/site): contém as configurações específicas por website, as quais os administradores "delegam" e podem ser alteradas pelos desenvolvedores ou administradores do site.

     

    Para visualizarmos a lógica acima, esse diagrama pode nos ajudar:

     

     

    Um ponto importante a considerar é que, uma vez que os arquivos são puramente texto, isto significa que os arquivos de configuração podem ser copiados de uma máquina para outra e automaticamente, as configurações são replicadas. Claro, que pode haver algumas dependências, como endereçamentos IP's, mas a princípio, 100% das configurações são replicadas.

  • IIS 7.0 (Internet Information Services): Parte 5: Extensibilidade

    Extensibilidade, de acordo com a Wikipédia é a capacidade que um sistema possui em crescer pela adição de novos componentes.

    E é exatamente isto que o IIS 7.0 providencia. As APIs utilizadas pelo time de produto foram feitas públicas, o que permite que desenvolvedores adicionem funcionalidades, de acordo com sua necessidade ao IIS 7.0

    Bem, talvez pergunta, mas isto já existia no IIS 6.0 . E é verdade. A diferença, é que no IIS 6.0, essa extensibilidade só poderia ser feita utilizando-se extensões ISAPI, o que tornava uma tarefa difícil e para poucos conhecedores.

    No IIS 7.0, essa extensibilidade pode ser feita utilizando-se código gerenciado, como o .NET . Assim, o desenvolvedor pode aproveitar todo o conhecimento que ele tem e assim, rapidamente, utlizar módulos utilizando a interface que conhece.

    Outra característica da extensibilidade é a possibilidade de estender ou alterar a interface gráfica do IIS 7.0. Assim, empresas podem criar abas ou agrupamentos novos. Toda essa configuração fica armazenada no arquivo administration.config do IIS.

    Para conher o poder da extensibilidade, você pode fazer o download de alguns módulos que foram criados por empresas e comunidade, que estão disponíveis gratuitamente no site www.iis.net :

     

    DotNetPanelDotNetPanel is unique feature-rich solution for simplifying Windows hosting management operations.  It manages multiple servers, has robust, scalable and secure architecture, it's very simple in use, offers competitive pricing and great ...

     

    This application extends IIS 7.0 Manager by adding a new Reports option that gives you a few reports of the server and site activity.

    This module provides IIS Manager 7 a "Recent Tasks" at the bottom of the Actions Panel where it keeps track of all the features you have used sorted by most recently used. It includes MSI to install and source code is also available so you can see ...

     

    AppcmdUI helps writing appcmd commands by providing available options at each step so that you only need to pick the option from the list.

  • IIS 7.0 (Internet Information Services) - Parte 4: Segurança

    Um dos pilares do IIS 7, conforme vimos no post anterior  é Segurança. E isto não poderia ser diferente, dado a criticidade e sensibilidade de se expor informações ou sistemas via Web.

    Debaixo do "guarda-chuva" Segurança, temos algumas características bem interessantes:

    • Modularidade: o IIS 7 possui cerca de 40 módulos disponíveis, já embutidos no sistema operacional, onde você pode granularmente escolher quais componentes estarão disponíveis. Assim, se por exemplo, você não vai executar a autenticação do tipo "Digest", não precisa instalar esse módulo (DigestAuthModule), ou seja, seus binários não estarão em disco e você terá uma área de ataque reduzida. Apenas para se ter idéias de quais módulos estão disponíveis, o gráfico abaixo mostra de modo agrupado, quais são os mesmos:

    Logicamente, há todo um controle de "dependências" entre os módulos. Assim, se você necessita executar aplicações ASP.NET, ao selecionar o módulo principal, automaticamente os demais serão acrescentados.

    • Gerenciamento Reduzido de Patches: pelo mesmo motivo acima, se os binários não estão fisicamente em disco, não há necessidade de patches. Assim, seguindo o mesmo exemplo, se o módulo DigestAuthModule não está instalado, e há um patch de correção para esse módulo em específico, sua aplicação não é necessária.
    • URLScan embutido: essa ferramenta, disponível como download separado para o IIS 6.0, utilizado para se assegurar que requisições HTTP válidas (por exemplo: tamanho máximo de string, caracteres inválidos, etc) estavam realmente sendo processadas, é agora um módulo (RequestFilteringModule) do IIS 7. Assim, simplesmente editando arquivos de configuração texto (como o web.config) você pode customizar e configurar esse módulo, acrescentando um nível de segurança em seu WebServer
  • IIS 7.0 (Internet Information Services) - Parte 3: Pilares

    Todo desenvolvimento de um produto tem por objetivo suprir necessidades e interesses de nossos clientes e parceiros.

    O IIS 7 também segue essa premissa e por isto, sua construção foi baseada em alguns pilares e feedbacks do mercado.

    Logicamente, em primeiro lugar, há um total aproveitamento dos pilares e características do IIS 6.0, que como já dito neste blog, possui características robustas para um webserver. A tabela abaixo exemplifica alguma destas características técnicas:

     

    Algumas características principais do IIS 6.0:

    • Não é instalado por default com o sistema operacional Windows Server 2003 (ele já vem "embutido" no SO, porém, não instalado);
    • Arquitetura de "worker process" faz o isolamento de aplicações mal comportadas, podendo por exemplo, se configurar recycles automáticos baseados em consumo de memória e CPU;
    • Ampla possibilidade de administração via linha de comando (scripts VBS, APIs de WMI (Windows Management Instrumentation));
    • Totalmente integrado com .NET;

    Entretanto, devido ao desenvolvimento do mercado e surgimento de novas tecnologias, logicamente, o IIS 7 possui novas funcionalides para estender as características já existentes, tais como:

     

     

    Nos próximos posts estarei detalhando tecnicamente cada um destes pilares.