이 문서에서 제공하는 유용한 정보는 다음과 같습니다.
- 클라우드에서의 애플리케이션 호스팅에 대한 보안 이점 이해
- 다른 클라우드 서비스 모델과 비교하여 서비스로서의 플랫폼 (PaaS)에 대한 보안 이점 평가
- 네트워크 중심에서 ID 중심 경계 보안 방식으로 보안 목표 변경
- 일반적인 PaaS 보안 모범 사례 권장 구현
Azure에서 보안 애플리케이션 개발은 보안 질문 및 클라우드용 애플리케이션을 개발하는 경우 소프트웨어 개발 수명 주기의 각 단계에서 고려해야 하는 컨트롤에 대한 일반 가이드입니다.
클라우드 보안 이점
사용자와 Microsoft 간의 책임 분담을 이해해야 합니다. 온-프레미스에서는 전체 스택을 소유하지만 클라우드로 이동하면 일부 책임이 Microsoft로 이전됩니다.
클라우드에 있는 경우 보안 이점이 있습니다. 온-프레미스 환경에서 조직은 보안에 투자할 수 있는 충족되지 않은 책임과 제한된 리소스를 가질 가능성이 높으며, 이는 공격자가 모든 계층에서 취약성을 악용할 수 있는 환경을 만듭니다.
조직은 공급자의 클라우드 기반 보안 기능과 클라우드 인텔리전스를 사용하여 위협 감지 및 대응 시간을 개선할 수 있습니다. 조직은 클라우드 공급자에 책임을 전가함으로써 보안 적용 범위를 더 넓힐 수 있으며, 보안 리소스와 예산을 다른 비즈니스 우선 순위에 다시 할당할 수 있습니다.
PaaS 클라우드 서비스 모델의 보안 이점
Azure PaaS 배포와 온-프레미스 배포 간의 보안 이점을 비교해 보겠습니다.
Microsoft는 물리적 인프라인 스택 맨 아래부터 시작하여 일반적인 위험과 책임을 덜어줍니다. Microsoft 클라우드는 Microsoft에서 지속적으로 모니터링하므로 공격하기가 어렵습니다. 따라서 공격자가 Microsoft 클라우드를 목표로 삼는 것은 의미가 없습니다. 공격자가 많은 돈과 자원을 갖고 있지 않으면 다른 대상으로 이동할 가능성이 있습니다.
스택 중간에 수행되는 PaaS 배포와 온-프레미스 배포 간에는 차이가 없습니다. 유사한 위험이 애플리케이션 계층과 계정/액세스 관리 계층에도 있습니다. 이 문서의 다음 단계 섹션에서는 이러한 위험을 제거하거나 최소화하기 위한 모범 사례를 안내합니다.
스택 맨 위에는 데이터 관리와 권한 관리가 있으며 키 관리를 통해 완화될 수 있는 위험이 하나 있습니다. 키 관리는 추가적인 책임이지만 리소스를 키 관리로 전환할 수 있도록 더 이상 관리할 필요가 없는 PaaS 배포 영역이 있습니다.
또한 Azure 플랫폼은 다양한 네트워크 기반 기술을 사용하여 강력한 DDoS 보호를 제공합니다. 하지만 모든 유형의 네트워크 기반 DDoS 보호 방법에는 링크별 및 데이터 센터별로 제한이 있습니다. 대규모 DDoS 공격의 영향을 피하기 위해 Azure의 핵심 클라우드 기능을 활용하여 DDoS 공격으로부터 자동으로 신속하게 확장할 수 있습니다.
기본 보안 경계로서의 ID
PaaS 배포를 사용하면 보안에 대한 전반적인 접근 방식이 바뀝니다. 스스로 모든 것을 제어해야 하는 것에서 Microsoft와 책임을 분담하는 것으로 태도를 바꾸어야 합니다.
PaaS와 기존 온-프레미스 배포 간의 또 다른 중요한 차이점은 기본 보안 경계를 정의하는 항목에 대한 새로운 보기입니다. 전통적으로 기본 온-프레미스 보안 경계는 네트워크였으며 대부분의 온-프레미스 보안 설계에서는 네트워크를 기본 보안 중심축으로 사용하고 있습니다. 하지만 PaaS 배포의 경우 ID가 기본 보안 경계라고 생각하면 더 효과적으로 수행할 수 있습니다.
클라우드 컴퓨팅의 필수적인 다섯 가지 특성 중 하나는 광범위한 네트워크 액세스이며, 이는 네트워크 중심적 사고의 관련성을 떨어뜨립니다. 클라우드 컴퓨팅의 목표는 사용자가 위치에 관계 없이 리소스에 액세스할 수 있도록 하는 것입니다. 대부분의 사용자에 대한 위치는 인터넷 어딘가에 있을 것입니다.
다음 그림에서는 보안 경계가 네트워크 경계에서 ID 경계까지 전개되는 방식을 보여 줍니다. 보안 수준이 네트워크 보호에 대해서는 낮아지고 데이터를 보호하고 앱과 사용자의 보안을 관리하는 방법에 대해서는 높아집니다. 주요 차이점은 보안을 회사의 중요한 요소에 더 가깝게 두려는 것입니다.
처음에 Azure PaaS 서비스(예: Azure App Service 및 Azure SQL)는 기존의 네트워크 경계 방어를 거의 또는 전혀 제공하지 않았습니다. 요소의 목적은 인터넷(웹 역할)에 노출되는 것이었으며 인증은 새 경계(예: Azure SQL)를 제공한다는 것을 이해했습니다.
최신 보안 사례에서는 공격자가 네트워크 경계를 침범했다고 가정합니다. 따라서 최신 방어 사례가 ID로 전환했습니다. 조직은 강력한 인증 및 권한 부여 위생을 사용하여 ID 기반 보안 경계를 설정해야 합니다.
ID 관리에 대한 모범 사례
ID 경계 관리를 위한 모범 사례는 다음과 같습니다.
모범 사례: 먼저 Azure 리소스에 대한 관리 ID를 사용하여 자격 증명을 저장하지 않고 다른 서비스에 안전하게 액세스하는 것이 좋습니다. 세부 정보: 관리 ID는 Azure 서비스에서 실행되는 애플리케이션에 대한 ID를 자동으로 제공하여 코드 또는 구성 파일에서 자격 증명을 요구하지 않고 Microsoft Entra ID를 지원하는 서비스에 인증할 수 있도록 합니다. 이렇게 하면 자격 증명 노출 위험이 줄어들고 애플리케이션에 대한 ID 관리가 간소화됩니다.
모범 사례: 키와 자격 증명을 안전하게 보관하여 PaaS 배포를 보호합니다. 세부 정보: 키와 자격 증명 분실은 흔히 발생하는 문제입니다. 이러한 문제를 방지하기 위해 HSM(하드웨어 보안 모듈)에 키와 비밀을 저장할 수 있는 중앙 집중식 솔루션을 사용할 수 있습니다. Azure Key Vault는 HSM으로 보호되는 키를 사용하여 인증 키, 스토리지 계정 키, 데이터 암호화 키, .pfx 파일, 암호를 암호화하여 키와 비밀을 보호합니다.
모범 사례: 소스 코드 또는 GitHub에 자격 증명 및 기타 비밀을 포함하지 않습니다. 세부 정보: 키 및 자격 증명을 분실하는 것보다 더 위험한 상황은 권한이 없는 사람이 해당 정보에 액세스하는 것뿐입니다. 공격자는 봇 기술을 이용하여 GitHub와 같은 코드 리포지토리에 저장된 키와 비밀을 찾을 수 있습니다. 이러한 공용 코드 리포지토리에 키와 비밀을 넣지 마세요.
모범 사례: 강력한 인증 및 권한 부여 플랫폼을 사용합니다. 세부 정보: 사용자 지정 사용자 저장소 대신 인증에 Microsoft Entra ID 를 사용합니다. Microsoft Entra ID를 사용하는 경우 플랫폼 기반 접근 방식을 활용하고 권한 있는 ID 관리를 위임합니다. Microsoft Entra ID 접근 방식은 직원이 해고되고 여러 ID 및 권한 부여 시스템을 통해 정보를 반영해야 하는 경우에 특히 중요합니다.
사용자 지정 코드 대신 플랫폼에서 제공하는 인증 및 권한 부여 메커니즘을 사용합니다. 이는 사용자 지정 인증 코드를 개발하면 오류가 발생할 수 있기 때문입니다. 대부분의 개발자는 보안 전문가가 아니며 인증 및 권한 부여의 미묘한 측면과 최신 개발 정보를 알지 못할 것입니다. Microsoft에서 제공하는 코드와 같은 상용 코드의 경우 광범위하게 보안을 검토하는 경우가 많습니다.
MFA(다단계 인증)를 사용하고, 피싱 방지 MFA 메서드(예: Passkeys, FIDO2 또는 CBA(Certificate-Based Authentication))가 조건부 액세스 정책을 통해 적용되는지 확인합니다. 최소한 모든 관리자에게 이를 요구하고 최적의 보안을 위해 테넌트 전체에서 구현해야 합니다. Azure 관리(포털/원격 PowerShell) 인터페이스 및 고객 관련 서비스에 대한 액세스는 Microsoft Entra 다단계 인증을 사용하도록 설계 및 구성되어야 합니다.
앱 로그인의 경우 Microsoft Entra ID를 통해 OAuth 2.0에서 OIDC(OpenID Connect)를 사용합니다. 이러한 프로토콜은 광범위하게 검토되었으며 인증 및 권한 부여를 위한 플랫폼 라이브러리의 일부로 구현될 수 있습니다.
애플리케이션 디자인 과정에서 위협 모델링 사용
Microsoft Security Development Lifecycle에서는 디자인 단계에서 팀이 위협 모델링 프로세스를 진행해야 하도록 지정하고 있습니다. Microsoft는 이 프로세스를 원활하게 진행할 수 있도록 SDL Threat Modeling Tool을 제작했습니다. 애플리케이션 디자인을 모델링하고 모든 보안 경계에 걸쳐 STRIDE 위협을 열거하면 디자인 오류를 초기에 파악할 수 있습니다.
아래 표에는 STRIDE 위협 및 Azure 기능을 사용하는 몇 가지 완화 방식의 예가 나와 있습니다. 이러한 완화 방식을 모든 상황에서 사용할 수 있는 것은 아닙니다.
| 위협 | 보안 속성 | Azure 플랫폼 완화 가능성 |
|---|---|---|
| 스푸핑 | 인증 | HTTPS 연결이 필요합니다. |
| 변조 | 무결성 | TLS/SSL 인증서의 유효성을 검사합니다. |
| 부인 | 부인 방지 | Azure 모니터링 및 진단을 사용하도록 설정합니다. |
| 정보 공개 | 기밀성 | 서비스 인증서를 사용하여 저장된 민감한 데이터를 암호화합니다. |
| 서비스 거부 | 사용 가용성 | 성능 메트릭에서 서비스 거부 상황 가능성을 모니터링합니다. 연결 필터를 구현합니다. |
| 권한 상승 | 권한 부여 | Privileged Identity Management를 사용합니다. |
Azure App Service
Azure App Service는 플랫폼이나 디바이스를 위한 웹 및 모바일 앱을 만들고 어디서나 클라우드 또는 온-프레미스에 있는 데이터에 연결할 수 있는 PaaS 서비스 제품군입니다. 앱 서비스는 이전에 개별적으로 Azure 웹 사이트 및 Azure Mobile Services로 전달한 웹 및 모바일 기능을 포함합니다. 또한 비즈니스 프로세스를 자동화하고 클라우드 API를 호스팅하는 새 기능을 포함합니다.
App Service 사용 시의 모범 사례는 다음과 같습니다.
모범 사례: Microsoft Entra ID를 통해 인증됩니다. 세부 정보: App Service는 ID 공급자를 위한 OAuth 2.0 서비스를 제공합니다. OAuth 2.0은 클라이언트 개발자의 단순성에 기반하여 웹 애플리케이션, 데스크톱 애플리케이션 및 휴대폰에 대한 특정 권한 부여 흐름을 제공합니다. Microsoft Entra ID는 OAuth 2.0을 사용하여 모바일 및 웹 애플리케이션에 대한 액세스 권한을 부여합니다.
모범 사례: 꼭 알아야 할 필요가 있는 경우에 한하여, 그리고 최소 권한 보안 원칙에 따라 액세스를 제한합니다. 세부 정보: 데이터 액세스를 위한 보안 정책을 시행하려는 조직에서는 액세스를 반드시 제한해야 합니다. Azure RBAC를 사용하여 특정 범위에서 사용자, 그룹 및 애플리케이션에 권한을 할당할 수 있습니다.
모범 사례: 키를 보호합니다. 세부 정보: Azure Key Vault를 사용하면 클라우드 애플리케이션과 서비스에서 사용하는 암호화 키 및 비밀을 보호할 수 있습니다. Key Vault를 사용하면 HSM(하드웨어 보안 모듈)을 통해 보호되는 키를 통해 키와 비밀(예: 인증 키, 스토리지 계정 키, 데이터 암호화 키, .PFX 파일 및 암호)를 암호화할 수 있습니다. 추가된 보증을 위해, HSM에서 키를 생성하거나 가져올 수 있습니다. 자세한 내용은 Azure Key Vault를 참조하세요. 또한 Key Vault를 사용하여 자동 갱신으로 TLS 인증서를 관리할 수도 있습니다.
모범 사례: 들어오는 원본 IP 주소를 제한합니다. 세부 정보: App Service Environment에는 네트워크 보안 그룹을 통해 들어오는 원본 IP 주소를 제한할 수 있는 가상 네트워크 통합 기능이 있습니다. 가상 네트워크에서는 액세스를 제어할 수 있는 인터넷이 아닌 라우팅 가능 네트워크에 Azure 리소스를 배치할 수 있습니다. 자세히 알아보려면 Azure Virtual Network에 앱 통합을 참조하세요. 또한 프라이빗 링크(프라이빗 엔드포인트) 를 사용하고 공용 네트워크를 사용하지 않도록 설정하여 App Service와 다른 서비스 간의 프라이빗 네트워크 연결을 강제할 수도 있습니다.
모범 사례: HTTPS 전용 트래픽을 적용하고 모든 연결에 대해 TLS 1.2 이상이 필요합니다. 가능한 경우 FTP 액세스를 사용하지 않도록 설정합니다. 파일 전송이 필요한 경우 FTPS를 사용하여 암호화된 안전한 전송을 보장합니다. 세부 정보: HTTPS 트래픽만 허용하도록 App Service를 구성하면 전송 중에 데이터가 암호화되어 중요한 정보가 가로채기로부터 보호됩니다. TLS 1.2 이상을 요구하면 이전 프로토콜 버전에서 발견된 취약성에 대한 보안이 강화됩니다. FTP를 사용하지 않도록 설정하면 자격 증명 또는 데이터가 암호화되지 않은 상태로 전송될 위험이 줄어듭니다. 파일 전송이 필요한 경우 전송 중에 자격 증명과 데이터를 모두 암호화하는 FTPS만 사용하도록 설정합니다.
모범 사례: App Service Environment의 보안 상태를 모니터링합니다. 세부 정보: 클라우드용 Microsoft Defender를 사용하여 App Service 환경을 모니터링합니다. 클라우드용 Defender는 잠재적 보안 취약성이 확인될 경우 필요한 제어를 구성하는 과정을 안내하는 권장 사항을 만듭니다. App Service용 Microsoft Defender는 App Service 리소스에 대한 위협 방지 기능을 제공합니다.
자세한 내용은 App Service용 Microsoft Defender를 참조하세요.
웹 애플리케이션 방화벽
웹 애플리케이션의 널리 알려진 취약점을 악용하는 악의적인 공격이 점점 많아지고 있습니다. 이러한 악용 중 일반적인 것은 SQL 삽입 공격 및 교차 사이트 스크립팅 공격입니다. 애플리케이션 코드에서 이러한 공격을 방지하는 것은 어려울 수 있으며 애플리케이션 토폴로지의 여러 계층에서 엄격한 유지 관리, 패치 및 모니터링이 필요할 수 있습니다. 중앙 집중식 웹 애플리케이션 방화벽을 통해 보안 관리가 훨씬 간단해지고 애플리케이션 관리자에게 위협 또는 침입으로부터 효과적인 보호를 제공합니다. 또한 WAF 솔루션은 각 개별 웹 애플리케이션을 보호하는 것과 중앙 위치에서 알려진 취약성을 패치하여 보안 위협에 더 빠르게 대응할 수 있습니다.
AZURE WAF(웹 애플리케이션 방화벽) 는 일반적인 악용 및 취약성으로부터 웹 애플리케이션을 중앙 집중식으로 보호합니다. WAF는 Azure Application Gateway 및 Azure Front Door를 통해 사용할 수 있습니다.
DDoS 보호
Azure는 DDoS IP 보호 및 DDoS 네트워크 보호 라는 두 가지 주요 DDoS 보호 계층을 제공합니다. 이러한 옵션은 다양한 시나리오를 다루며 고유한 기능과 가격 책정을 제공합니다.
- DDoS IP 보호: 특정 공용 IP 주소를 보호하는 데 가장 적합하며 IP 수준에서 필수 DDoS 완화가 필요한 소규모 또는 대상 배포에 적합합니다.
- DDoS 네트워크 보호: 고급 완화, 분석 및 통합을 통해 전체 가상 네트워크를 다룹니다. 보다 광범위한 보안이 필요한 대규모 또는 엔터프라이즈 환경에 적합합니다.
중요하고 비용에 민감한 사례에 대해 DDoS IP Protection을 선택합니다. 포괄적인 검사 및 고급 기능을 위해 DDoS 네트워크 보호를 선택합니다.
DDoS Protection은 네트워크 계층에서 방어합니다(3/4). 애플리케이션 계층(7) 방어의 경우 WAF를 추가합니다. Application DDoS 보호를 참조하세요.
애플리케이션 성능 모니터링
Azure Monitor 는 클라우드와 온-프레미스 환경에서 원격 분석을 수집하고 분석하여 대응 조치를 취합니다. 효과적인 모니터링 전략은 애플리케이션 구성 요소의 세부 작업을 이해하는 데 도움이 됩니다. 또한 중요한 문제의 알림이 제공되므로 문제가 커지기 전에 해결하여 작동 시간을 늘릴 수 있습니다. 그리고 보안과 관련이 있을 수 있는 변칙적인 상황도 검색할 수 있습니다.
Application Insights를 사용하여 클라우드 또는 온-프레미스에서 호스트되는지 여부에 관계없이 애플리케이션의 가용성, 성능 및 사용량을 모니터링합니다. Application Insights를 사용하면 사용자가 보고할 때까지 기다리지 않고 애플리케이션의 오류를 빠르게 식별하고 진단할 수 있습니다. 수집한 정보를 사용하여, 애플리케이션의 유지 관리 및 개선에 대해 현명한 결정을 내릴 수 있습니다.
Application Insight에는 수집하는 데이터와 상호 작용할 수 있는 광범위한 도구가 있습니다. Application Insights는 공용 저장소에 데이터를 저장합니다. Kusto 쿼리 언어를 사용하여 경고, 대시보드 및 심층 분석과 같은 공유된 기능을 활용할 수 있습니다.
보안 침투 테스트 수행
보안 방어의 유효성을 검사하는 것은 다른 기능을 테스트하는 것만큼 중요합니다. 침투 테스트를 빌드 및 배포 프로세스의 표준 파트로 설정하세요. 배포된 애플리케이션에서 보안 테스트 및 취약성 검사를 주기적으로 실시하고 열린 포트, 엔드포인트 및 공격을 모니터링하세요.
다음 단계
이 문서에서는 Azure PaaS 배포의 보안 이점과 클라우드 애플리케이션의 보안 모범 사례에 대해 중점적으로 설명했습니다. 다음 단계에서는 특정 Azure 서비스를 사용하여 PaaS 웹 및 모바일 솔루션을 보호하는 권장 사례에 대해 알아보겠습니다. Azure App Service, Azure SQL Database 및 Azure Synapse Analytics 및 Azure Storage부터 시작합니다. 다른 Azure 서비스에 권장되는 사례에 대한 문서를 사용할 수 있으며, 해당 링크는 다음 목록에서 제공합니다.
클라우드용 애플리케이션을 개발할 때 소프트웨어 개발 수명 주기의 각 단계에서 고려해야 하는 컨트롤과 보안 질문은 Azure에서 보안 애플리케이션 개발을 참조하세요.
Azure 보안 모범 사례 및 패턴에서 Azure를 사용하여 클라우드 솔루션을 디자인하고, 배포하고, 관리할 때 사용할 수 있는 더 많은 보안 모범 사례를 참조하세요.
Azure 보안 및 관련 Microsoft 서비스에 대한 보다 일반적인 정보를 제공하는 다음 리소스도 확인할 수 있습니다.
- Azure 보안 설명서 - 포괄적인 보안 지침
- Microsoft 보안 응답 센터 - Azure와 관련된 문제를 비롯한 Microsoft 보안 취약점을 보고하거나 secure@microsoft.com으로 이메일을 보낼 수 있습니다.