이 아키텍처는 인터넷에서 모든 워크로드 리소스에 대한 무단 공용 액세스를 방지하기 위해 엄격한 네트워크 제어가 있는 중요 업무용 워크로드를 설계하기 위한 지침을 제공합니다. 의도는 시스템의 전반적인 안정성이 영향을 받지 않도록 네트워킹 계층에서 공격 벡터를 중지하는 것입니다. 예를 들어, DDoS(Distributed Denial of Service) 공격을 확인하지 않으면 불법 트래픽으로 리소스를 압도하여 리소스를 사용할 수 없게 될 수 있습니다.
네트워크 제어 없이 안정성과 운영 효율성을 최대화하는 데 중점을 둔 중요 업무용 기준 아키텍처를 기반으로 합니다. 이 아키텍처는 Azure VNet(Virtual Network) 및 프라이빗 엔드포인트, Azure Private Link, Azure 프라이빗 DNS 영역 등과 같은 적절한 클라우드 네이티브 기능을 사용하여 수신 및 송신 경로를 제한하는 기능을 추가합니다.
이 문서를 진행하기 전에 기준에 익숙해지는 것이 좋습니다.
주요 디자인 전략
중요 업무용 기준 디자인 전략은 이 사용 사례에도 여전히 적용됩니다. 다음은 이 아키텍처에 대한 추가 네트워킹 고려 사항입니다.
수신 트래픽 제어
가상 네트워크에 대한 수신 또는 수신 통신은 악의적인 공격을 방지하기 위해 제한되어야 합니다.
글로벌 수준에서 WAF(Web Application Firewall) 기능을 적용하여 공격 원본에 더 가까운 네트워크 에지에서 공격을 중지합니다.
Azure 서비스에 대한 공용 연결을 제거합니다. 한 가지 방식은 프라이빗 엔드포인트를 사용하는 것입니다.
네트워크에 진입하기 전에 트래픽을 검사합니다. 서브넷의 NSG(네트워크 보안 그룹)는 구성된 IP 주소 및 포트에 대한 흐름을 허용하거나 거부하여 트래픽 필터링을 돕습니다. 이 제어 수준은 세분화된 로깅에도 도움이 됩니다.
송신 트래픽 제어
가상 네트워크에서 해당 네트워크 외부의 엔터티로의 송신 트래픽은 제한되어야 합니다. 제어력이 부족하면 악의적인 타사 서비스에 의한 데이터 반출 공격이 발생할 수 있습니다.
Azure Firewall을 사용하여 인터넷에 대한 아웃바운드 트래픽을 제한합니다. 방화벽은 FQDN(정규화된 도메인 이름)을 사용하여 트래픽을 세부적으로 필터링할 수 있습니다.
보안과 절충의 균형
보안 기능이 워크로드 아키텍처에 추가될 때 상당한 장단점이 있습니다. 성능, 운영 민첩성 및 안정성에 약간의 영향을 미칠 수 있습니다. 그러나 DDoS(서비스 거부), 데이터 침입 등과 같은 공격은 시스템의 전반적인 안정성을 대상으로 삼아 결국에는 사용하지 못하도록 할 수 있습니다.
전략은 잘 설계된 중요 업무용 워크로드에서 중요 업무용 워크로드에 대해 제공되는 전반적인 지침을 기반으로 합니다. 중요 업무용 아키텍처를 정의할 때 네트워킹 및 연결의 디자인 영역에서 권장 사항 및 모범 사례를 살펴보는 것이 좋습니다.
아키텍처
이 아키텍처의 Visio 파일을 다운로드합니다.
이 아키텍처의 구성 요소는 이러한 방식으로 광범위하게 분류할 수 있습니다. Azure 서비스에 대한 제품 설명서는 관련 리소스를 참조하세요.
전역 리소스
전역 리소스는 수명이 길고 시스템의 수명을 공유합니다. 다중 지역 배포 모델의 컨텍스트 내에서 전역적으로 사용할 수 있는 기능이 있습니다. 자세한 내용은 글로벌 리소스를 참조하세요.
Azure Front Door 프리미엄 SKU는 프라이빗 엔드포인트를 통해 노출되는 지역 배포로 트래픽을 안정적으로 라우팅하기 위한 전역 부하 분산 장치로 사용됩니다.
잘 설계된 중요 업무용 워크로드: 글로벌 트래픽 라우팅을 참조하세요.
Azure Cosmos DB for NoSQL은 여전히 컴퓨팅 클러스터 외부에 상태를 저장하는 데 사용되며 안정성을 위한 기본 구성 설정이 있습니다. 액세스는 승인된 프라이빗 엔드포인트 연결로 제한됩니다.
Azure Container Registry는 지역 복제 기능이 있는 모든 컨테이너 이미지를 저장하는 데 사용됩니다. 액세스는 승인된 프라이빗 엔드포인트 연결로 제한됩니다.
지역 리소스
지역 리소스는 단일 Azure 지역에 대한 배포 스탬프의 일부로 프로비전됩니다. 사용자에게 더 많은 복원력, 크기 조정성 및 근접성을 제공하기 위해 수명이 짧습니다. 이러한 리소스는 다른 지역의 리소스와 아무것도 공유하지 않습니다. 독립적으로 제거하거나 다른 지역에 복제할 수 있습니다. 그러나 이들은 서로 간에 전역 리소스를 공유합니다. 자세한 내용은 지역 스탬프 리소스를 참조하세요.
Azure Storage 계정의 정적 웹 사이트는 백 엔드 서비스에 요청을 보내는 SPA(단일 페이지 애플리케이션)를 호스팅합니다. 이 구성 요소는 기준 프런트 엔드와 구성이 동일합니다. 액세스는 승인된 프라이빗 엔드포인트 연결로 제한됩니다.
Azure Virtual Networks는 워크로드 및 관리 작업을 실행하기 위한 안전한 환경을 제공합니다.
내부 부하 분산 장치는 애플리케이션 원본입니다. Front Door는 이 원본을 사용하여 Private Link를 사용하여 백 엔드에 대한 프라이빗 및 직접 연결을 설정합니다.
AKS(Azure Kubernetes Service)는 애플리케이션을 실행하는 상태 비저장 백 엔드 컴퓨팅용 오케스트레이터입니다. AKS 클러스터는 프라이빗 클러스터로 배포됩니다. 따라서 Kubernetes API 서버는 공용 인터넷에 노출되지 않습니다. API 서버에 대한 액세스는 개인 네트워크로 제한됩니다. 자세한 내용은 이 아키텍처의 컴퓨팅 클러스터 문서를 참조하세요.
Azure Firewall은 Azure Virtual Network 리소스에서 나오는 모든 송신 트래픽을 검사하고 보호합니다.
Azure Event Hubs는 메시지 브로커로 사용됩니다. 액세스는 승인된 프라이빗 엔드포인트 연결로 제한됩니다.
Azure Key Vault는 지역 비밀 저장소로 사용됩니다. 액세스는 승인된 프라이빗 엔드포인트 연결로 제한됩니다.
잘 설계된 중요 업무용 워크로드: 데이터 무결성 보호를 참조하세요.
배포 파이프라인 리소스
유효성 검사된 스탬프를 일관된 방식으로 배포하려면 중요 업무용 애플리케이션의 빌드 및 릴리스 파이프라인을 완전히 자동화해야 합니다.
GitHub는 여전히 가용성이 높은 git 기반 플랫폼으로 소스 제어에 사용됩니다.
Azure Pipelines는 사전 프로덕션 및 프로덕션 환경에서 워크로드를 빌드, 테스트 및 배포하는 데 필요한 파이프라인을 자동화하기 위해 선택되었습니다.
잘 설계된 중요 업무용 워크로드: DevOps 프로세스를 참조하세요.
자체 호스팅 Azure DevOps 빌드 에이전트 풀은 빌드 및 배포를 더 잘 제어하는 데 사용됩니다. 컴퓨팅 클러스터와 모든 PaaS 리소스가 프라이빗이기 때문에 이러한 수준의 자율성이 필요합니다. Microsoft 호스트된 빌드 에이전트에서는 불가능한 네트워크 수준 통합이 필요합니다.
가시성 리소스
전역 리소스 및 지역 리소스에 대한 모니터링 데이터는 독립적으로 저장됩니다. 단일 실패 지점을 방지하기 위해 단일 중앙 집중식 가시성 저장소는 권장되지 않습니다. 자세한 내용은 가시성 리소스를 참조하세요.
Azure Log Analytics는 모든 애플리케이션 및 인프라 구성 요소에 대한 로그 및 메트릭을 저장하는 통합 싱크로 사용됩니다.
Azure Application Insights는 APM(애플리케이션 성능 관리) 도구로 사용되어 모든 애플리케이션 모니터링 데이터를 수집하고 이를 Log Analytics 내에 직접 저장합니다.
잘 설계된 중요 업무용 워크로드: 예측 작업 및 AI 작업을 참조하세요.
관리 리소스
기본 아키텍처에서 중요한 디자인 변경 내용은 컴퓨팅 클러스터입니다. 이 디자인에서 AKS 클러스터는 프라이빗입니다. 이 변경으로 인해 액세스 권한을 얻으려면 추가 리소스를 프로비전해야 합니다.
Azure Virtual Machine Scale Sets는 kubectl과 같은 클러스터에 대해 도구를 실행하기 위한 프라이빗 빌드 에이전트 및 점프 상자 인스턴스용입니다.
Azure Bastion은 점프 상자 VM에 대한 보안 액세스를 제공하고 VM이 공용 IP를 가질 필요가 없습니다.
PaaS 서비스용 프라이빗 엔드포인트
비즈니스 또는 배포 작업을 처리하기 위해 애플리케이션 및 빌드 에이전트는 전역적으로, 지역 내에서, 심지어 스탬프 내에서 프로비전되는 여러 Azure PaaS 서비스에 도달해야 합니다. 기본 아키텍처에서 해당 통신은 서비스의 공용 엔드포인트를 통해 이루어집니다.
이 디자인에서 이러한 서비스는 공용 인터넷 액세스에서 제거하기 위해 프라이빗 엔드포인트로 보호되었습니다. 이 방식은 전체 공격 표면 영역을 줄여 예기치 못한 원본에서 직접 서비스를 변조하는 것을 완화합니다. 그러나 또 다른 잠재적 실패 지점이 발생하고 복잡성이 증가합니다. 이 방식을 채택하기 전에 보안과의 장단점을 신중하게 고려합니다.
프라이빗 엔드포인트는 스탬프 가상 네트워크의 전용 서브넷에 있어야 합니다. 프라이빗 엔드포인트에 대한 개인 IP 주소는 해당 서브넷에서 할당됩니다. 기본적으로 가상 네트워크의 모든 리소스는 개인 IP 주소에 도달하여 서비스와 통신할 수 있습니다. 해당 스탬프에 필요한 모든 프라이빗 엔드포인트를 수용할 수 있을 만큼 주소 공간이 충분히 큰지 확인합니다.
프라이빗 엔드포인트를 통해 연결하려면 DNS 레코드가 필요합니다. 서비스와 연결된 DNS 레코드는 Azure DNS에서 서비스하는 Azure 프라이빗 DNS 영역에 보관하는 것이 좋습니다. FQDN(정규화된 도메인 이름)이 개인 IP 주소로 확인되는지 확인합니다.
이 아키텍처에서 프라이빗 엔드포인트는 Azure Container Registry, Azure Cosmos DB, Key Vault, 스토리지 리소스 및 Event Hubs에 대해 구성되었습니다. 또한 AKS 클러스터는 클러스터의 네트워크에서 Kubernetes API 서비스에 대한 프라이빗 엔드포인트를 만드는 프라이빗 클러스터로 배포됩니다.
이 디자인에는 두 개의 가상 네트워크가 프로비전되어 있으며 둘 다 해당 서비스에 대한 프라이빗 엔드포인트를 보유하는 전용 서브넷이 있습니다. 네트워크 레이아웃은 가상 네트워크 레이아웃에 설명되어 있습니다.
아키텍처에 더 많은 구성 요소를 추가할 때 더 많은 프라이빗 엔드포인트를 추가하는 것이 좋습니다. 예를 들어, 가시성 리소스에 제한을 추가할 수 있습니다. Azure Log Analytics와 Azure Application Insights 모두 프라이빗 엔드포인트 사용을 지원합니다. 자세한 내용은 Azure Private Link를 사용하여 Azure Monitor에 네트워크 연결을 참조하세요.
동일한 가상 네트워크 내의 동일하거나 다른 서브넷에서 만들 수 있습니다. 하나의 구독에서 만들 수 있는 프라이빗 엔드포인트 수는 제한됩니다. 자세한 내용은 Azure 제한을 참조하세요.
서브넷의 네트워크 보안 그룹을 사용하여 서비스에 대한 액세스를 추가로 제어합니다.
프라이빗 수신
Azure Front Door 프리미엄 SKU는 들어오는 모든 클라이언트 트래픽의 전역 진입점으로 사용됩니다. WAF(Web Application Firewall) 기능을 사용하여 네트워크 에지에서 트래픽을 허용하거나 거부합니다. 구성된 WAF 규칙은 스탬프 가상 네트워크에 들어가기 전에도 공격을 방지합니다.
또한 이 아키텍처는 Azure Private Link를 사용하여 백 엔드에서 공용 IP/엔드포인트를 사용하지 않고 애플리케이션 원본에 액세스하는 Front Door의 기능을 활용합니다. 이를 위해서는 스탬프 가상 네트워크에 내부 부하 분산 장치가 필요합니다. 이 리소스는 클러스터에서 실행 중인 Kubernetes 수신 컨트롤러 앞에 있습니다. 이 프라이빗 Load Balancer 위에는 Front Door의 프라이빗 연결에 사용되는 AKS에 의해 Private Link 서비스가 만들어집니다.
연결이 설정되면 Front Door 네트워크의 프라이빗 엔드포인트는 Private Link를 통해 스탬프 네트워크의 부하 분산 장치 및 정적 웹 사이트와 직접 연결됩니다.
자세한 내용은 Private Link 작동 방식을 참조하세요.
잘 설계된 중요 업무용 워크로드: 애플리케이션 제공 서비스를 참조하세요.
제한된 송신
애플리케이션에는 일부 아웃바운드 인터넷 연결이 필요할 수 있습니다. 해당 트래픽을 제어하면 송신 트래픽을 제한, 모니터링 및 제한할 수 있습니다. 그렇지 않으면 예기치 않은 내부 외부 액세스로 인해 시스템이 손상되고 잠재적으로 신뢰할 수 없는 시스템 상태가 될 수 있습니다. 제한된 송신은 데이터 반출과 같은 다른 보안 문제도 해결할 수 있습니다.
방화벽 및 NSG(네트워크 보안 그룹)를 사용하면 애플리케이션의 아웃바운드 트래픽을 검사하고 로그할 수 있습니다.
이 아키텍처에서 Azure Firewall은 단일 송신 지점이며 가상 네트워크에서 발생하는 모든 발신 트래픽을 검사하는 데 사용됩니다. UDR(사용자 정의 경로)은 애플리케이션 서브넷과 같이 송신 트래픽을 생성할 수 있는 서브넷에서 사용됩니다.
아웃바운드 트래픽 제한에 대한 자세한 내용은 AKS(Azure Kubernetes Service)에서 클러스터 노드의 송신 트래픽 제어를 참조하세요.
가상 네트워크 레이아웃
별도의 가상 네트워크에서 지역 리소스 및 관리 리소스를 격리합니다. 고유한 특성, 목적 및 보안 고려 사항이 있습니다.
트래픽 형식: 비즈니스 운영 처리에 참여하는 지역 리소스는 더 높은 수준의 보안 제어가 필요합니다. 예를 들어, 컴퓨팅 클러스터는 직접적인 인터넷 트래픽으로부터 보호되어야 합니다. 관리 리소스는 운영을 위한 지역 리소스에 액세스하기 위해서만 프로비전됩니다.
수명: 해당 리소스의 예상 수명도 다릅니다. 지역 리소스는 수명이 짧을 것으로 예상됩니다(임시). 배포 스탬프의 일부로 만들어지고 스탬프가 제거되면 삭제됩니다. 관리 리소스는 지역의 수명을 공유하고 스탬프 리소스를 사용합니다.
이 아키텍처에는 스탬프 네트워크와 운영 네트워크라는 두 개의 가상 네트워크가 있습니다. 서브넷과 NSG(네트워크 보안 그룹)를 사용하여 각 가상 네트워크 내에서 추가 격리를 만들어 서브넷 간의 통신을 보호합니다.
잘 설계된 중요 업무용 워크로드: 격리된 가상 네트워크를 참조하세요.
지역 스탬프 가상 네트워크
배포 스탬프는 각 지역에서 가상 네트워크를 프로비전합니다.
가상 네트워크는 이러한 기본 서브넷으로 나뉩니다. 모든 서브넷에는 가상 네트워크의 무단 액세스를 차단하도록 NSG(네트워크 보안 그룹)가 할당되어 있습니다. NSG는 애플리케이션 서브넷과 네트워크의 다른 구성 요소 간의 트래픽을 제한합니다.
애플리케이션 서브넷
AKS 클러스터 노드 풀은 서브넷에서 격리됩니다. 작업자 노드 풀에서 시스템 노드 풀을 추가로 격리해야 하는 경우 이를 별도의 서브넷에 배치할 수 있습니다.
스탬프 수신 서브넷
각 스탬프에 대한 진입점은 전용 서브넷에 배치된 내부 Azure 표준 Load Balancer입니다. Front Door의 프라이빗 연결에 사용되는 Private Link 서비스도 여기에 배치됩니다.
두 리소스 모두 스탬프 배포의 일부로 프로비전됩니다.
스탬프 송신 서브넷
Azure Firewall은 별도의 서브넷에 배치되며 UDR(사용자 정의 경로)을 사용하여 애플리케이션 서브넷의 송신 트래픽을 검사합니다.
프라이빗 엔드포인트 서브넷
애플리케이션 서브넷은 지역 스탬프, Key Vault 등의 PaaS 서비스에 액세스해야 합니다. 또한 컨테이너 레지스트리와 같은 전역 리소스에 대한 액세스가 필요합니다. 이 아키텍처에서는 모든 PaaS 서비스가 잠기고 프라이빗 엔드포인트를 통해서만 도달할 수 있습니다. 따라서 해당 엔드포인트에 대해 다른 서브넷이 만들어집니다. 이 서브넷에 대한 인바운드 액세스는 애플리케이션의 트래픽만 허용하는 NSG에 의해 보호됩니다.
프라이빗 엔드포인트에 대한 UDR 지원을 사용하여 추가 제한을 추가할 수 있으므로 이 트래픽은 스탬프 송신 서브넷을 통해서도 송신될 수 있습니다.
운영 가상 네트워크
운영 트래픽은 별도의 가상 네트워크에서 격리됩니다. AKS 클러스터의 API 서비스는 이 아키텍처에서 프라이빗이므로 모든 배포 및 운영 트래픽도 자체 호스팅 빌드 에이전트 및 점프 상자와 같은 프라이빗 리소스에서 나와야 합니다. 이러한 리소스는 자체 프라이빗 엔드포인트 집합을 통해 애플리케이션 리소스에 직접 연결되는 별도의 가상 네트워크에 배포됩니다. 빌드 에이전트와 점프 상자는 별도의 서브넷에 있습니다.
프라이빗 엔드포인트를 사용하는 대신 대체 방법은 가상 네트워크 피어링을 사용하는 것입니다. 그러나 피어링은 특히 가상 네트워크가 임시로 설계된 경우 관리하기 어려울 수 있는 복잡성을 추가합니다.
두 빌드 에이전트(및 선택적으로 점프 상자)는 전역 및 지역 스탬프 내에 있는 PaaS 서비스에 액세스해야 합니다. 지역 스탬프 가상 네트워크와 마찬가지로 필요한 PaaS 서비스에 대한 프라이빗 엔드포인트용으로 전용 서브넷이 만들어집니다. 이 서브넷의 NSG는 수신 트래픽이 관리 및 배포 서브넷에서만 허용되는지 확인합니다.
관리 작업
일반적인 사용 사례는 운영자가 관리 도구 및 명령을 실행하기 위해 컴퓨팅 클러스터에 액세스해야 하는 경우입니다. 프라이빗 클러스터의 API 서비스는 직접 액세스할 수 없습니다. 그렇기 때문에 운영자가 도구를 실행할 수 있는 점프 상자가 프로비전됩니다. 점프 상자를 위한 별도의 서브넷이 있습니다.
그러나 이러한 점프 상자는 무단 액세스로부터 보호되어야 합니다. RDP/SSH 포트를 열어 점프 상자에 직접 액세스하는 것은 피해야 합니다. Azure Bastion은 이러한 목적에 권장되며 이 가상 네트워크에 전용 서브넷이 필요합니다.
주의
Azure Bastion 및 점프 상자를 통한 연결은 개발자 생산성에 영향을 미칠 수 있습니다. 예를 들어, 디버깅 도구를 실행하려면 추가 프로세스가 필요합니다. 중요 업무용 워크로드에 대한 보안을 강화하기로 결정하기 전에 이러한 영향을 알고 있어야 합니다.
SSH를 통한 Bastion 서브넷의 인바운드 트래픽만 허용하는 NSG를 사용하여 점프 상자 서브넷에 대한 액세스를 추가로 제한할 수 있습니다.
배포 작업
배포 파이프라인을 빌드하려면 빌드 에이전트를 실행할 추가 컴퓨팅을 프로비전해야 합니다. 이러한 리소스는 워크로드의 런타임 가용성에 직접적인 영향을 미치지 않지만 안정성 실패는 중요 업무용 환경을 배포하거나 서비스하는 기능을 위태롭게 할 수 있습니다. 따라서 안정성 기능은 이러한 리소스로 확장되어야 합니다.
이 아키텍처는 빌드 에이전트와 점프 상자(단일 VM과 반대) 모두에 Virtual Machine Scale Sets를 사용합니다. 또한 서브넷을 사용하여 네트워크 분할을 제공합니다. 수신은 Azure DevOps로 제한됩니다.
비용 고려 사항
중요 업무용 워크로드의 비용에는 상당한 영향이 있습니다. 이 아키텍처에서 Azure Front Door 프리미엄 SKU를 사용하고 각 스탬프에서 Azure Firewall을 프로비전하는 것과 같은 기술 선택은 비용 증가로 이어집니다. 유지 관리 및 운영 리소스와 관련된 추가 비용도 있습니다. 기본 아키텍처의 네트워크 제어 버전을 채택하기 전에 이러한 장단점을 신중하게 고려해야 합니다.
이 아키텍처 배포
이 아키텍처의 네트워킹 측면은 중요 업무용 연결 구현에서 구현됩니다.
참고
연결된 구현은 조직 리소스에 의존하고 다른 워크로드와 통합하며 공유 서비스를 사용하는 중요 업무용 워크로드를 설명하기 위한 것입니다. 이 아키텍처를 기반으로 하며 이 문서에서 설명하는 네트워크 컨트롤을 사용합니다. 그러나 연결됨 시나리오에서는 VPN(가상 사설망) 또는 Azure 프라이빗 DNS 영역이 Azure 랜딩 존 연결 구독 내에 이미 있다고 가정합니다.
다음 단계
이 아키텍처에서 내린 디자인 결정에 대한 자세한 내용은 Azure Well-Architected Framework에서 중요 업무용 워크로드에 대한 네트워킹 및 연결 디자인 영역을 검토합니다.
관련 참고 자료
이 아키텍처에 사용되는 Azure 서비스에 대한 제품 설명서는 다음 문서를 참조하세요.