Segurança, armazenamento e rede com contêineres do Windows
A Contoso pediu que você, como administrador do Windows Server, avaliasse as necessidades de segurança, armazenamento e rede dos contêineres do Windows. Você está especialmente interessado em entender como essas necessidades diferem entre contêineres e VMs no Windows Server.
Segurança de contêineres do Windows
Os contêineres do Windows são criados com a mesma base que as instâncias do Windows em execução em máquinas físicas ou virtuais. No entanto, alguns aspectos de segurança são tratados de maneira diferente ou são específicos para contêineres do Windows:
Componentes compartilhados. Os contêineres do Windows compartilham alguns dos componentes do host para fins de segurança. Isso inclui o Firewall do Windows, o Windows Defender (Antivírus) e outras limitações de acesso a recursos. Não é necessário configurar esses componentes diretamente no contêiner porque o host relacionado faz os ajustes necessários com base na carga de trabalho utilizada por ele. Por exemplo, se o contêiner fizer uma solicitação da Web, o host de contêiner encaminhará o tráfego necessário por meio do firewall para que o contêiner possa acessar a Web.
Modos de isolamento. Os contêineres do Windows podem ser implantados no processo ou no modo de isolamento do Hyper-V, e o Hyper-V fornece o isolamento mais seguro. No isolamento do processo, o contêiner compartilha seu kernel, sistema de arquivos e registro com o host, o que permite que um processo elevado (administrador) interaja com os processos e serviços de contêiner. Escolher o modo de isolamento correto para o aplicativo é importante a fim de garantir o modo de segurança apropriado.
Atualizações do Windows. Como a pilha de serviços não está presente nos contêineres do Windows, eles não recebem atualizações como instâncias gerais do Windows. Em vez disso, você precisa recompilar contêineres do Windows usando a imagem de contêiner base disponível mais recente. Os clientes podem utilizar os pipelines do Azure para essa finalidade. A Microsoft atualiza as imagens de contêiner base para todas as suas imagens oficiais todos os meses após a cadência de Patch Tuesday.
Conta de usuário do contêiner. Por padrão, os aplicativos dentro de contêineres do Windows são executados com privilégios elevados na conta de usuário ContainerAdmin. Isso é útil para instalar e configurar os componentes necessários dentro da imagem de contêiner. No entanto, é necessário considerar a alteração da conta de usuário para ContainerUser ao executar um aplicativo que não exija privilégios elevados. Para cenários específicos, você também pode criar uma nova conta com os privilégios apropriados.
Verificação de imagem e runtime. Os contêineres exigem que as imagens em repositórios e instâncias de contêineres sejam seguras. A Microsoft recomenda que você use o Microsoft Defender para Contêineres para verificação de imagens e de runtime. O Defender para Contêineres dá suporte a contêineres do Windows para avaliação de vulnerabilidade com verificação de registro e proteção de runtime com detecção de ameaças.
Para saber mais sobre segurança em contêineres do Windows, confira Proteger contêineres do Windows.
Armazenamento persistente para contêineres do Windows
Por padrão, os contêineres do Windows usam o armazenamento efêmero. Todas as E/S de contêiner acontecem em um "espaço de rascunho". Um espaço de rascunho é um armazenamento temporário fornecido ao contêiner para alterações no sistema de arquivos. Cada contêiner recebe o próprio rascunho. A criação de arquivo e as gravações de arquivo são capturadas no espaço temporário e não escapam para o host. Quando uma instância de contêiner é excluída, todas as alterações que ocorreram no espaço de rascunho são descartadas. Quando uma nova instância de contêiner é iniciada, um novo espaço temporário é fornecido para a instância.
Você pode ter casos em que é importante que um aplicativo seja capaz de persistir dados em um contêiner ou que você queira mostrar arquivos em um contêiner que não foram incluídos no tempo de build do contêiner. Devido a isso, o armazenamento persistente pode ser fornecido aos contêineres do Windows.
Ele pode ser fornecido aos contêineres do Windows por meio do mecanismo Docker ou do orquestrador de contêineres. Em ambientes de desenvolvimento/teste, o mecanismo do Docker fornece uma maneira rápida e fácil de atribuir armazenamento local a contêineres do Windows com montagens de Bind ou volumes nomeados. As montagens por associação permitem que um contêiner compartilhe um diretório com o host. Isso é útil quando você deseja um local para armazenar arquivos no computador local que estarão disponíveis ao reiniciar um contêiner ou para compartilhá-lo com diversos contêineres. Se você quiser que o contêiner seja executado em vários computadores com acesso aos mesmos arquivos, então deverá ser usado um volume nomeado ou uma montagem SMB.
Para ambientes de produção, o orquestrador de contêineres pode fornecer opções de armazenamento persistente de nível corporativo. Por exemplo, o Kubernetes fornece nativamente volumes persistentes que podem ser usados a fim de fornecer armazenamento persistente para diversos contêineres em execução em muitos hosts. Além disso, o Kubernetes também fornece plugins de terceiros a serem usados para mapear volumes nos armazenamentos em nuvem, como o Armazenamento do Azure.
Para saber mais sobre o armazenamento persistente para contêineres do Windows, confira Visão geral do armazenamento de contêineres.
Rede de contêineres do Windows
Os contêineres do Windows funcionam de maneira semelhante às máquinas virtuais no que se refere à rede. Cada contêiner tem um vNIC (adaptador de rede virtual) que é conectado a um vSwitch (comutador virtual) do Hyper-V. O Windows oferece suporte a cinco modos ou drivers de rede diferentes que podem ser criados por meio do Docker: nat, overlay, transparent, l2bridge e l2tunnel. Dependendo de sua infraestrutura de rede física e dos requisitos de rede de host único ou multi-host, você deve escolher o driver de rede mais adequado às suas necessidades.
Driver de rede do Docker para Windows | Usos típicos | Contêiner para contêiner (Nó único) | Contêiner para externo (nó único + diversos nós) | Contêiner para contêiner (diversos nós) |
---|---|---|---|---|
NAT (Padrão) | Bom para Desenvolvedores | Mesma Sub-rede: conexão de ponte por meio do comutador virtual do Hyper-V Sub-rede cruzada: não compatível (somente um prefixo interno de NAT) |
Roteada por meio de vNIC de Gerenciamento (associado a WinNAT) | Não tem suporte direto: requer a exposição de portas por meio do host |
Transparente | Bom para Desenvolvedores ou implantações pequenas | Mesma Sub-rede: conexão de ponte por meio do comutador virtual do Hyper-V Sub-rede cruzada: roteada por meio do host do contêiner |
Roteada por meio do host de contêiner com acesso direto ao adaptador de rede (físico) | Roteada por meio do host de contêiner com acesso direto ao adaptador de rede (físico) |
Sobreposição | Adequado para diversos nós, necessário para o Docker Swarm e disponível no Kubernetes | Mesma Sub-rede: conexão de ponte por meio do comutador virtual do Hyper-V Sub-rede cruzada: o tráfego de rede é encapsulado e roteado por meio da vNIC de Gerenciamento |
Sem suporte direto: requer um segundo ponto de extremidade de contêiner anexado à rede NAT no Windows Server 2016 ou a regra de NAT VFP no Windows Server 2019. | Mesma/Sub-rede cruzada: o tráfego de rede é encapsulado usando VXLAN e roteado por meio da vNIC de Gerenciamento |
L2Bridge | Usado para Kubernetes e SDN Microsoft | Mesma Sub-rede: conexão de ponte por meio do comutador virtual do Hyper-V Sub-rede cruzada: contêiner do endereço MAC reescrito na entrada e na saída e roteado |
Contêiner do endereço MAC reescrito na entrada e na saída | Mesma sub-rede: conexão com ponte Sub-rede cruzada: roteamento por meio do Mgmt vNIC em WSv1809 e posterior |
L2Tunnel | Somente no Azure | Mesma/Sub-rede cruzada: fixada a comutador virtual do Hyper-V do host físico a onde a política é aplicada | O tráfego deve passar pelo gateway de rede virtual do Azure | Mesma/Sub-rede cruzada: fixada a comutador virtual do Hyper-V do host físico a onde a política é aplicada |
Além das opções do Docker acima, o Kubernetes fornece diferentes plug-ins de CNI (interface de rede de contêiner). Esses CNI implementam diferentes modos de configuração de rede, políticas de rede etc.
Para saber mais sobre redes para contêineres do Windows, confira Redes de contêineres do Windows.