Azure API Management 랜딩 존 가속기

Azure API Management
Azure Application Gateway
Azure 기능
.NET

API는 회사와 고객이 내부 및 외부에서 서비스에 액세스하는 방식에서 점점 더 돋보이고 있습니다. 내부적으로 API는 LOB(기간 업무) 애플리케이션, 홈 빌드 솔루션 및 타사 통합에 액세스하는 데 사용됩니다. 외부적으로는 더 많은 회사가 생산성을 높이며 API로 수익을 창출하려고 합니다. 이러한 추세를 염두에 두고 API Management는 내부 및 외부 대상 모두에게 API를 관리, 관리 및 게시하는 표준 접근 방식의 핵심 구성 요소가 되고 있습니다.

Azure Application Gateway 도움으로 이제 Azure API Management를 통해 제공되는 API의 액세스를 보호하고 제한할 수 있습니다. 이 문서에서는 단일 API Management 인스턴스를 통해 내부 및 외부 API를 둘 다 관리할 수 있는 솔루션에 대해 설명합니다. 인터넷을 통해 직접 노출되지 않도록 보안 태세를 유지하면서 대신 Application Gateway를 통해 액세스할 수 있습니다.

참고

이 아키텍처는 클라우드 채택 프레임워크에서 Azure API Management 랜딩 존 가속기의 기초로 사용됩니다.

아키텍처

API Management 랜딩 존 가속기 아키텍처를 보여 주는 다이어그램

이 아키텍처 다이어그램은 구독 범위, 프라이빗 도메인이 확인될 프라이빗 DNS 영역 및 가상 네트워크 이름 APIM-CS VNet의 범위를 나타내는 포괄적인 상자로 시작합니다. 구독 위에는 온-프레미스 워크로드를 나타내는 상자가 있습니다. 이 상자 안에는 서버 아이콘이 있습니다. 파이프는 사이트 간의 연결을 나타내고 Azure ExpressRoute가 Azure 구독의 API Management 인스턴스에 연결합니다. Azure 구독을 나타내는 큰 상자 안에는 7개의 더 작은 상자가 있습니다. 상자 중 4개가 위쪽 행에 있고, 3개가 아래쪽 행에 있습니다. 각 개별 상자는 연결된 네트워크 보안 그룹이 있는 별도의 서브넷을 나타냅니다. 맨 왼쪽부터 보면, 위쪽 행의 왼쪽 상자에 Azure Application Gateway에 연결된 공용 IP 주소가 있습니다. 또한 Application Gateway 역시 7개의 작은 상자 중 App GW 서브넷이라는 서브넷이 있는 상자에 있습니다. 오른쪽에는 APIM 서브넷이라는 서브넷이 있는 API Management 인스턴스가 포함된 또 다른 상자가 있습니다. 위쪽 행에서 그 옆에 있는 세 번째 상자에는 PE 서브넷이라는 서브넷의 Azure Functions 인스턴스에 대한 프라이빗 엔드포인트가 포함되어 있습니다. 위쪽 행의 맨 오른쪽 상자는 Azure Function Apps, 함수에 대한 Azure App Service 요금제 및 함수 앱과 연결된 스토리지 계정을 포함하는 백 엔드 서브넷입니다. 아래쪽 행의 왼쪽부터는 Bastion 서브넷에 Azure Bastion이 포함된 상자입니다. 두 번째 상자에는 점프 상자 서브넷의 관리 jumpbox VM이 있습니다. 아래쪽 행의 마지막 상자는 DevOps 서브넷 내에 포함된 DevOps 에이전트입니다. 이미지의 오른쪽 아래에는 세 가지 공유 리소스에 해당하는 아이콘이 있습니다. 왼쪽에서 오른쪽으로는 키 자격 증명 모음, 애플리케이션 인사이트 및 로그 분석 작업 영역 상자가 있습니다. 두 가지 워크플로 세트가 있습니다. 첫 번째 워크플로는 검은색 원으로 표시되고 다른 워크플로는 파란색 원으로 표시되는데, 관련 내용은 이후 섹션에서 설명합니다. 검은색 워크플로는 외부에서 사용할 수 있는 API의 액세스를 나타냅니다. 흐름은 공용 IP 주소에 액세스하는 사용자로부터 시작됩니다. 화살표는 Application Gateway에서 프라이빗 엔드포인트로, 프라이빗 엔드포인트에서 함수 앱으로, Application Gateway의 방향을 가리킵니다. 파란색 워크플로는 온-프레미스 서버에서 시작되며, 사이트 간의 연결을 나타내는 파이프라인 아이콘을 통해 또는 ExpressRoute를 통해 API Management 인스턴스를 가리키는 화살표가 있습니다. 흐름의 나머지 부분은 위에서 설명한 것과 마찬가지로 API Management에서 프라이빗 엔드포인트로, 프라이빗 엔드포인트에서 Azure Function으로 흐릅니다.

이 아키텍처에서는 정책이 Azure 랜딩 존 가속기에서 적용되고 구조가 관리 그룹에서 아래쪽으로 구동된다고 가정합니다.

이 아키텍처의 Visio 파일을 다운로드합니다.

워크플로

하이브리드 시나리오(파란색 원)

이 시나리오에는 온-프레미스 환경에 대한 사이트 간 연결 또는 Azure ExpressRoute 연결이 필요합니다.

  1. 온-프레미스 애플리케이션에는 Azure API Management를 통해 제공되는 내부 API에 대한 액세스가 필요합니다.
  2. API Management는 Azure Functions에서 호스트되는 백 엔드 API에 연결합니다. 이 연결은 Azure Functions 프리미엄 플랜을 통해 사용할 수 있는 프라이빗 엔드포인트를 통해 제공되며 자체 서브넷에서 호스트됩니다.
  3. 프라이빗 엔드포인트는 Azure Functions에서 호스트되는 내부 API에 안전하게 액세스합니다.

외부 액세스 시나리오(검은색 원)

  1. 외부 애플리케이션은 Azure Application Gateway에 연결된 공용 IP 주소 또는 사용자 지정 FQDN에 액세스합니다.
  2. Application Gateway는 웹 애플리케이션 방화벽 역할을 하는데, 여기에는 SSL 종료를 위해 PFX 인증서가 필요합니다.
  3. API Management는 프라이빗 엔드포인트를 통해 Azure Functions에서 호스트되는 백엔드 API에 연결합니다. 이 엔드포인트는 Azure Functions 프리미엄 플랜을 통해 사용할 수 있으며 자체 서브넷에서 호스트됩니다.
  4. 프라이빗 엔드포인트는 Azure Functions에서 호스트되는, 외부에서 사용 가능한 API에 안전하게 액세스합니다.

구성 요소

이 아키텍처에서는 다음 구성 요소를 사용합니다.

  • Azure API Management는 하이브리드 및 다중 클라우드 환경에서 서비스를 관리할 수 있는 관리형 서비스입니다. API 관리는 백엔드 아키텍처를 추상화하기 위한 외관 역할을 하며, 내부 및 외부 사용자 모두에 대한 API 가시성 및 사용을 위한 제어 및 보안을 제공합니다.

  • Azure Functions는 최소한의 인프라 관리로 실행할 수 있는 코드 블록에 더 집중할 수 있는 서버리스 솔루션입니다. Functions는 다양한 호스팅 계획으로 호스트될 수 있지만 이 참조 아키텍처는 프라이빗 엔드포인트를 사용하기 때문에 프리미엄 플랜을 사용합니다.

  • Azure Application Gateway는 계층 7 부하 분산 장치 및 웹 애플리케이션 방화벽 역할을 하는 관리형 서비스입니다. 이 시나리오에서 애플리케이션 게이트웨이는 내부 및 외부 모드를 사용하도록 내부 APIM 인스턴스를 보호합니다.

  • Azure DNS프라이빗 DNS 영역을 사용하면 사용자 지정 DNS 솔루션을 구현할 필요 없이 가상 네트워크 내에서 도메인 이름을 관리하고 확인할 수 있습니다. 가상 네트워크 링크를 통해 프라이빗 DNS 영역을 하나 이상의 가상 네트워크에 정렬할 수 있습니다. 이 참조 아키텍처에서 사용하는 프라이빗 엔드포인트를 통해 노출되는 Azure Functions 때문에 프라이빗 DNS 영역을 사용해야 합니다.

  • Azure MonitorApplication Insights를 사용하면 개발자가 변칙을 감지하고, 문제를 진단하고, 사용 패턴을 이해할 수 있습니다. Application Insights는 라이브 웹앱에 대한 확장 가능한 애플리케이션 성능 관리 및 모니터링이 특징입니다. .NET, Node.js, Java, Python을 비롯한 다양한 플랫폼이 지원됩니다. Azure, 온-프레미스, 하이브리드 환경 또는 기타 퍼블릭 클라우드에서 호스트되는 앱을 지원합니다. Application Insights는 배포된 애플리케이션의 동작을 모니터링하기 위해 이 참조 아키텍처의 일부로 포함됩니다.

  • Azure MonitorLog Analytics를 사용하면 필요에 따라 Azure Portal 내에서 Azure Monitor 로그의 데이터로 로그 쿼리를 편집하고 실행할 수 있습니다. 개발자는 레코드 집합에 대한 간단한 쿼리를 실행하거나 Log Analytics를 사용하여 고급 분석을 수행할 수 있습니다. 그런 다음 결과를 시각화할 수 있습니다. Log Analytics는 더 많은 분석 및 보고를 위해 모든 모니터링 로그를 집계하도록 이 참조 아키텍처의 일부로 구성됩니다.

  • Azure Virtual Machines는 다양한 워크로드를 호스트하는 데 사용할 수 있는 컴퓨팅 리소스입니다. 이 참조 아키텍처에서 가상 머신은 관리 jumpbox 서버뿐만 아니라 DevOps 에이전트 또는 GitHub 실행기의 호스트를 제공하는 데 사용됩니다.

  • Azure Key Vault는 API 키 및 암호에서 인증서 및 암호화 키에 이르기까지 비밀을 안전하게 저장하고 액세스하는 클라우드 서비스입니다. 이 참조 아키텍처는 Azure Key Vault를 사용하여 Application Gateway에서 사용하는 SSL 인증서를 저장합니다.

  • Azure Bastion은 개발자의 가상 네트워크 내에서 프로비저닝되는 PaaS(Platform as a Service)입니다. Azure Portal에서 TLS를 통해 개발자의 가상 머신에 대한 안전한 RDP/SSH 연결을 제공합니다. Azure Bastion을 사용하면 가상 머신에서 RDP/SSH를 통해 연결하는 데 공용 IP 주소가 더 이상 필요하지 않습니다. 이 참조 아키텍처는 Azure Bastion을 사용하여 DevOps 에이전트 또는 GitHub 실행기 서버 또는 관리 jumpbox 서버에 액세스합니다.

Azure DevOps 또는 GitHub와 같은 DevOps 도구를 사용하는 경우 클라우드 호스트 에이전트 또는 실행기는 공용 인터넷을 통해 작동합니다. 이 아키텍처의 API 관리는 내부 네트워크로 설정되므로 VNet에 대한 액세스 권한이 있는 DevOps 에이전트를 사용해야 합니다. DevOps 에이전트는 아키텍처의 API에 정책 및 기타 변경 내용을 배포하는 데 도움이 됩니다. 이러한 CI/CD 템플릿은 프로세스를 분리하고 개발 팀이 API별로 변경 내용을 배포할 수 있도록 하는 데 사용할 수 있습니다. DevOps 실행기에서 실행합니다.

대안

API Management 인스턴스가 연결하는 백엔드 서비스의 경우 이 참조 구현에 사용되는 Azure Functions 외에도 다음과 같은 몇 가지 대안을 사용할 수 있습니다.

  • Azure App Service는 웹앱을 빌드, 배포 및 스케일링하는 완전 관리형 HTTP 기반 서비스입니다. .NET, .NET Core, Java, Ruby, Node.js, PHP 및 Python이 모두 지원됩니다. 애플리케이션은 Windows 또는 Linux 기반 환경에서 실행 및 스케일링할 수 있습니다.
  • Azure Kubernetes Service는 CI/CD(연속 통합 및 지속적인 업데이트) 환경, 거버넌스 및 보안을 위한 완전 관리형 Kubernetes 클러스터를 제공합니다.
  • Azure Logic Apps는 자동화된 워크플로를 만들고 실행할 수 있는 클라우드 기반 플랫폼입니다. 예제 참조 아키텍처는 Azure에서 기본 엔터프라이즈 통합에서 찾을 수 있습니다.
  • Azure Container Apps를 사용하면 서버리스 플랫폼에서 마이크로서비스 및 컨테이너화된 애플리케이션을 실행할 수 있습니다.

다중 지역 배포의 경우 Azure Front Door를 사용하여 사용자와 애플리케이션의 정적 및 동적 웹 콘텐츠 간에 빠르고 안정적이며 안전한 액세스를 제공하는 것이 좋습니다.

Application Gateway가 API를 보호하는 방법에 대한 추가 예제를 보려면 Application Gateway 및 API Management를 사용하여 API 보호를 참조하세요.

고려 사항

이러한 고려 사항은 워크로드의 품질을 향상시키는 데 사용할 수 있는 일단의 지침 원칙인 Azure Well-Architected Framework의 핵심 요소를 구현합니다. 자세한 내용은 Microsoft Azure Well-Architected Framework를 참조하세요.

안정성

안정성은 애플리케이션이 고객에 대한 약속을 충족할 수 있도록 합니다. 자세한 내용은 안정성 핵심 요소 개요를 참조하세요.

  • 지역당 두 개 이상의 가용성 영역에 분산된 API Management의 배율 단위를 두 개 이상 배포합니다. 이 메서드는 가용성과 성능을 최대화합니다.
  • VNet 피어링은 한 지역에서 고성능을 지원하지만 최대 500개의 네트워크로 스케일링 성능에 제한이 있습니다. 더 많은 워크로드를 연결해야 하는 경우 허브 스포크 디자인 또는 Azure vWAN을 사용합니다.

보안

우수한 보안은 중요한 데이터 및 시스템에 대한 고의적인 공격과 악용을 방어합니다. 자세한 내용은 보안 요소의 개요를 참조하세요.

  • API Management 유효성 검사 정책은 OpenAPI 스키마에 대한 API 요청 및 응답의 유효성을 검사하는 데 사용할 수 있습니다. 이러한 기능은 Web Application Firewall을 대체하지 않지만 일부 위협에 대한 추가 보호를 제공할 수 있습니다. 유효성 검사 정책을 추가하면 성능에 영향을 미칠 수 있으므로 성능 부하 테스트를 사용하여 API 처리량에 미치는 영향을 평가하는 것이 좋습니다.
  • 일반적인 웹 애플리케이션 악용 및 취약성으로부터 보호하기 위해 API Management 앞에 Azure WAF(Web Application Firewall)를 배포합니다.
  • APIM 정책에서 중요한 정보를 보호하기 위해 Key Vault 비밀을 사용하여 명명된 값을 적용합니다.
  • 내부 APIM 인스턴스의 외부 액세스에 Application Gateway를 사용하여 APIM 인스턴스를 보호하고 하이브리드 연결을 가능하게 합니다.
  • VNet에서 API Management 게이트웨이를 배포하여 하이브리드 연결 및 강화된 보안을 지원합니다.
  • VNet 피어링은 한 지역에서 고성능을 지원하지만 최대 500개의 네트워크로 스케일링 성능에 제한이 있습니다. 더 많은 워크로드를 연결해야 하는 경우 허브 스포크 디자인 또는 Azure vWAN을 사용합니다.

비용 최적화

비용 최적화는 불필요한 비용을 줄이고 운영 효율성을 높이는 방법을 찾는 것입니다. 자세한 내용은 비용 최적화 핵심 요소 개요를 참조하세요.

  • 가용성 영역 및 가상 네트워크 지원이 필요하기 때문에 각 지역의 가격 책정에 따라 API Management 프리미엄 계층을 선택했습니다. 또한 이 워크로드에서는 VNet 액세스가 필요하기 때문에 Azure Functions는 프리미엄 플랜에서 호스트됩니다.
  • 개념 증명 또는 프로토타입의 경우 다른 API Management 계층(예: 개발자 또는 표준)을 사용하는 것이 좋습니다.

운영 우수성

운영 우수성에서는 프로덕션에서 애플리케이션을 배포하고 계속 실행하는 운영 프로세스를 다룹니다. 자세한 내용은 운영 우수성 핵심 요소 개요를 참조하세요.

  • API Management 구성은 ARM 템플릿으로 표현되어야 하며 코드 제공 인프라(Infrastructure as Code) 사고방식을 수용해야 합니다.
  • CI/CD 프로세스를 사용하여 API Management 구성을 관리, 버전 관리 및 업데이트합니다.
  • 사용자 지정 상태 프로브를 만들면 API Management 인스턴스의 상태를 확인하는 데 도움이 됩니다. URL /status-0123456789abcdef를 사용하여 앱 게이트웨이에서 APIM 서비스에 대한 공통 상태 엔드포인트를 만듭니다.
  • 키 자격 증명 모음에서 업데이트한 인증서는 API Management에서 자동으로 회전되며, 이는 4시간 내에 업데이트됩니다.
  • 지역당 두 개 이상의 가용성 영역에 분산된 API Management의 배율 단위를 두 개 이상 배포합니다. 이 메서드는 가용성 및 성능을 최대화합니다.

시나리오 배포

이 아키텍처는 GitHub에서 사용할 수 있습니다. 여기에는 필요한 모든 코드로서의 인프라 파일과 배포 지침이 포함되어 있습니다.

참가자

Microsoft에서 이 문서를 유지 관리합니다. 원래 다음 기여자가 작성했습니다.

주요 작성자:

비공개 LinkedIn 프로필을 보려면 LinkedIn에 로그인합니다.

다음 단계

다음 주요 리소스를 참조하세요.

다음 주요 서비스에 대해 자세히 알아보세요.