Introduction
Contoso Retail은 이벤트 기반 주문 처리 및 인벤토리 동기화를 구동하기 위해 Azure Functions 실행합니다. 이는 구매가 확인되거나 재고 수준이 변경될 때마다 외부 파트너 시스템이 직접 호출하는 HTTP 트리거 함수입니다. 보안 검토는 초기 배포 이후 해결되지 않은 4개의 제어 격차를 노출시켰습니다. 몇몇 프로덕션 함수는 인증되지 않은 요청을 수락합니다. URL이 있는 모든 호출자는 해당 요청을 트리거할 수 있습니다. Cosmos DB 연결 문자열은 일반 텍스트 애플리케이션 설정으로 저장되며 App Service 구성 화면에 대한 읽기 권한이 있는 모든 사용자가 볼 수 있습니다. 인바운드 네트워크 제한이 없으므로 함수 엔드포인트는 인터넷 어디에서나 트래픽을 허용합니다. Logic Apps 통합 워크플로는 네 번째 격차를 제공합니다. 여러 앱에서 공유되는 연결 리소스에는 아무도 소유하지 않고 아무도 회전하지 않는 하드 코딩된 자격 증명이 포함됩니다.
이러한 간격 중 어느 것도 즉각적인 오류를 생성하지 않습니다. 인증되지 않은 HTTP 트리거가 계속 작동합니다. 평문 연결 문자열을 사용하면 데이터베이스 인증이 계속 유지됩니다. 자격 증명이 도난당하거나, 함수가 남용되거나, 위반 조사 결과 모든 엔드포인트가 인터넷에 열려 있음을 알 때까지 노출은 침묵합니다.
서버리스 워크로드에는 모든 API 화면에 적용하는 것과 동일한 3계층 보안 모델이 필요합니다. 첫 번째 계층은 함수(인증 및 권한 부여)를 호출할 수 있는 사용자를 제어합니다. 두 번째 계층은 함수가 다운스트림 호출(관리 ID)을 호출할 때의 역할을 제어합니다. 세 번째 계층은 처음에 함수 엔드포인트인 네트워크 격리에 도달할 수 있는 기능을 제어합니다.
이 모듈은 Azure Functions 및 Azure Logic Apps 모두에 대해 각 계층을 통해 작동합니다. 함수 앱의 경우 Microsoft Entra ID Azure App Service 인증을 구성하고, 관리 ID를 할당하여 연결 문자열을 제거하고, 인바운드 IP 제한, 프라이빗 엔드포인트, 가상 네트워크 통합 및 Key Vault 참조를 적용합니다. 논리 앱의 경우 동일한 관리 ID 및 네트워크 패턴을 적용하고, 네트워크 기능 요구 사항에 따라 적절한 호스팅 계획을 선택하고, 실행 기록을 통해 노출된 중요한 데이터를 보호합니다.
이 모듈을 마치면 프로덕션 보안 태세에서 Azure Function 앱 및 논리 앱에 대한 인증, 관리 ID 및 네트워크 격리를 구성할 수 있습니다.
학습 목표
이 모듈을 완료한 후에는 다음을 수행할 수 있습니다.
- Azure Function 앱에 대한 인증 및 권한 부여 컨트롤 구성
- 가상 네트워크 통합 및 프라이빗 엔드포인트를 포함하여 함수 앱에 대한 네트워크 액세스 제어 구현
- Azure Logic Apps에 관리 ID, 커넥터 보안 및 네트워크 격리 적용