다음을 통해 공유


Azure 랜딩 존 - Terraform 모듈 디자인 고려 사항

이 문서에서는 Azure 랜딩 존 Terraform 모듈을 사용할 때 고려해야 할 중요한 영역에 대해 설명합니다. 이 모듈은 CAF(클라우드 채택 프레임워크)에 자세히 설명된 대로Azure 랜딩 존 개념 아키텍처를 바탕으로 Azure 플랫폼을 배포하고 운영하는 의견을 제시하는 접근 방식을 제공합니다.

Terraform은 선언적 구문을 사용하여 인프라 리소스를 배포하는 HashiCorp에서 만든 오픈 소스 IaC(Infrastructure as Code) 도구입니다. 확장 가능하고, 플랫폼 간 지원을 제공하고, 상태 추적을 통해 변경할 수 없는 인프라를 사용하도록 설정합니다.


중요

이 모듈은 Terraform 레지스트리: Azure 랜딩 존 Terraform 모듈에서 사용할 수 있습니다. 이를 시작점으로 사용하고 필요에 따라 구성할 수 있습니다.

참고

포털 기반, ARM 템플릿 및 Terraform 모듈을 비롯한 여러 배포 기술에 대한 구현이 있습니다. 배포 기술의 선택은 결과 Azure 랜딩 존 배포에 영향을 미치지 않아야 합니다.

ALZ Terraform Accelerator

Terraform을 사용하여 ALZ 배포를 빠르게 시작하려면 템플릿으로 사용하도록 설계된 ALZ Terraform Accelerator를 활용할 수 있습니다. 이 리포지토리는 Azure DevOps 파이프라인 및 GitHub 작업 워크플로를 사용하여 Azure 랜딩 존 Terraform 모듈의 지원 구현을 제공합니다.

ALZ Terraform Accelerator3단계 접근 방식을 따릅니다.

  1. 필수 구성 요소: 자격 증명 및 구독을 구성하는 지침입니다.
  2. 부트스트랩: PowerShell 스크립트를 실행하여 지속적인 배달 환경을 생성합니다.
  3. 실행: 조직의 요구에 맞게 모듈을 업데이트하고(필요한 경우) 지속적인 업데이트를 통해 배포합니다.

Azure 랜딩 존 환경을 가동하고 실행하기 위한 단계별 사용자 가이드로 시작합니다.

디자인

Azure 랜딩 존 개념 아키텍처를 보여 주는 다이어그램.

아키텍처는 Terraform의 구성 가능한 특성을 활용하며 기본 오케스트레이션 모듈로 구성됩니다. 이 모듈은 Azure 랜딩 존 개념 아키텍처의 여러 기능을 캡슐화합니다. 각 기능을 개별적으로 또는 부분적으로 배포할 수 있습니다. 예를 들어 허브 네트워크만 또는 Azure DDoS Protection만 또는 DNS 리소스만 배포할 수 있습니다. 이렇게 할 때는 기능에 종속성이 있다는 점을 고려해야 합니다.

아키텍처는 오케스트레이터 접근 방식을 활용하여 배포 환경을 간소화합니다. 각각이 아키텍처의 특정 부분에 전용인 하나 이상의 전용 모듈 인스턴스를 사용하여 각 기능을 구현하는 것이 좋습니다. 이 모든 것은 올바른 구성으로 가능합니다.

모듈

Terraform의 핵심 개념은 모듈을 사용하는 것입니다. 모듈을 사용하면 배포를 논리적 그룹화로 구성할 수 있습니다. 모듈을 사용하면 배포의 복잡한 세부 정보를 캡슐화하여 Terraform 파일의 가독성을 높일 수 있습니다. 다른 배포에 모듈을 쉽게 다시 사용할 수도 있습니다.

모듈을 다시 사용하는 기능은 랜딩 존을 정의하고 배포할 때 실질적인 혜택을 제공합니다. 이를 통해 코드에서 반복 가능하고 일관된 환경을 구현하면서 적절한 규모로 배포하는 데 필요한 노력을 줄일 수 있습니다.

Azure 랜딩 존의 Terraform 구현은 오케스트레이션 레이어 역할을 하는 단일 모듈을 사용하여 제공됩니다. 오케스트레이션 레이어를 사용하면 모듈을 사용하여 배포 및 관리되는 리소스를 선택할 수 있습니다. 모듈은 동일한 환경에서 여러 번 사용하여 리소스를 서로 독립적으로 배포할 수 있습니다. 이는 서로 다른 팀이 다양한 기능 또는 하위 리소스 컬렉션을 담당하는 조직에서 유용할 수 있습니다.

레이어 및 준비 프로세스

구현은 Azure 랜딩 존 개념 아키텍처의 중앙 리소스 계층 구조에 중점을 둡니다. 디자인은 다음 기능을 중심으로 수행됩니다.

  • 핵심 리소스
  • 관리 리소스
  • 연결 리소스
  • ID 리소스

모듈은 함께 배포하도록 의도된 대로 리소스를 이러한 기능으로 그룹화합니다. 이러한 그룹은 구현의 논리적 스테이지를 형성합니다.

기능 플래그를 사용하여 이러한 각 기능의 배포를 제어합니다. 이 방법의 이점은 시간이 지남에 따라 환경에 증분 방식으로 추가할 수 있다는 것입니다. 예를 들어 적은 수의 기능으로 시작할 수 있습니다. 준비가 되면 이후 단계에서 나머지 기능을 추가할 수 있습니다.

핵심 리소스

모듈의 핵심 리소스 기능은 클라우드 채택 프레임워크의 리소스 조직 디자인 영역에 맞춰 조정됩니다. Azure 랜딩 존에 대한 개념 아키텍처의 기본 리소스를 배포합니다.

Terraform 모듈에서 배포한 핵심 Azure 랜딩 존 아키텍처를 보여 주는 다이어그램.

아키타입

핵심 리소스 기능 내에서 중요한 개념은 아키타입을 포함하는 것입니다.

아키타입은 지정된 범위에서 적용해야 하는 정책 정의, 정책 세트 정의, 정책 할당, 역할 정의 및 역할 할당을 정의하는 재사용 가능한 코드 기반 접근 방식을 제공합니다. Terraform 구현에서 이러한 결정은 아키타입 정의로 캡슐화됩니다.

랜딩 존을 만들기 위해 관리 그룹은 아키타입 정의와 연결됩니다. 기업 랜딩 존에 대한 아래 예제에서 archetype_config에는 “es_corp” 아키타입 정의에 대한 포인터가 있습니다. 해당 정의에는 이 관리 그룹에 추가될 모든 정책 및 역할 구성이 포함됩니다.

  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 = {}
    }
  }

기본 제공 아키타입이 요구 사항에 맞지 않는 경우 모듈은 새로운 아키타입을 만들거나기존 아키타입을 변경하는 옵션을 제공합니다.

관리 리소스

모듈의 관리 리소스 기능은 클라우드 채택 프레임워크 관리 디자인 영역에 맞춰 조정됩니다. 이 기능은 관리 플랫폼 랜딩 존에 관리 및 모니터링 리소스를 배포하는 옵션을 제공합니다.

연결 리소스

모듈의 연결 리소스 기능은 Azure 랜딩 존에 대한 개념 아키텍처네트워크 토폴로지 및 연결을 배포하는 옵션을 제공합니다.

ID 리소스

모듈의 ID 리소스 기능은 클라우드 채택 프레임워크의 Azure ID 및 액세스 관리 디자인 영역에 맞춰 조정됩니다. 이 기능은 ID 플랫폼 랜딩 존에서 정책을 구성하는 옵션을 제공합니다.

참고

이 기능으로 배포되는 다른 리소스는 없습니다. 변수가 deploy_identity_resources true로 설정되면 ID 플랫폼 랜딩 존 구독의 리소스를 보호하는 Azure Policy 할당이 구성됩니다.

모듈 설명

이 섹션에서는 이 모듈이 배포한 리소스의 개략적인 개요를 제공합니다.

계층 리소스 유형 설명 유용한 링크
핵심 관리 그룹 관리 그룹은 Azure 테넌트에서 가장 높은 수준의 리소스입니다. 관리 그룹을 사용하면 리소스를 더욱 쉽게 관리할 수 있습니다. 관리 그룹 수준에서 정책을 적용할 수 있으며 하위 수준 리소스는 해당 정책을 상속합니다. 특히 관리 그룹의 구독이 상속할 관리 그룹 수준의 다음 항목을 적용할 수 있습니다.
  • Azure 정책
  • Azure RBAC(역할 기반 액세스 제어) 역할 할당
  • ‘비용 제어’
핵심 정책 정의, 정책 할당 및 정책 집합 정의 DeployIfNotExists(DINE) 또는 정책 수정은 랜딩 존을 구성하는 구독 및 리소스가 규정을 준수하도록 하는 데 도움이 됩니다. 정책은 정책 할당을 통해 관리 그룹에 할당됩니다. 이 정책은 랜딩 존 관리의 부담을 덜어줍니다. 정책 집합 정의는 정책 집합을 함께 그룹화합니다.

모든 고객이 DINE 또는 정책 수정을 사용할 수 있는 것은 아닙니다. 이 경우 사용자 지정 정책에 대한 CAF 참고 자료가 참고 자료를 제공합니다.
핵심 역할 정의 및 역할 할당 RBAC(역할 기반 액세스 제어)는 시스템 내에서 사용자 권한 관리를 간소화합니다. 개인의 권리를 관리하는 대신 시스템의 다양한 역할에 필요한 권한을 결정합니다. Azure RBAC에는 몇 가지 기본 제공 역할이 있습니다. 사용자 지정 역할 정의를 사용하면 사용자 환경에 대한 사용자 지정 역할을 만들 수 있습니다.

IAM(ID 및 액세스 관리)은 클라우드 컴퓨팅의 주요 보안 경계입니다. Azure RBAC를 사용하면 관리 그룹 및 구독에서 서비스 주체, 관리형 ID 또는 보안 그룹에 기본 제공 역할 또는 사용자 지정 역할 정의의 역할 할당을 수행할 수 있습니다.
관리 Azure Monitor, Azure Automation 및 Microsoft Sentinel Azure Monitor, Azure Automation 및 Microsoft Sentinel을 사용하면 인프라 및 워크로드를 모니터링하고 관리할 수 있습니다. Azure Monitor는 사용자 환경에서 원격 분석을 수집, 분석 및 수행할 수 있는 솔루션입니다.

Microsoft Sentinel은 클라우드 네이티브 SIEM(보안 정보 및 이벤트 관리)입니다. 다음을 수행할 수 있습니다.
  • 수집 - 전체 인프라에서 데이터 수집
  • 검색 - 이전에 검색되지 않은 위협 검색
  • 응답 - 기본 제공 오케스트레이션을 사용하여 합법적인 위협에 대응
  • 조사 - 인공 지능을 사용하여 위협을 조사

Azure Automation은 클라우드 기반 자동화 시스템입니다. 다음을 포함합니다.
  • 구성 관리 - Linux 및 Windows 가상 머신에 대한 변경 내용 목록 생성 및 추적, 원하는 상태 구성 관리
  • 업데이트 관리 - Windows 및 Linux 시스템 규정 준수 평가 및 규정 준수 충족을 위한 배포 예약
  • 프로세스 자동화 - 관리 작업 자동화
연결 여기에 나열된 핵심 네트워킹 리소스 유형 네트워크 토폴로지는 Azure 랜딩 존 배포의 주요 고려 사항입니다. CAF는 다음 두 가지 핵심 네트워킹 접근 방식에 중점을 둡니다.
  • Azure Virtual WAN 기반 토폴로지
  • 기존 토폴로지
연결 Azure DDoS Protection Azure 랜딩 존 참고 자료는 Azure DDoS 네트워크 보호를 사용하도록 설정하는 것이 좋습니다. 이 서비스는 DDoS 공격에 대한 턴키 보호를 제공합니다.
연결 DNS 영역, 프라이빗 DNS 영역 및 프라이빗 DNS 영역 Virtual Network 링크 프라이빗 엔드포인트 사용을 지원하기 위해 프라이빗 DNS 영역을 배포할 수 있습니다. 프라이빗 엔드포인트는 가상 네트워크에서 개인 IP 주소가 할당된 NIC입니다. 개인 IP 주소를 사용하여 Azure Private Link를 지원하는 서비스와 안전하게 통신할 수 있습니다. 서비스의 FQDN(정규화된 도메인 이름)을 프라이빗 엔드포인트 개인 IP 주소로 확인하도록 프라이빗 DNS 영역을 구성할 수 있습니다.

Terraform 모듈 사용

핵심 리소스 배포

기본적으로 모듈은 랜딩 존 관리 그룹의 핵심 집합인 다음과 같은 계층 구조를 배포합니다.

  • 뿌리
    • 작업대
      • ID
      • 관리
      • 연결
    • 랜딩 존
    • 서비스 해제됨
    • 샌드박스

SAP, Corp 및 Online 랜딩 존 관리 그룹은 모든 사용자에게 적용되지 않으므로 기본적으로 배포되지 않습니다. 다음은 배포하는 방법입니다.

  1. 데모를 위해 deploy_demo_landing_zonesSAP, Corp 및 Online 랜딩 존을 배포할 변수를 true로 설정할 수 있습니다.
  2. 프로덕션 목적으로 다음 변수를 true로 설정하여 원하는 관리 그룹을 설정할 수 있습니다.
    • deploy_corp_landing_zones
    • deploy_online_landing_zones
    • deploy_sap_landing_zones
  3. 사용자 지정 랜딩 존 정의를 만들어 자체 사용자 지정 랜딩 존 관리 그룹을 배포할 수 있습니다.

관리 리소스 배포

관리 리소스를 배포하려면 deploy_management_resources변수를 true로 설정하고 subscription_id_management변수를 리소스를 배포할 관리 구독의 ID로 설정해야 합니다.

deploy_management_resources = true
subscription_id_management = <management subscription id>

연결 리소스 배포

연결 리소스 배포는 이러한 토폴로지를 배포하는 방법에 대한 참고 자료를 제공합니다.

ID 리소스 배포

ID 기능을 배포하려면 deploy_identity_resources변수를 true로 설정하고subscription_id_identity 변수를 정책을 구성할 ID 구독의 ID로 설정해야 합니다.

deploy_identity_resources = true
subscription_id_identity = <identity subscription id>

Terraform 구현 사용자 지정

클라우드 채택 프레임워크 일부로 제공되는 Azure 랜딩 존 구현은 다양한 요구 사항 및 사용 사례에 적합합니다. 그러나 특정 비즈니스 요구 사항을 충족하기 위해 사용자 지정이 필요한 경우가 많습니다.

자세한 내용은 요구 사항을 충족하도록 Azure 랜딩 존 아키텍처 조정을 참조하세요.

Azure 랜딩 존 Terraform 모듈은 사용자 지정된 배포의 기초로 사용할 수 있습니다. 미리 만들어진 옵션을 제외하는 특정 필수 변경으로 인해 처음부터 시작할 필요가 없도록 하여 구현을 가속화할 수 있는 방법을 제공합니다.

GitHub 로고 모듈 사용자 지정에 대한 정보는 GitHub 리포지토리 위키인 GitHub: Azure 랜딩 존 Terraform 모듈 - Wiki에서 확인할 수 있습니다. 이를 시작점으로 사용하고 필요에 따라 구성할 수 있습니다.