디자인에 대한 API 우선 접근 방식을 준수하는 워크로드가 늘어나고 인터넷을 통해 웹 애플리케이션에 대한 위협의 심각도가 증가함에 따라 API를 보호하기 위한 보안 전략을 마련하는 것이 중요합니다. API 보안을 향한 한 가지 단계는 게이트웨이 라우팅 패턴을 사용하여 네트워크 트래픽을 보호하는 것입니다. 게이트웨이를 사용하여 유연한 라우팅 규칙을 지원하는 것 외에도 트래픽 원본 위치 및 트래픽 품질을 제한합니다. 이 문서에서는 Azure Application Gateway 및 Azure API Management를 사용하여 API 액세스를 보호하는 방법을 설명합니다.
아키텍처
이 문서에서는 App Service Environment, Azure SQL Managed Instance 및 Azure Kubernetes Services와 같은 애플리케이션의 기본 플랫폼을 다루지 않습니다. 다이어그램의 해당 부분에서는 더 광범위한 솔루션으로 수행할 수 있는 작업만 소개합니다. 이 문서에서는 음영 처리된 영역, API Management 및 Application Gateway를 구체적으로 설명합니다.
이 아키텍처의 Visio 파일을 다운로드합니다.
워크플로
Application Gateway는 서브넷의 NSG(네트워크 보안 그룹)에서 허용한 HTTP 요청을 받습니다.
Application Gateway의 WAF(웹 애플리케이션 방화벽)는 지오매치 사용자 지정 규칙을 포함하여 WAF 규칙에 대한 요청을 확인합니다. 요청이 유효한 경우 요청이 진행됩니다.
Application Gateway는 적절한 백 엔드 풀에 요청을 보내는 URL 프록시 메커니즘을 설정합니다. 예를 들어 API 호출의 URL 형식에 따라 다음을 수행합니다.
api.<some-domain>/external/*
과 형식이 지정된 URL은 백 엔드에 도달하여 요청된 API와 상호 작용할 수 있습니다.대상이 없는 백 엔드 풀인 데드 엔드(싱크풀)로 이동하면서
api.<some-domain>/*
형식이 지정된 호출입니다.
또한 Application Gateway는 동일한 Azure 가상 네트워크의 리소스에서 오는 내부 호출을 수락하고 프록시합니다
api.<some-domain>/internal/*
.마지막으로 API는 API Management 수준에서 다음 패턴에 따라 호출을 수락하도록 설정됩니다.
api.<some-domain>/external/*
api.<some-domain>/internal/*
이 시나리오에서 API Management는 공용 및 프라이빗이라는 두 가지 형식의 IP 주소를 사용합니다. 공용 IP 주소는 포트 3443의 내부 통신 및 외부 가상 네트워크 구성의 런타임 API 트래픽에 사용됩니다. API Management에서 공용 인터넷 연결 백 엔드에 요청을 보내면 공용 IP 주소는 요청 원본으로 표시됩니다. 자세한 내용은 VNet에서 API Management 서비스의 IP 주소를 참조하세요.
Application Gateway 수준의 라우팅 규칙은 개발자가 내부 및 외부 환경 모두에서 API 및 해당 구성을 관리할 수 있도록 사용자를
portal.<some-domain>/*
개발자 포털로 올바르게 리디렉션합니다.
구성 요소
Azure Virtual Network 를 사용하면 다양한 유형의 Azure 리소스가 서로, 인터넷 및 온-프레미스 네트워크와 비공개로 통신할 수 있습니다. 이 아키텍처에서 Application Gateway는 공용 인터넷 트래픽을 이 프라이빗 네트워크로 터널링하는 역할을 담당합니다.
Azure Application Gateway는 웹 애플리케이션에 대한 트래픽을 관리하는 웹 트래픽 부하 분산 장치입니다. 이 유형의 라우팅은 애플리케이션 계층(OSI 계층 7) 부하 분산이라고 합니다. 이 아키텍처에서는 라우팅에 사용되는 게이트웨이일 뿐만 아니라 일반적인 웹 기반 공격 벡터로부터 보호하기 위해 WAF(웹 애플리케이션 방화벽)도 호스트합니다.
Azure API Management 는 모든 환경에서 API를 위한 하이브리드 다중 클라우드 관리 플랫폼입니다. API Management는 기존 백 엔드 서비스에 사용되는 일관된 최신 API 게이트웨이를 만듭니다. 이 아키텍처에서 API Management는 완전 프라이빗 모드에서 API 코드 및 호스트에서 교차 절단 문제를 오프로드하는 데 사용됩니다.
권장 사항
이 솔루션은 전체 솔루션을 구현하고 API Management 가상 네트워크 내부 및 외부에서 API 액세스를 테스트하는 데 중점을 둡니다. API Management 가상 네트워크 통합 절차에 대한 자세한 내용은 내부 VNET에서 API Management를 Application Gateway와 통합을 참조하세요.
백 엔드에서 프라이빗 리소스와 통신하려면 Application Gateway 및 API Management가 리소스와 동일한 가상 네트워크 또는 피어된 가상 네트워크에 있어야 합니다.
프라이빗 내부 배포 모델을 사용하면 API Management가 기존 가상 네트워크에 연결되므로 해당 네트워크 컨텍스트 내부에서 연결할 수 있습니다. 이 기능을 사용하려면 개발자 또는 프리미엄 API Management 계층을 배포합니다.
Azure Key Vault에서 App Gateway 인증서를 관리합니다.
서비스와 상호 작용을 개인 설정하려면 CNAME 항목을 사용하면 됩니다.
대안
다른 서비스를 사용하여 비슷한 수준의 방화벽 및 WAF(웹 애플리케이션 방화벽) 보호를 제공할 수 있습니다.
- Azure Front Door
- Azure Firewall
- 파트너 솔루션(예: Barracuda)
- Azure Marketplace에서 제공하는 다른 솔루션
고려 사항
안정성
Azure 애플리케이션 게이트웨이는 인스턴스 수에 관계없이 항상 고가용성 방식으로 배포됩니다. 영역 오작동의 영향을 방지하기 위해 Application Gateway가 여러 가용성 영역 걸쳐 있도록 구성할 수 있습니다. 자세한 내용은 자동 크기 조정 및 고가용성을 참조하세요.
API Management 서비스 구성 요소에 대한 영역 중복을 사용하도록 설정하여 복원력과 고가용성을 제공합니다. 영역 중복은 물리적으로 구분된 영역의 데이터 센터에서 API Management 게이트웨이 및 컨트롤 플레인을 복제하므로 영역 실패가 복원됩니다. 가용성 영역을 지원하려면 API Management 프리미엄 계층이 필요합니다.
또한 API Management는 다중 지역 배포를 지원하므로 한 지역이 오프라인 상태가 되면 가용성을 향상시킬 수 있습니다. 자세한 내용은 다중 지역 배포를 참조하세요. 이 토폴로지에서는 Application Gateway가 지역 서비스이므로 지역당 하나의 Application Gateway도 있어야 합니다.
보안
Application Gateway 보안에 대한 자세한 내용은 Application Gateway에 대한 Azure 보안 기준을 참조하세요.
API Management 보안에 대한 자세한 내용은 API Management에 대한 Azure 보안 기준을 참조하세요.
애플리케이션 설계 모범 사례와 결합된 Azure DDoS Protection은 향상된 DDoS 완화 기능을 제공하여 DDoS 공격에 대한 방어력을 높입니다. 경계 가상 네트워크에서 Azure DDOS Protection을 사용하도록 설정해야 합니다.
비용 최적화
이 아키텍처 비용은 다음과 같은 구성 측면에 따라 다릅니다.
- 서비스 계층
- 확장성, 즉 지정된 수요를 지원하도록 서비스에서 동적으로 할당한 인스턴스 수
- 이 아키텍처가 지속적으로 실행될지 또는 한 달에 몇 시간만 실행될지 여부
이러한 측면을 평가한 후 Azure 가격 계산기로 이동하여 가격을 예측합니다.
성능 효율성
Application Gateway는 이 아키텍처의 진입점이며 WAF 기능에는 각 요청을 분석할 수 있는 추가 처리 능력이 필요합니다. Application Gateway가 스폿에서 계산 용량을 확장하도록 허용하려면 자동 크기 조정을 사용하는 것이 중요합니다. 자세한 내용은 자동 크기 조정 지정을 참조하세요. Application Gateway에 대한 서브넷 크기의 제품 설명서 권장 사항을 따릅니다. 이렇게 하면 서브넷이 전체 스케일 아웃을 지원할 만큼 충분히 커집니다.
동시 시나리오를 지원하려면 API Management 자동 크기 조정을 켭니다. 자동 크기 조정은 들어오는 요청 수가 증가함에 따라 API Management 기능을 확장합니다. 자세한 내용은 Azure API Management 인스턴스자동 크기 조정을 참조하세요.
시나리오 배포
이 시나리오는 내부 API Management 및 웹앱을 사용하는 Application Gateway의 Azure 빠른 시작 갤러리 게시에서 설명합니다.
다음 단계
좋은 Web API 디자인 지침에 따라 API를 디자인 하고 좋은 Web API 구현 방법을 사용하여 구현 합니다.