Azure API Management 랜딩 존 아키텍처
API는 조직과 고객이 내부 시스템 내에서 그리고 외부 채널을 통해 서비스에 액세스하는 방식에 점점 더 중요해지고 있습니다. 내부적으로 API는 LoB(기간 업무) 애플리케이션, 독점 솔루션 및 파트너 통합에 대한 액세스를 용이하게 합니다. 외부적으로 점점 더 많은 조직이 API 수익 창출을 통해 생산성을 향상시키고 수익을 창출하는 데 주력하고 있습니다. 이러한 추세를 감안할 때 Azure API Management는 내부 및 외부 이해 관계자 모두에 대한 API의 표준화된 거버넌스, 게시 및 감독에서 기본 요소 역할을 합니다.
Azure Application Gateway는 API에 대한 보안 검사점 역할을 합니다. 사용자가 인터넷을 통해 직접 연결할 수 있도록 하는 대신 애플리케이션 게이트웨이를 통해 모든 트래픽을 라우팅합니다. 이 설정은 API를 보호하는 데 도움이 되는 추가 액세스 제어를 추가합니다. 이 방법을 사용하면 단일 API Management 인스턴스를 사용하여 조직 내의 내부 API와 조직 외부의 외부 API를 모두 지원하는 동시에 공개적으로 노출된 API를 게이트웨이 뒤에서 안전하게 유지할 수 있습니다.
참고 항목
이 아키텍처는 Azure용 클라우드 채택 프레임워크의 Azure 랜딩 존에서 API Management 에 대한 지침의 기초 역할을 합니다.
아키텍처
이 아키텍처의 Visio 파일을 다운로드합니다.
이 아키텍처는 정책이 Azure 랜딩 존 참조 구현 에서 구현되고 구조가 관리 그룹에서 아래로 구동된다고 가정합니다.
워크플로
공용 IP 주소는 외부 트래픽의 진입점 역할을 하는 애플리케이션 게이트웨이에 할당됩니다. 해당 엔드포인트는 사용자 지정 도메인을 통해 API를 노출합니다.
애플리케이션 게이트웨이는 자체 서브넷에 배포되고 들어오는 요청을 검사하고 필터링하기 위해 WAF(웹 애플리케이션 방화벽) 정책으로 보호됩니다.
트래픽은 애플리케이션 게이트웨이에서 별도의 API Management 서브넷에 있는 API Management(프리미엄)로 라우팅됩니다. API Management 인스턴스는 직접 공용 액세스를 방지하는 내부 모드로 구성됩니다.
프라이빗 엔드포인트는 가상 네트워크에만 노출되는 백 엔드 애플리케이션 서버에 API Management를 안전하게 연결하는 데 사용됩니다. 또한 API Management는 Azure Key Vault와 같은 종속성을 주기적으로 연결합니다. 일반적으로 이 모든 프라이빗 연결은 전용 프라이빗 엔드포인트 서브넷의 엔드포인트에서 발생합니다.
Log Analytics 작업 영역 및 Application Insights는 로깅, 모니터링 및 원격 분석을 위해 통합됩니다.
구성 요소
API Management 는 하이브리드 및 다중 클라우드 환경에서 서비스를 관리할 수 있는 관리되는 서비스입니다. 내부 및 외부 사용자 모두의 API 관찰 가능성 및 사용량에 대한 제어 및 보안을 제공합니다. 이 아키텍처에서 API Management는 백 엔드 아키텍처를 추상화하기 위한 외관 역할을 합니다.
Application Gateway 는 계층 7 부하 분산 장치 및 WAF 역할을 하는 관리되는 서비스입니다. Application Gateway는 내부 및 외부 모드를 모두 사용할 수 있도록 내부 API Management 인스턴스를 보호합니다. 이 아키텍처에서 API Management는 API를 보호하고 Application Gateway는 WAF와 같은 보완 기능을 추가합니다.
DNS(프라이빗 도메인 이름 시스템) 영역 은 사용자 지정 DNS 솔루션을 구현할 필요 없이 가상 네트워크 내에서 도메인 이름을 관리하고 확인할 수 있는 Azure DNS의 기능입니다. 프라이빗 DNS 영역은 가상 네트워크 링크를 통해 하나 이상의 가상 네트워크에 맞출 수 있습니다. 이 아키텍처에서는 가상 네트워크 내에서 적절한 이름 확인을 위해 프라이빗 DNS 영역이 필요합니다.
Application Insights 는 개발자가 변칙을 감지하고, 문제를 진단하고, 사용 패턴을 이해하는 데 도움이 되는 확장 가능한 애플리케이션 성능 관리 서비스입니다. Application Insights는 라이브 웹앱에 대한 확장 가능한 애플리케이션 성능 관리 및 모니터링이 특징입니다. .NET, Node.js, Java, Python을 비롯한 다양한 플랫폼이 지원됩니다. Azure, 온-프레미스, 하이브리드 환경 또는 기타 퍼블릭 클라우드에서 호스트되는 앱을 지원합니다. 이 아키텍처에서 Application Insights는 배포된 애플리케이션의 동작을 모니터링합니다.
Log Analytics 는 Azure Portal 내에서 선택적으로 Azure Monitor 로그의 데이터에 대한 로그 쿼리를 편집하고 실행할 수 있는 클라우드 기반 데이터 분석 도구입니다. 개발자는 간단한 쿼리를 실행하여 레코드를 검색하거나 고급 분석을 위해 Log Analytics를 사용한 다음 결과를 시각화할 수 있습니다. 이 아키텍처에서 Log Analytics는 분석 및 보고를 위해 모든 플랫폼 리소스 로그를 집계합니다.
Azure Key Vault 는 비밀을 안전하게 저장하고 액세스하는 클라우드 서비스입니다. 이러한 비밀은 API 키 및 암호에서 인증서 및 암호화 키에 이르기까지 다양합니다. 이 아키텍처에서 Key Vault는 Application Gateway에서 사용하는 SSL(Secure Sockets Layer) 인증서를 저장합니다.
대안
API Management 인스턴스가 연결하는 백 엔드 서비스의 경우 다음과 같은 몇 가지 대안을 사용할 수 있습니다.
Azure App Service 는 웹앱을 빌드, 배포 및 확장하는 완전 관리형 HTTP 기반 서비스입니다. .NET, .NET Core, Java, Ruby, Node.js, PHP 및 Python을 지원합니다. 애플리케이션은 Windows 또는 Linux 기반 환경에서 실행 및 스케일링할 수 있습니다.
AKS(Azure Kubernetes Service) 는 완전 관리형 클러스터를 제공하는 관리되는 Kubernetes 제품입니다. 이를 통해 기본 제공 거버넌스 및 보안과 함께 CI/CD(통합 연속 통합 및 지속적인 업데이트)를 사용할 수 있습니다.
Azure Logic Apps 는 자동화된 워크플로를 만들고 실행하는 클라우드 기반 플랫폼입니다. 자세한 내용은 예제 참조 아키텍처를 참조하세요.
Azure Container Apps 는 서버리스 플랫폼에서 마이크로 서비스 및 컨테이너화된 애플리케이션을 실행할 수 있는 완전 관리형 서버리스 컨테이너 서비스입니다.
다중Region 배포의 경우 Azure Front Door 를 사용하여 사용자와 애플리케이션의 정적 및 동적 웹 콘텐츠 간에 빠르고 안정적이며 안전한 액세스를 제공하는 것이 좋습니다.
Application Gateway가 API를 보호하는 방법에 대한 추가 예제를 보려면 Application Gateway 및 API Management를 사용하여 API 보호를 참조하세요.
고려 사항
이러한 고려 사항은 워크로드의 품질을 향상시키는 데 사용할 수 있는 일련의 기본 원칙인 Azure Well-Architected Framework의 핵심 요소를 구현합니다. 자세한 내용은 Well-Architected Framework를 참조하세요.
안정성
안정성은 애플리케이션이 고객에 대한 약정을 충족할 수 있도록 하는 데 도움이 됩니다. 자세한 내용은 안정성에 대한 디자인 검토 검사 목록을 참조하세요.
각 지역의 둘 이상의 가용성 영역에 분산된 두 개 이상의 API Management 배율 단위 를 배포합니다. 용량 메트릭을 모니터링하고, 한 가용성 영역의 단위가 손실된 경우에도 계속 작동할 수 있도록 충분한 용량 단위를 프로비전합니다.
프리미엄 계층은 가용성 영역 및 다중Region 배포를 지원하므로 사용하는 것이 좋습니다. 이 기능은 하나의 지역 또는 영역이 중단되더라도 서비스가 계속 실행되도록 할 수 있음을 의미합니다. 이러한 기능은 중단 또는 재해 시 애플리케이션을 보호하는 데 도움이 됩니다.
재해 복구의 경우 시스템 할당 ID 대신 사용자 할당 관리 ID를 사용하여 API Management를 설정합니다. 리소스를 다시 배포하거나 삭제하는 경우 ID 및 해당 권한이 그대로 유지되므로 액세스를 보다 쉽게 복원할 수 있습니다. Azure Pipelines를 사용하여 백업을 자동화합니다. 안정성을 높이기 위해 둘 이상의 지역에 서비스를 배포해야 하는지 여부를 결정합니다.
가상 네트워크 피어링은 지역 내에서 강력한 성능을 제공하지만 확장성 제한은 500개 네트워크입니다. 더 많은 워크로드를 연결해야 하는 경우 허브-스포크 디자인 또는 Azure Virtual WAN을 사용합니다.
보안
보안은 의도적인 공격 및 중요한 데이터 및 시스템의 오용에 대한 보증을 제공합니다. 자세한 내용은 보안성에 대한 디자인 검토 검사 목록을 참조하세요.
API Management 유효성 검사 정책은 OpenAPI 스키마에 대한 API 요청 및 응답의 유효성을 검사합니다. 이러한 기능은 WAF를 대체하는 것은 아니지만 일부 위협에 대한 추가 보호를 제공할 수 있습니다. 유효성 검사 정책을 추가하면 성능에 영향을 미칠 수 있으므로 성능 부하 테스트를 사용하여 API 처리량에 미치는 영향을 평가하는 것이 좋습니다.
API용 Microsoft Defender 는 API Management에 게시된 API에 대한 전체 수명 주기 보호, 검색 및 응답을 제공합니다. 한 가지 주요 기능은 기계 학습 기반 및 규칙 기반 검색을 사용하여 런타임 변칙 관찰을 통해 OWASP(Open Web Application Security Project) API 상위 10개 취약성의 악용을 검색하는 것입니다.
API Management 작업 영역은 API를 구성하고 격리하는 데 도움이 됩니다. 이 방법을 사용하면 액세스하고 관리할 수 있는 사용자를 더 쉽게 제어할 수 있습니다. 각 작업 영역에는 고유한 사용 권한 집합이 있을 수 있으므로 필요한 사용자 또는 팀에만 액세스를 제한할 수 있습니다. 이러한 분리는 우발적인 변경 또는 무단 액세스의 위험을 줄이고 보다 안전한 API 환경을 지원합니다.
API Management 정책에서 Key Vault 비밀을 명명된 값으로 사용하여 API Management 정책 에서 중요한 정보를 보호합니다.
내부 API Management 인스턴스의 외부 액세스에 Application Gateway를 사용하여 API Management 인스턴스를 보호하고, WAF를 사용하여 일반적인 웹 애플리케이션 악용 및 취약성을 방어하고, 하이브리드 연결을 사용하도록 설정합니다.
가상 네트워크에 API Management 게이트웨이를 배포하여 하이브리드 연결 및 보안 강화를 지원합니다.
가상 네트워크 피어링을 사용하면 지역의 성능이 향상되고 가상 네트워크 간의 프라이빗 통신이 가능합니다.
WAF를 사용하는 경우 들어오는 트래픽에서 악의적인 동작을 검사하는 계층을 도입합니다. 이 보호는 SQL 삽입 및 사이트 간 스크립팅과 같은 일반적인 위협을 차단하는 데 도움이 됩니다. Application Gateway 및 DDoS(분산 서비스 거부) 보호는 과도한 트래픽 또는 연결 홍수가 API Management 인스턴스를 압도하지 않도록 방지합니다. 자세한 내용은 Application Gateway 및 API Management를 사용하여 API 보호를 참조하세요.
Azure Functions에 대한 프라이빗 엔드포인트를 사용하면 가상 네트워크 내의 개인 IP 주소를 통해 함수 앱에 안전하게 연결할 수 있습니다. 이 설정은 공용 인터넷에 함수가 노출되는 것을 방지하여 무단 액세스의 위험을 줄입니다. 이 아키텍처에서 프라이빗 엔드포인트는 네트워크 내의 신뢰할 수 있는 리소스만 Azure Functions에 액세스할 수 있도록 합니다.
비용 최적화
비용 최적화는 불필요한 비용을 줄이고 운영 효율성을 개선하는 방법에 중점을 둡니다. 자세한 내용은 비용 최적화를 위한 디자인 검토 검사 목록을 참조하세요.
이 배포는 프리미엄 계획을 사용하여 가용성 영역 및 가상 네트워크 기능을 지원합니다. 전용 인스턴스가 필요하지 않은 경우 네트워크 액세스 및 가용성 영역을 모두 지원하는 Flex Consumption를 사용할 수도 있습니다. 이 배포에 대한 가격 계산기를 검토합니다 .
개념 증명 또는 프로토타입의 경우 개발자 또는 표준과 같은 다른 API Management 계층을 사용하는 것이 좋습니다.
운영 효율성
운영 우수성은 애플리케이션을 배포하고 프로덕션에서 계속 실행하는 운영 프로세스를 다룹니다. 자세한 내용은 Operational Excellence에 대한 디자인 검토 검사 목록을 참조하세요.
API Management 구성을 Azure Resource Manager 템플릿으로 나타내고 IaC(Infrastructure as code) 접근 방식을 채택합니다.
CI/CD 프로세스를 사용하여 API Management 구성을 관리, 버전 관리 및 업데이트합니다.
API Management 인스턴스의 상태 유효성을 검사하는 데 도움이 되는 사용자 지정 상태 프로브를 만듭니다. URL
/status-0123456789abcdef을 사용하여 애플리케이션 게이트웨이에서 API Management 서비스에 대한 공통 상태 엔드포인트를 만듭니다.키 자격 증명 모음에서 업데이트된 인증서는 4시간 이내에 변경 내용을 반영하는 API Management에서 자동으로 회전됩니다.
Azure DevOps 또는 GitHub와 같은 DevOps 도구를 사용하는 경우 클라우드 호스트 에이전트 또는 실행기는 공용 인터넷을 통해 작동합니다. 이 아키텍처의 API Management는 내부 네트워크로 설정되므로 가상 네트워크에 액세스할 수 있는 DevOps 에이전트를 사용해야 합니다. DevOps 에이전트를 사용하면 아키텍처의 API에 정책 및 기타 변경 내용을 배포할 수 있습니다. 이러한 CI/CD 템플릿을 사용하여 개발 팀이 각 API에 대한 변경 내용을 배포할 수 있도록 프로세스를 파트로 구분할 수 있습니다. DevOps 실행기는 이러한 개별 배포를 처리하기 위해 템플릿을 시작합니다.
시나리오 배포
이 아키텍처는 GitHub에서 사용할 수 있습니다. 여기에는 필요한 모든 IaC 파일과 배포 지침이 포함됩니다.
참가자
Microsoft는 이 문서를 유지 관리합니다. 다음 기여자는 이 문서를 작성했습니다.
주요 작성자:
- Pete Messina | 선임 클라우드 솔루션 설계자
- Anthony Nevico | 선임 클라우드 솔루션 설계자
비공개 LinkedIn 프로필을 보려면 LinkedIn에 로그인합니다.