요약
Contoso Retail의 보안 검토는 서버리스 워크로드를 노출시키는 네 가지 제어 격차를 확인했습니다. 즉, 인증되지 않은 HTTP 트리거, 애플리케이션 설정의 일반 텍스트 연결 문자열, 함수 앱 엔드포인트에 대한 인바운드 네트워크 제한 없음, 공유 논리 앱 연결 리소스의 하드 코딩된 자격 증명. 이 모듈에서는 세 가지 보안 계층으로 구성된 컨트롤을 사용하여 각 간격을 해결했습니다.
구성한 항목 검토
함수 앱을 호출할 수 있는 사용자를 제어하는 인증 계층은 Azure App Service 인증을 통해 해결되었습니다. 함수 코드가 실행되기 전에 인증되지 않은 요청을 차단하도록 Require authentication 설정을 사용하여 Microsoft Entra ID EasyAuth ID 공급자로 구성했습니다. 함수 권한 부여 수준은 보조 계층을 제공합니다. 앱 전체 액세스를 위한 호스트 키, 함수별 제한에 대한 함수 키 및 업스트림 게이트웨이로 보호되는 엔드포인트용으로 예약된 익명 수준.
다운스트림 호출을 할 때 함수 앱의 역할을 제어하는 ID 계층은 시스템 할당 관리 ID를 통해 해결되었습니다. 관리 ID를 사용하도록 설정하고 적절한 RBAC 역할을 할당하면 연결 문자열이 더 이상 애플리케이션 설정에 저장되지 않습니다. 함수 앱이 Azure OpenAI 엔드포인트를 호출하는 AI 오케스트레이션 패턴의 경우 Cognitive Services OpenAI User 역할은 API 키 스토리지를 완전히 대체합니다.
@Microsoft.KeyVault(SecretUri=...) 구문을 사용하는 Key Vault 참조는 이전에 비밀 값을 보유했던 애플리케이션 설정으로 이 패턴을 확장합니다.
함수 엔드포인트에 도달할 수 있는 기능을 제어하는 네트워크 격리 계층은 인바운드 IP 제한, Elastic Premium 또는 Dedicated 계획의 함수 앱에 대한 프라이빗 엔드포인트 및 아웃바운드 트래픽에 대한 가상 네트워크 통합을 통해 해결되었습니다. 동일한 3계층 모델이 논리 앱에 적용되었으며, 표준 계획은 소비 계획이 지원하지 않는 가상 네트워크 통합, 프라이빗 엔드포인트 및 단일 테넌트 격리를 제공합니다. 개별 논리 앱 작업에 대한 보안 입력 및 보안 출력 설정은 중요한 데이터가 실행 기록에 나타나지 않도록 보호합니다.