Terraform을 사용 하 여 방문 영역 빌드Use Terraform to build your landing zones

Azure는 방문 영역을 배포 하기 위한 기본 서비스를 제공 합니다.Azure provides native services for deploying your landing zones. 다른 타사 도구도 이러한 작업에 도움이 될 수도 있습니다.Other third-party tools can also help with this effort. 고객과 파트너가 일반적으로 방문 영역을 배포 하는 데 사용 하는 이러한 도구 중 하나는 HashiCorp의 Terraform입니다.One such tool that customers and partners often use to deploy landing zones is Terraform by HashiCorp. 이 섹션에서는 샘플 방문 영역을 사용 하 여 Azure 구독에 대 한 기본 거 버 넌 스, 계정 및 보안 기능을 배포 하는 방법을 보여 줍니다.This section shows how to use a sample landing zone to deploy foundational governance, accounting, and security capabilities for an Azure subscription.

방문 영역의 용도Purpose of the landing zone

Terraform에 대 한 클라우드 채택 프레임 워크 기초 영역에서는 로깅, 계정 및 보안을 적용 하는 기능을 제공 합니다.The Cloud Adoption Framework foundations landing zone for Terraform provides features to enforce logging, accounting, and security. 이 방문 영역에서는 Terraform 모듈 이라고 하는 표준 구성 요소를 사용 하 여 환경에 배포 된 리소스 간에 일관성을 적용 합니다.This landing zone uses standard components known as Terraform modules to enforce consistency across resources deployed in the environment.

표준 모듈 사용Use standard modules

구성 요소를 다시 사용 하는 것은 코드의 인프라의 기본 원칙입니다.Reuse of components is a fundamental principle of infrastructure as code. 모듈은 환경 내부 및 환경에서 리소스 배포 간의 표준 및 일관성을 정의 하는 경우에도 사용할 수 있습니다.Modules are instrumental in defining standards and consistency across resource deployment within and across environments. 이 첫 번째 방문 영역을 배포 하는 데 사용 되는 모듈은 공식 Terraform 레지스트리에서사용할 수 있습니다.The modules used to deploy this first landing zone are available in the official Terraform registry.

아키텍처 다이어그램Architecture diagram

첫 번째 방문 영역은 구독에서 다음 구성 요소를 배포 합니다.The first landing zone deploys the following components in your subscription:

Terraform 그림 1: Terraform을 사용 하는 기초 방문 영역Foundational landing zone using Terraform Figure 1: A foundation landing zone using Terraform.

기능Capabilities

배포 된 구성 요소 및 용도는 다음과 같습니다.The components deployed and their purpose include the following:

구성 요소Component 책임Responsibility
리소스 그룹Resource groups 기반에 필요한 핵심 리소스 그룹Core resource groups needed for the foundation
활동 로깅Activity logging 모든 구독 활동 감사 및 보관:Auditing all subscription activities and archiving:
  • 스토리지 계정Storage account
  • Azure Event HubsAzure Event Hubs
  • 진단 로깅Diagnostics logging 지정 된 기간 (일) 동안 유지 되는 모든 작업 로그:All operation logs kept for a specific number of days:
  • 스토리지 계정Storage account
  • Event HubsEvent Hubs
  • Log AnalyticsLog Analytics 작업 로그를 저장 합니다.Stores the operation logs. 심층 응용 프로그램 모범 사례 검토에 대 한 일반적인 솔루션 배포:Deploy common solutions for deep application best practices review:
  • NetworkMonitoringNetworkMonitoring
  • AdAssessmentAdAssessment
  • AdReplicationAdReplication
  • AgentHealthAssessmentAgentHealthAssessment
  • DnsAnalyticsDnsAnalytics
  • KeyVaultAnalyticsKeyVaultAnalytics
  • Azure Security CenterAzure Security Center 전자 메일 및 전화 번호로 전송 되는 보안 예방 메트릭 및 경고Security hygiene metrics and alerts sent to email and phone number

    이 청사진 사용Use this blueprint

    클라우드 채택 프레임 워크 기반 방문 영역을 사용 하기 전에 다음 가정, 결정 및 구현 지침을 검토 합니다.Before you use the Cloud Adoption Framework foundation landing zone, review the following assumptions, decisions, and implementation guidance.

    가정Assumptions

    이 초기 방문 영역을 정의한 경우 다음 가정이 나 제약 조건이 고려 되었습니다.The following assumptions or constraints were considered when this initial landing zone was defined. 이러한 가정이 제약 조건과 일치하는 경우 청사진을 사용하여 첫 번째 방문 영역을 만들 수 있습니다.If these assumptions align with your constraints, you can use the blueprint to create your first landing zone. 또한 청사진을 확장하여 고유한 제약 조건을 충족하는 방문 영역 청사진을 만들 수도 있습니다.The blueprint also can be extended to create a landing zone blueprint that meets your unique constraints.

    • 구독 제한: 이 도입 활동은 구독 제한을초과할 가능성이 낮습니다.Subscription limits: This adoption effort is unlikely to exceed subscription limits. 두 가지 일반적인 지표는 VM 25,000대 또는 vCPU 10,000개를 초과하는 것입니다.Two common indicators are an excess of 25,000 VMs or 10,000 vCPUs.
    • 규정 준수: 이 방문 영역에는 타사 규정 준수 요구 사항이 필요 하지 않습니다.Compliance: No third-party compliance requirements are needed for this landing zone.
    • 아키텍처 복잡성: 아키텍처 복잡성에는 추가 프로덕션 구독이 필요 하지 않습니다.Architectural complexity: Architectural complexity doesn't require additional production subscriptions.
    • 공유 서비스: Azure의 기존 공유 서비스에는 허브 및 스포크 아키텍처의 스포크 처럼이 구독을 처리 하지 않아도 됩니다.Shared services: No existing shared services in Azure require this subscription to be treated like a spoke in a hub and spoke architecture.

    이러한 가정이 현재 환경과 일치 하는 경우이 청사진은 랜딩 영역 빌드를 시작 하는 좋은 방법일 수 있습니다.If these assumptions match your current environment, this blueprint might be a good way to start building your landing zone.

    디자인 결정Design decisions

    다음은 CAF Terraform 모듈에 표시 되는 결정 사항입니다.The following decisions are represented in the CAF Terraform modules:

    구성 요소Component 의사 결정Decisions 대체 방법Alternative approaches
    로깅 및 모니터링Logging and monitoring Azure Monitor Log Analytics 작업 영역이 사용 됩니다.Azure Monitor Log Analytics workspace is used. 진단 저장소 계정 및 이벤트 허브가 프로 비전 됩니다.A diagnostics storage account as well as event hub is provisioned.
    네트워크Network 해당 없음-네트워크가 다른 방문 영역에서 구현 됩니다.N/A - network is implemented in another landing zone. 네트워킹 결정Networking decisions
    IDIdentity 구독이 이미 Azure Active Directory 인스턴스에 연결되어 있다고 가정합니다.It's assumed that the subscription is already associated with an Azure Active Directory instance. ID 관리 모범 사례Identity management best practices
    정책Policy 현재이 랜딩 영역에서는 Azure 정책이 적용 되지 않는다고 가정 합니다.This landing zone currently assumes that no Azure policies are to be applied.
    구독 디자인Subscription design 해당 없음-단일 프로덕션 구독을 위해 설계 되었습니다.N/A - designed for a single production subscription. 초기 구독 만들기Create initial subscriptions
    리소스 그룹Resource groups 해당 없음-단일 프로덕션 구독을 위해 설계 되었습니다.N/A - designed for a single production subscription. 구독 크기 조정Scale subscriptions
    관리 그룹Management groups 해당 없음-단일 프로덕션 구독을 위해 설계 되었습니다.N/A - designed for a single production subscription. 구독 구성Organize subscriptions
    데이터Data 해당 없음N/A Azure 및 azure 데이터 저장소 지침 에서 올바른 SQL Server 옵션을 선택 합니다 .Choose the correct SQL Server option in Azure and Azure data store guidance
    스토리지Storage 해당 없음N/A Azure Storage 지침Azure Storage guidance
    이름 지정 표준Naming standards 환경을 만들면 고유한 접두사도 만들어집니다.When the environment is created, a unique prefix is also created. 전역 고유 이름 (예: 저장소 계정)을 필요로 하는 리소스는이 접두사를 사용 합니다.Resources that require a globally unique name (such as storage accounts) use this prefix. 사용자 지정 이름에 임의의 접미사가 추가 됩니다.The custom name is appended with a random suffix. 다음 표에 설명 된 대로 태그 사용이 위임 됩니다.Tag usage is mandated as described in the following table. 명명 및 태그 지정 모범 사례Naming and tagging best practices
    비용 관리Cost management 해당 없음N/A 비용 추적Tracking costs
    컴퓨팅Compute 해당 없음N/A Compute 옵션Compute options

    태그 표준Tagging standards

    아래에 표시 된 최소 태그 집합은 모든 리소스 및 리소스 그룹에 있어야 합니다.The minimum set of tags shown below must be present on all resources and resource groups:

    태그 이름Tag name DescriptionDescription Key 예제 값Example values
    사업부Business unit 리소스가 속한 구독 또는 워크로드를 소유한 회사의 최상위 사업부.Top-level division of your company that owns the subscription or workload the resource belongs to. BusinessUnit finance, marketing, <product-name>, corp, sharedfinance, marketing, <product-name>, corp, shared
    비용 센터Cost center 이 리소스와 연결된 회계 비용 센터.Accounting cost center associated with this resource. CostCenter <cost-center-number>
    재해 복구Disaster recovery 애플리케이션, 워크로드 또는 서비스의 비즈니스 중요도.Business criticality of the application, workload, or service. DR dr-enabled, non-dr-enableddr-enabled, non-dr-enabled
    EnvironmentEnvironment 애플리케이션, 워크로드 또는 서비스의 배포 환경.Deployment environment of the application, workload, or service. Env prod, dev, qa, staging, test, trainingprod, dev, qa, staging, test, training
    소유자 이름Owner name 애플리케이션, 워크로드 또는 서비스의 소유자.Owner of the application, workload, or service. Owner email
    배포 유형Deployment type 리소스를 유지 관리 하는 방법을 정의 합니다.Defines how the resources are being maintained. DeploymentType manual, terraformmanual, terraform
    버전Version 배포 된 청사진의 버전입니다.Version of the blueprint deployed. Version v0.1
    애플리케이션 이름Application name 리소스와 연결 된 연결 된 응용 프로그램, 서비스 또는 작업의 이름입니다.Name of the associated application, service, or workload associated with the resource. ApplicationName <app-name>

    첫 번째 방문 영역 사용자 지정 및 배포Customize and deploy your first landing zone

    Terraform foundation 방문 영역을 복제할수 있습니다.You can clone your Terraform foundation landing zone. Terraform 변수를 수정 하 여 방문 영역으로 쉽게 시작 하세요.Get started easily with the landing zone by modifying the Terraform variables. 이 예제에서는 tfvars를 blueprint_foundations 사용 하므로 Terraform이 파일의 값을 자동으로 설정 합니다.In our example, we use blueprint_foundations.sandbox.auto.tfvars, so Terraform automatically sets the values in this file for you.

    다른 변수 섹션을 살펴보겠습니다.Let's look at the different variable sections.

    이 첫 번째 개체에서는 southeastasia -hub-core-sec -hub-operations 런타임에 추가 된 접두사와 함께 이라는 지역에 두 개의 리소스 그룹을 만듭니다.In this first object, we create two resource groups in the southeastasia region named -hub-core-sec and -hub-operations along with a prefix added at runtime.

    resource_groups_hub = {
        HUB-CORE-SEC    = {
            name = "-hub-core-sec"
            location = "southeastasia"
        }
        HUB-OPERATIONS  = {
            name = "-hub-operations"
            location = "southeastasia"
        }
    }
    

    다음으로, 기초를 설정할 수 있는 지역을 지정 합니다.Next, we specify the regions where we can set the foundations. 여기에서를 southeastasia 사용 하 여 모든 리소스를 배포 합니다.Here, southeastasia is used to deploy all the resources.

    location_map = {
        region1   = "southeastasia"
        region2   = "eastasia"
    }
    

    그런 다음 작업 로그 및 Azure 구독 로그의 보존 기간을 지정 합니다.Then, we specify the retention period for the operations logs and the Azure subscription logs. 이 데이터는 고유 해야 하므로 임의로 생성 되는 별도의 저장소 계정 및 이벤트 허브에 저장 됩니다.This data is stored in separate storage accounts and an event hub, whose names are randomly generated because they must be unique.

    azure_activity_logs_retention = 365
    azure_diagnostics_logs_retention = 60
    

    Tags_hub에는 만든 모든 리소스에 적용 되는 최소 태그 집합을 지정 합니다.Into the tags_hub, we specify the minimum set of tags that are applied to all resources created.

    tags_hub = {
        environment     = "DEV"
        owner           = "Arnaud"
        deploymentType  = "Terraform"
        costCenter      = "65182"
        BusinessUnit    = "SHARED"
        DR              = "NON-DR-ENABLED"
    }
    

    그런 다음 배포를 분석 하는 Log Analytics 이름 및 솔루션 집합을 지정 합니다.Then, we specify the Log Analytics name and a set of solutions that analyze the deployment. 여기에서는 네트워크 모니터링, Active Directory 평가 및 복제, DNS 분석 및 Key Vault 분석을 유지 했습니다.Here, we retained network monitoring, Active Directory assessment and replication, DNS Analytics, and Key Vault analytics.

    
    analytics_workspace_name = "lalogs"
    
    solution_plan_map = {
        NetworkMonitoring = {
            "publisher" = "Microsoft"
            "product"   = "OMSGallery/NetworkMonitoring"
        },
        ADAssessment = {
            "publisher" = "Microsoft"
            "product"   = "OMSGallery/ADAssessment"
        },
        ADReplication = {
            "publisher" = "Microsoft"
            "product"   = "OMSGallery/ADReplication"
        },
        AgentHealthAssessment = {
            "publisher" = "Microsoft"
            "product"   = "OMSGallery/AgentHealthAssessment"
        },
        DnsAnalytics = {
            "publisher" = "Microsoft"
            "product"   = "OMSGallery/DnsAnalytics"
        },
        KeyVaultAnalytics = {
            "publisher" = "Microsoft"
            "product"   = "OMSGallery/KeyVaultAnalytics"
        }
    }
    
    

    그런 다음 Azure Security Center에 대 한 경고 매개 변수를 구성 했습니다.Next, we configured the alert parameters for Azure Security Center.

    # Azure Security Center Configuration
    security_center = {
        contact_email   = "joe@contoso.com"
        contact_phone   = "+6500000000"
    }
    

    작업 수행Take action

    구성을 검토 한 후에는 Terraform 환경을 배포할 때와 같이 구성을 배포할 수 있습니다.After you've reviewed the configuration, you can deploy the configuration as you would deploy a Terraform environment. Windows, Linux 또는 macOS에서 배포할 수 있는 Docker 컨테이너인 rover를 사용 하는 것이 좋습니다.We recommend that you use the rover, which is a Docker container that allows deployment from Windows, Linux, or macOS. 랜딩 영역을 시작할 수 있습니다.You can get started with the landing zones.

    다음 단계Next steps

    기반 방문 영역은 복잡 한 환경에 대 한 토대를 분해 된 방식으로 배치 합니다.The foundation landing zone lays the groundwork for a complex environment in a decomposed manner. 이 버전은 청사진에 다른 모듈을 추가 하거나 그 위에 추가 방문 영역을 계층화 하 여 확장할 수 있는 간단한 기능 집합을 제공 합니다.This edition provides a set of simple capabilities that can be extended by adding other modules to the blueprint or layering additional landing zones on top of it.

    랜딩 영역 계층화는 시스템을 분리 하 고, 사용 중인 각 구성 요소의 버전을 관리 하 고, 인프라의 신속한 혁신 및 안정성을 코드 배포로 허용 하는 좋은 방법입니다.Layering your landing zones is a good practice for decoupling systems, versioning each component that you're using, and allowing fast innovation and stability for your infrastructure as code deployment.

    이후 참조 아키텍처는 허브 및 스포크 토폴로지에 대해 이러한 개념을 보여 줍니다.Future reference architectures will demonstrate this concept for a hub and spoke topology.