Zonas de destino do Azure – Considerações de design do módulo Terraform
Este artigo fala sobre áreas importantes a serem consideradas ao usar o módulo Terraform de zonas de aterrissagem do Azure. O módulo fornece uma abordagem opinativa para implantar e operar uma plataforma do Azure com base na arquitetura conceitual da zona de destino do Azure, conforme detalhado no CAF (Cloud Adoption Framework).
Terraform é uma ferramenta de código aberto Infrastructure as Code (IaC), criada pela HashiCorp, que usa sintaxe declarativa para implantar recursos de infraestrutura. Ela é extensível, tem suporte multiplataforma e permite uma infraestrutura imutável por meio de rastreamento de estado.
Importante
O módulo está disponível no Registro do Terraform: módulo Terraform de Zonas de Destino do Azure. Use essa implementação como ponto de partida e configure de acordo com suas necessidades.
Observação
Há implementações para diversas tecnologias de implantação, inclusive com base no portal, modelos de ARM e modelos Terraform. A escolha da tecnologia de implantação não deve influenciar a implantação resultante das zonas de destino do Azure.
ALZ Terraform Accelerator
Para começar rapidamente a implantar o ALZ com o Terraform, você pode aproveitar o ALZ Terraform Accelerator que foi projetado para ser usado como um modelo. O repositório fornece uma implementação de suporte do módulo Terraform de Zonas de Destino do Azure, com pipelines de DevOps do Azure e fluxos de trabalho de ações do GitHub.
O ALZ Terraform Accelerator segue uma abordagem de 3 fases:
- Pré-requisitos: instruções para configurar credenciais e assinaturas.
- Bootstrap: execute o script do PowerShell para gerar o ambiente de entrega contínua.
- Executar: atualize o módulo (se necessário) para atender às necessidades da organização e implantar por meio de entrega contínua.
Comece com o guia do usuário com um passo a passo para colocar seu ambiente da Zona de Destino do Azure em funcionamento.
Criar
A arquitetura aproveita a natureza configurável do Terraform e é composta por um módulo de orquestração primário. Este módulo encapsula vários recursos da arquitetura conceitual de zonas de destino do Azure. Você pode implantar cada recurso individualmente ou em parte. Por exemplo, você pode implantar apenas uma rede de hub, ou apenas a Proteção contra DDoS do Azure, ou apenas os recursos DNS. Ao fazer isso, você precisa levar em conta que os recursos têm dependências.
A arquitetura utiliza uma abordagem orquestradora para simplificar a experiência de implantação. Talvez você prefira implementar cada recurso usando uma ou mais instâncias de módulo dedicado, onde cada uma é dedicada a uma parte específica da arquitetura. Tudo isso é possível com a configuração correta
Módulos
Um conceito central no Terraform é o uso de módulos. Os módulos permitem organizar implantações em agrupamentos lógicos. Com os módulos, você melhora a legibilidade dos arquivos Terraform com o encapsulamento de detalhes complexos de sua implantação. Você também pode facilmente reutilizar módulos em implantações diferentes.
A capacidade de reutilizar módulos oferece um benefício real ao definir e implantar zonas de destino. Ele permite ambientes repetíveis e consistentes no código, reduzindo o esforço necessário para implantar em escala.
A implementação Terraform das zonas de aterrissagem do Azure é entregue usando um único módulo que atua como uma camada de orquestração. A camada de orquestração permite selecionar quais recursos serão implantados e gerenciados usando o módulo. O módulo pode ser usado várias vezes no mesmo ambiente para implantar recursos independentemente uns dos outros. Isso poderá ser útil em organizações em que diferentes equipes são responsáveis pelos diferentes recursos ou coleções de sub-recursos.
Camadas e preparo
A implementação se concentra na hierarquia de recursos central da arquitetura conceitual da zona de destino do Azure. O design é centrado nos seguintes recursos:
- Recursos principais
- Recursos de gerenciamento
- Recursos de conectividade
- Recursos de identidade
O módulo agrupa recursos nesses recursos à medida que eles devem ser implantados juntos. Esses grupos formam estágios lógicos da implementação.
Você controla a implantação de cada um desses recursos usando sinalizadores de recurso. Um benefício dessa abordagem é a capacidade de adicionar ao seu ambiente incrementalmente ao longo do tempo. Por exemplo, você pode começar com um pequeno número de recursos. Você poderá adicionar os recursos restantes em um estágio posterior quando estiver pronto.
Recursos principais
Os recursos principais do módulo se alinham à área de design da organização de recursos do Cloud Adoption Framework. Ele implanta os recursos fundamentais da arquitetura conceitual das zonas de destino do Azure.
Arquétipos
Um conceito importante dentro da capacidade de recursos centrais é a inclusão de arquétipos.
Os arquétipos fornecem uma abordagem reutilizável baseada em código para determinar quais definições de política, definições de conjunto de políticas, atribuições de políticas, definições de função e atribuições de função devem ser aplicadas em um determinado escopo. Na implementação do Terraform, essas decisões são encapsuladas como Definições de arquétipo.
Para criar uma zona de destino, os grupos de gerenciamento são associados a uma definição de arquétipo. No exemplo abaixo para uma zona de destino corporativa, o archetype_config tem um ponteiro para a definição de arquétipo "es_corp". Essa definição contém todas as configurações de política e função que serão adicionadas a esse grupo de gerenciamento.
es_corp_landing_zones = {
"contoso-corp" = {
display_name = "Corp"
parent_management_group_id = "contoso-landing-zones"
subscription_ids = []
archetype_config = {
archetype_id ="es_corp"
parameters = {}
access_control = {}
}
}
Quando os arquétipos internos não se alinham às suas necessidades, o módulo fornece opções para criar arquétipos ou fazer alterações nos existentes.
Recursos de gerenciamento
Os recursos de gerenciamento do módulo se alinham à área de design do gerenciamento do Cloud Adoption Framework. Esse recurso fornece a opção de implantar recursos de gerenciamento e monitoramento na zona de destino da plataforma de gerenciamento.
Recursos de conectividade
Os recursos de conectividade do módulo fornecem a opção de implementar a topologia e a conectividade de rede da arquitetura conceitual das zonas de destino do Azure.
Recursos de identidade
Os recursos de identidade do módulo se alinham à área de design de gerenciamento de identidade e acesso do Azure da Cloud Adoption Framework. Esse recurso fornece a opção de configurar políticas na zona de destino da plataforma de identidade.
Observação
Nenhum recurso é implantado com essa capacidade. Quando a variável deploy_identity_resources
é definida como true, as atribuições do Azure Policy são configuradas para proteger os recursos na assinatura da zona de destino da plataforma de identidade.
Descrições do módulo
Esta seção fornece uma visão geral de alto nível dos recursos implantados por este módulo.
Camada | Tipo(s) de recurso | Descrição | Links úteis |
---|---|---|---|
Núcleo | Grupos de Gerenciamento | Os grupos de gerenciamento são os recursos de nível mais alto em um locatário do Azure. Os grupos de gerenciamento permitem que você gerencie seus recursos com mais facilidade. Você pode aplicar a política no nível do grupo de gerenciamento, e os recursos de nível inferior herdarão essa política. Especificamente, você pode aplicar os seguintes itens no nível do grupo de gerenciamento que serão herdados pelas assinaturas no grupo de gerenciamento:
|
|
Núcleo | Definições de política, atribuições de política e definições de conjunto de políticas | As políticas DeployIfNotExists (DINE) ou Modify ajudam a garantir que as assinaturas e os recursos que compõem as zonas de destino sejam compatíveis. As políticas são atribuídas a grupos de gerenciamento por meio de atribuições de política. As políticas aliviam o fardo da gestão das zonas de destino. Definições de conjunto de políticas agrupam conjuntos de políticas. Nem todos os clientes podem usar as políticas DINE ou Modify. Se esse for o seu caso, as diretrizes do CAF sobre políticas personalizadas fornecem orientação. |
|
Núcleo | Definições de função e atribuições de função | O RBAC (controle de acesso baseado em função) simplifica o gerenciamento de direitos de usuário em um sistema. Em vez de gerenciar os direitos dos indivíduos, você determina os direitos necessários para diferentes funções em seu sistema. O RBAC do Azure tem várias funções internas. As definições de função personalizadas permitem criar funções personalizadas para seu ambiente. O IAM (gerenciamento de identidades e acesso) é um limite importante de segurança em cloud computing. O RBAC do Azure permite que você execute atribuições de função para funções internas ou definições de função personalizadas para Entidades de Serviço, Identidades Gerenciadas ou grupos de segurança entre grupos de gerenciamento e assinaturas. |
|
Gerenciamento | Azure Monitor, Automação do Azure e Microsoft Sentinel | O Azure Monitor, a Automação do Azure e o Microsoft Sentinel permitem que você monitore e gerencie sua infraestrutura e cargas de trabalho. O Azure Monitor é uma solução que permite coletar, analisar e agir na telemetria do seu ambiente. O Microsoft Sentinel é um SIEM (gerenciamento de eventos de informação de segurança) nativo da nuvem. Ele permite:
A Automação do Azure é um sistema de automação baseado em nuvem. Ele inclui:
|
|
Conectividade | Principais tipos de recurso de rede listados aqui | A topologia de rede é uma consideração importante nas implantações de Zona de Destino do Azure. O CAF se concentra em duas abordagens principais de rede:
|
|
Conectividade | Proteção contra DDoS do Azure | A orientação da zona de destino do Azure recomenda habilitar a Proteção de Rede contra DDoS do Azure. Este serviço oferece proteção turnkey contra ataques DDoS. | |
Conectividade | Zonas DNS, zonas DNS privadas e link de rede virtual de zona DNS privada | As zonas DNS privadas podem ser implantadas para oferecer suporte ao uso de pontos de extremidade privados. Um ponto de extremidade privado é uma NIC que recebe um endereço IP privado da sua rede virtual. Você pode usar o endereço IP privado para se comunicar com segurança com serviços que oferecem suporte ao Link Privado do Azure. As zonas DNS privadas podem ser configuradas para resolver o FQDN (nome de domínio totalmente qualificado) do serviço para o endereço IP privado do ponto de extremidade privado. |
Como usar o módulo Terraform
Como implantar os recursos principais
Por padrão, o módulo implantará a seguinte hierarquia, que é o conjunto principal de grupos de gerenciamento de zona de destino:
- Root
- Plataforma
- Identidade
- Gerenciamento
- Conectividade
- Zonas de destino
- Encerrado
- Área restrita
- Plataforma
Os grupos de gerenciamento de zona de destino SAP, Corp e Online não se aplicam a todos, portanto, não são implantados por padrão. Veja abaixo maneiras de implantá-los:
- Para fins de demonstração, você pode definir a variável
deploy_demo_landing_zones
como true, o que implantará as zonas de destino SAP, Corp e Online - Para fins de produção, você pode ativar os grupos de gerenciamento desejados definindo as seguintes variáveis como true:
deploy_corp_landing_zones
deploy_online_landing_zones
deploy_sap_landing_zones
- Você pode implantar seus próprios grupos de gerenciamento de zona de destino personalizados criando uma definição de zona de destino personalizada
Como implantar recursos de gerenciamento
Para implantar os recursos de gerenciamento, a variável deploy_management_resources
deve ser definida como true e a variável subscription_id_management
deve ser definida como o ID da assinatura de gerenciamento onde os recursos devem ser implantados.
deploy_management_resources = true
subscription_id_management = <management subscription id>
Como implantar recursos de conectividade
Implantar recursos de conectividade fornece orientações sobre como implantar essas topologias.
Como implantar recursos de identidade
Para implantar o recurso de identidade, a variável deploy_identity_resources
deve ser definida como true e a variável subscription_id_identity
deve ser definida como o ID da assinatura de identidade onde as políticas devem ser configuradas.
deploy_identity_resources = true
subscription_id_identity = <identity subscription id>
Como personalizar a implementação do Terraform
As implementações da Zona de Destino do Azure fornecidas como parte da Cloud Adoption Framework se ajustam a diversos requisitos e casos de uso. No entanto, geralmente há cenários em que a personalização é necessária para atender a necessidades comerciais específicas.
Dica
Confira Personalizar a arquitetura da zona de destino do Azure para atender aos requisitos, para obter mais informações.
O módulo Terraform de zonas de destino do Azure pode ser usado como base de sua implantação personalizada. Ele fornece uma maneira de acelerar sua implementação, eliminando a necessidade de começar do zero por causa de uma alteração necessária específica que rege uma opção pronta.
Informações sobre como personalizar os módulos estão disponíveis no wiki de repositório do GitHub GitHub: módulo Terraform de zonas de destino do Azure - Wiki. Use essa implementação como ponto de partida e configure de acordo com suas necessidades.