Azure App Service는 웹앱, 모바일 앱 백 엔드, RESTful API 및 함수 앱을 빌드, 배포 및 확장할 수 있는 PaaS(Platform-as-a-Service) 환경을 제공합니다. 이 서비스를 배포할 때는 보안 모범 사례를 따라 애플리케이션, 데이터 및 인프라를 보호하는 것이 중요합니다.
이 문서에서는 Azure App Service 배포를 가장 안전하게 보호하는 방법에 대한 지침을 제공합니다.
Azure App Service는 Azure VM(가상 머신), 스토리지, 네트워크 연결, 웹 프레임워크, 관리 및 통합 기능을 비롯한 플랫폼 구성 요소를 적극적으로 보호하고 강화합니다. App Service는 다음을 보장하기 위해 연속적이고 엄격한 규정 준수 검사를 거칩니다.
- 각 앱은 다른 Azure 앱 및 리소스와 분리됩니다.
- VM 및 런타임 소프트웨어의 정기적인 업데이트는 새로 검색된 취약성을 해결합니다.
- 앱과 Azure SQL Database 와 같은 다른 Azure 리소스 간의 비밀 및 연결 문자열 통신은 네트워크 경계를 넘지 않고 Azure 내에서만 발생합니다. 저장된 비밀은 항상 암호화됩니다.
- 하이브리드 연결과 같은 App Service 연결 기능을 통한 모든 통신이 암호화됩니다.
- Azure PowerShell, Azure CLI, Azure SDK 및 REST API와 같은 원격 관리 도구를 통한 모든 연결이 암호화됩니다.
- 지속적인 위협 관리는 맬웨어, DDoS(분산 서비스 거부) 및 중간자 공격 및 기타 위협으로부터 인프라와 플랫폼을 보호합니다.
Azure의 인프라 및 플랫폼 보안에 대한 자세한 내용은 Azure 보안 센터를 참조하세요.
네트워크 보안
App Service는 애플리케이션을 잠그고 무단 액세스를 방지하기 위해 많은 네트워크 보안 기능을 지원합니다.
프라이빗 엔드포인트 구성: Azure Private Link를 사용하여 가상 네트워크를 통해 App Service로 트래픽을 라우팅하여 공용 인터넷 노출을 제거하고 프라이빗 네트워크의 클라이언트에 대한 보안 연결을 보장합니다. Azure App Service에 대한 프라이빗 엔드포인트 사용을 참조하세요.
가상 네트워크 통합 구현: 퍼블릭 인터넷에서 격리를 유지하면서 앱이 Azure 가상 네트워크 내 또는 Azure 가상 네트워크를 통해 리소스에 액세스할 수 있도록 하여 아웃바운드 트래픽을 보호합니다. Azure 가상 네트워크와 앱 통합을 참조하세요.
IP 액세스 제한 구성: 애플리케이션에 액세스할 수 있는 IP 주소 및 서브넷의 허용 목록을 정의하여 앱에 대한 액세스를 제한하고 다른 모든 트래픽을 차단합니다. 서브넷 마스크로 정의된 개별 IP 주소 또는 범위를 정의하고 Windows 앱에서 web.config 파일을 통해 동적 IP 제한을 구성할 수 있습니다. Azure App Service 액세스 제한 설정을 참조하세요.
서비스 엔드포인트 제한 설정: IP 액세스 제한과 함께 작동하여 네트워크 수준 필터링을 제공하는 서비스 엔드포인트를 사용하여 가상 네트워크의 특정 서브넷에서 앱에 대한 인바운드 액세스를 잠급니다. Azure App Service 액세스 제한을 참조하세요.
웹 애플리케이션 방화벽 사용: App Service 앞에서 웹 애플리케이션 방화벽 기능을 사용하여 Azure Front Door 또는 Application Gateway를 구현하여 일반적인 웹 취약성 및 공격에 대한 보호를 강화합니다. Azure Application Gateway의 Azure Web Application Firewall을 참조하세요.
ID 및 액세스 관리
무단 사용 및 잠재적 자격 증명 도난에 대해 Azure App Service 배포를 보호하기 위해 ID 및 액세스 제어를 적절히 관리하는 것이 중요합니다.
나가는 요청에 관리 ID 사용: 관리 ID를 사용하여 코드 또는 구성에 자격 증명을 저장하지 않고도 앱에서 안전하게 Azure 서비스에 인증하여 서비스 주체 및 연결 문자열을 관리할 필요가 없습니다. 관리 ID는 Azure SQL Database, Azure Key Vault 및 Azure Storage와 같은 다른 Azure 서비스에 보내는 요청을 할 때 사용할 앱에 대해 Microsoft Entra ID에서 자동으로 관리 ID를 제공합니다. App Service는 시스템 할당 및 사용자 할당 관리 ID를 모두 지원합니다. App Service 및 Azure Functions에 대한 관리 ID 사용을 참조하세요.
인증 및 권한 부여 구성: Microsoft Entra ID 또는 기타 ID 공급자를 사용하여 애플리케이션을 보호하기 위해 App Service 인증/권한 부여를 구현하여 사용자 지정 인증 코드를 작성하지 않고 무단 액세스를 방지합니다. 기본 제공 인증 모듈은 웹 요청을 애플리케이션 코드에 전달하기 전에 처리하고 Microsoft Entra ID, Microsoft 계정, Facebook, Google 및 X를 비롯한 여러 공급자를 지원합니다. Azure App Service에서 인증 및 권한 부여를 참조하세요.
관리 작업에 대한 역할 기반 액세스 제어 구현: 최소 권한 원칙에 따라 사용자 및 서비스 주체에게 필요한 최소 Azure RBAC 권한을 할당하여 App Service 리소스(관리 평면)를 관리하고 구성할 수 있는 사용자를 제어합니다. 애플리케이션 수준 인증(간편한 인증) 또는 앱-리소스 인증(관리 ID)과는 별도로 앱 만들기, 구성 설정 수정 및 배포 관리와 같은 작업에 대한 관리 액세스를 제어합니다. Azure 기본 제공 역할을 참조하세요.
대신 인증 구현: Microsoft Entra ID를 인증 공급자로 사용하는 사용자를 대신하여 원격 리소스에 대한 액세스를 위임합니다. App Service 앱은 Microsoft Graph 또는 원격 App Service API 앱과 같은 서비스에 위임된 로그인을 수행할 수 있습니다. 엔드 투 엔드 자습서는 Azure App Service에서 엔드 투 엔드 사용자 인증 및 권한 부여를 참조하세요.
상호 TLS 인증 사용: 특히 B2B 시나리오 또는 내부 애플리케이션의 경우 애플리케이션이 클라이언트 ID를 확인해야 하는 경우 보안을 강화하려면 클라이언트 인증서가 필요합니다. Azure App Service에 대한 TLS 상호 인증 구성을 참조하세요.
데이터 보호
전송 중 및 미사용 데이터를 보호하는 것은 애플리케이션 및 해당 데이터의 기밀성과 무결성을 유지하는 데 중요합니다.
HTTPS 적용: HTTPS 전용 모드를 사용하도록 설정하여 모든 HTTP 트래픽을 HTTPS로 리디렉션하여 클라이언트와 앱 간의 모든 통신이 암호화되도록 합니다. 기본적으로 App Service는 HTTP 요청에서 HTTPS로의 리디렉션을 강제로 적용하고 앱의 기본 도메인 이름은
<app_name>.azurewebsites.net이미 HTTPS를 통해 액세스할 수 있습니다. 일반 설정 구성을 참조하세요.TLS 버전 구성: 최소 TLS 버전을 1.2 이상으로 구성하여 최신 TLS 프로토콜을 사용하고, 오래된 안전하지 않은 프로토콜을 사용하지 않도록 설정하여 잠재적 취약성을 방지합니다. App Service는 TLS 1.3(최신), TLS 1.2(기본 최소값) 및 TLS 1.1/1.0(이전 버전과의 호환성 전용)을 지원합니다. 웹앱 및 SCM 사이트 모두에 대한 최소 TLS 버전을 구성합니다. 일반 설정 구성을 참조하세요.
TLS/SSL 인증서 관리: 올바르게 구성된 TLS/SSL 인증서를 사용하여 신뢰할 수 있는 연결을 설정하여 사용자 지정 도메인을 보호합니다. App Service는 무료 App Service 관리 인증서, App Service 인증서, 타사 인증서 및 Azure Key Vault에서 가져온 인증서 등 여러 인증서 유형을 지원합니다. 사용자 지정 도메인을 구성하는 경우 브라우저에서 보안 HTTPS 연결을 만들 수 있도록 TLS/SSL 인증서로 보호합니다. Azure App Service에서 TLS/SSL 인증서 추가 및 관리를 참조하세요.
Key Vault에 비밀 저장: 데이터베이스 자격 증명, API 토큰 및 프라이빗 키와 같은 중요한 구성 값은 애플리케이션 설정이나 코드에 저장하지 않고 Azure Key Vault에 저장하고 관리 ID를 사용하여 액세스하여 보호합니다. App Service 앱은 관리 ID 인증을 사용하여 Key Vault에 안전하게 액세스할 수 있습니다. App Service 및 Azure Functions에 대한 Key Vault 참조 사용을 참조하세요.
애플리케이션 설정 암호화: 코드 또는 구성 파일에 비밀을 저장하는 대신 암호화된 앱 설정 및 연결 문자열을 사용합니다. App Service는 Azure에서 암호화된 이러한 값을 저장하고 앱이 시작될 때 앱의 프로세스 메모리에 삽입하기 직전에 암호화 키를 정기적으로 회전하여 암호를 해독합니다. 프로그래밍 언어에 대한 표준 패턴을 사용하여 환경 변수로 이러한 값에 액세스합니다. 앱 설정 구성을 참조하세요.
원격 연결 보안: 백 엔드 리소스에서 암호화되지 않은 연결을 허용하는 경우에도 원격 리소스에 액세스할 때 암호화된 연결을 항상 사용합니다. Azure SQL Database 및 Azure Storage와 같은 Azure 리소스의 경우 연결은 Azure 내에 유지되며 네트워크 경계를 넘지 않습니다. 가상 네트워크 리소스의 경우 지점 및 사이트 간의 VPN과 가상 네트워크 통합을 사용합니다. 온-프레미스 리소스의 경우 TLS 1.2와 하이브리드 연결을 사용하거나 사이트 및 사이트 간의 VPN과 가상 네트워크를 통합합니다. 백 엔드 Azure 서비스가 앱에서 가능한 가장 작은 IP 주소 집합만 허용하는지 확인합니다. 아웃바운드 IP 찾기를 참조하세요.
로깅 및 모니터링
잠재적인 보안 위협을 감지하고 Azure App Service 배포 관련 문제를 해결하려면 포괄적인 로깅 및 모니터링을 구현해야 합니다.
진단 로깅 사용: 애플리케이션 오류, 웹 서버 로그, 실패한 요청 추적 및 자세한 오류 메시지를 추적하도록 Azure App Service 진단 로그를 구성하여 보안 문제를 식별하고 문제를 해결합니다. Azure App Service에서 앱에 대한 진단 로깅 사용을 참조하세요.
Azure Monitor와 통합: App Service에서 로그 및 메트릭을 수집하고 분석하도록 Azure Monitor를 설정하여 보안 이벤트 및 성능 문제에 대한 포괄적인 모니터링 및 경고를 사용하도록 설정합니다. Azure App Service에서 앱 모니터링을 참조하세요.
Application Insights 구성: Application Insights를 구현하여 실시간 모니터링 및 분석 기능을 사용하여 애플리케이션 성능, 사용 패턴 및 잠재적인 보안 문제에 대한 자세한 인사이트를 얻습니다. Azure App Service 성능 모니터링을 참조하세요.
보안 경고 설정: 비정상적인 사용 패턴, 잠재적인 보안 위반 또는 App Service 리소스에 영향을 주는 서비스 중단을 알리는 사용자 지정 경고를 만듭니다. Azure Monitor를 사용하여 메트릭 경고 만들기, 보기 및 관리를 참조하세요.
상태 검사 사용: 애플리케이션의 작동 상태를 모니터링하고 가능한 경우 자동으로 문제를 수정하도록 상태 검사를 구성합니다. 상태 검사를 사용하여 App Service 인스턴스 모니터링을 참조하세요.
규정 준수 및 거버넌스
적절한 거버넌스를 설정하고 관련 표준을 준수하는 것은 Azure App Service 애플리케이션의 보안 운영에 매우 중요합니다.
Azure Policy 구현: 규정 준수 요구 사항을 감사하고 적용하는 Azure Policy 정의를 만들고 할당하여 App Service 배포에 대한 조직 차원의 보안 표준을 적용합니다. Azure App Service에 대한 Azure Policy 규정 준수 컨트롤을 참조하세요.
보안 권장 사항 검토: Microsoft Defender for Cloud를 사용하여 App Service 보안 상태를 정기적으로 평가하여 보안 취약성 및 잘못된 구성을 식별하고 수정합니다. Azure App Service 웹앱 및 API 보호를 참조하세요.
보안 평가 수행: App Service 애플리케이션의 정기적인 보안 평가 및 침투 테스트를 수행하여 잠재적인 취약성 및 보안 약점을 식별합니다. Microsoft 클라우드 보안 벤치마크를 참조하세요.
규정 준수 유지: 특히 데이터 보호 및 개인 정보 보호와 관련하여 업계 및 지역의 적용 가능한 규정 요구 사항에 따라 App Service 배포를 구성합니다. Azure 규정 준수 설명서를 참조하세요.
보안 DevOps 사례 구현: 코드 검사, 종속성 검사 및 자동화된 보안 테스트를 포함하여 App Service에 애플리케이션을 배포하기 위한 보안 CI/CD 파이프라인을 설정합니다. Azure에서 DevSecOps를 참조하세요.
백업 및 복구
Azure App Service 배포에서 비즈니스 연속성 및 데이터 보호를 보장하려면 강력한 백업 및 복구 메커니즘을 구현해야 합니다.
자동화된 백업 사용: 실수로 삭제, 손상 또는 기타 오류가 발생한 경우 애플리케이션 및 데이터를 복구할 수 있도록 App Service 애플리케이션에 대한 예약된 백업을 구성합니다. Azure App Service에서 앱 백업 및 복원을 참조하세요.
백업 보존 구성: 비즈니스 요구 사항 및 규정 준수 요구 사항에 따라 백업에 대한 적절한 보존 기간을 설정하여 필요한 기간 동안 중요한 데이터가 유지되도록 합니다. Azure App Service에서 앱 백업 및 복원을 참조하세요.
다중 지역 배포 구현: 여러 지역에 중요한 애플리케이션을 배포하여 지역 가동 중단 시 고가용성 및 재해 복구 기능을 제공합니다. 자습서: App Service에서 고가용성 다중 지역 앱 만들기를 참조하세요.
백업 복원 테스트: 백업 복원 프로세스를 정기적으로 테스트하여 백업이 유효하고 필요할 때 성공적으로 복원될 수 있는지 확인하고 애플리케이션 기능과 데이터 무결성을 모두 확인합니다. 백업에서 앱 복원을 참조하세요.
문서 복구 절차: 복구 절차에 대한 포괄적인 설명서를 만들고 유지 관리하여 서비스 중단 또는 재해 발생 시 신속하고 효과적인 대응을 보장합니다.
서비스별 보안
Azure App Service에는 웹 애플리케이션의 전반적인 보안을 보장하기 위해 해결해야 하는 고유한 보안 고려 사항이 있습니다.
기본 인증 사용 안 함: 향상된 보안으로 OAuth 2.0 토큰 기반 인증을 제공하는 Microsoft Entra ID 기반 인증을 위해 FTP 및 SCM 엔드포인트에 대한 기본 사용자 이름 및 암호 인증을 사용하지 않도록 설정합니다. Azure App Service 배포에서 기본 인증 사용 안 함을 참조하세요.
FTP/FTPS 배포 보안: 배포에 FTP를 사용할 때 FTP 액세스를 사용하지 않도록 설정하거나 FTPS 전용 모드를 적용하여 자격 증명 및 콘텐츠가 명확한 텍스트로 전송되지 않도록 방지합니다. 새 앱은 기본적으로 FTPS만 허용하도록 설정됩니다. FTP/S를 사용하여 Azure App Service에 앱 배포를 참조하세요.
완전한 네트워크 격리 달성: App Service Environment를 사용하여 고유한 Azure Virtual Network 인스턴스의 전용 App Service Environment 내에서 앱을 실행합니다. 이렇게 하면 전용 퍼블릭 엔드포인트, 내부 전용 액세스를 위한 ILB(내부 부하 분산 장치) 옵션 및 엔터프라이즈 수준 보호를 위해 웹 애플리케이션 방화벽 뒤에 ILB를 사용할 수 있는 기능이 있는 공유 인프라에서 완벽한 네트워크 격리를 제공합니다. Azure App Service Environment 소개를 참조하세요.
DDoS 보호 구현: WAF(웹 애플리케이션 방화벽) 및 Azure DDoS 보호를 사용하여 새로운 DDoS 공격으로부터 보호합니다. 네트워크 수준 DDoS 공격에 대한 플랫폼 수준 보호를 위해 WAF를 사용하여 Azure Front Door를 배포합니다. WAF를 사용하는 Azure DDoS Protection 및 Azure Front Door를 참조하세요.