Azure Spring Apps 랜딩 존 가속기 보안 고려 사항
이 문서에서는 Azure Spring Apps에서 호스트되는 워크로드에 대한 보안 고려 사항 및 권장 사항을 설명합니다. 이 지침은 보안 취약성을 감지, 방지 및 대응할 수 있는 워크로드를 만드는 데 도움이 됩니다.
보안 애플리케이션은 전체 워크로드의 보안을 보장할 수 없습니다. 워크로드 소유자는 사용자 오류를 평가하고 애플리케이션과 애플리케이션이 상호 작용하는 인프라 서비스와 같은 공격 노출 영역을 평가합니다.
Azure는 심층 방어 전략을 지원하기 위해 네트워크, ID 및 데이터에 대한 보안 제어를 제공합니다. 대부분의 컨트롤은 Azure Spring Apps에 기본 제공됩니다. 이 지침은 Azure Security Benchmark 버전 2.0에서 파생된 Azure Spring Apps에 대한 Azure 보안 기준을 기반으로 합니다. 벤치마크는 Azure Spring Apps 클라우드에서 실행되는 워크로드를 보호하는 방법에 대한 권장 사항을 제공합니다.
중앙 집중식 팀은 플랫폼의 일부로 네트워킹 및 ID 제어를 제공합니다. Azure에서 플랫폼, 애플리케이션 및 리소스에 대한 제어를 유지하기 위한 가드레일을 제공합니다. 워크로드에 제공된 애플리케이션 랜딩 존 구독은 관리 그룹에서 상속되는 정책으로 미리 프로비전됩니다.
워크로드를 디자인할 때 소유한 보안 컨트롤이 중앙 컨트롤에 맞춰지도록 합니다. 이 디자인은 중앙 집중식 보안 팀에서 정기적으로 검토해야 합니다. 중앙 팀과 보안 제어 및 플랫폼 정책을 정기적으로 검토하여 워크로드 요구 사항이 수용되는지 확인합니다.
플랫폼 디자인에 대한 자세한 내용은 다음을 참조하세요.
디자인 고려 사항
내부 트래픽. 내부 리소스 간의 트래픽이 비즈니스 위험에 부합하는 엔터프라이즈 구분 원칙을 따르도록 제한하거나 허용합니다. 필요한 경우 가상 네트워크 및 서브넷을 통해 격리 경계를 만듭니다. 네트워크 간의 트래픽 흐름을 제한하는 규칙을 구현합니다.
외부 트래픽. Azure 네이티브 리소스를 사용하여 다음을 비롯한 외부 네트워크의 공격으로부터 워크로드 리소스를 보호합니다.
- DDoS(분산 서비스 거부) 공격
- 애플리케이션별 공격.
- 원치 않는 잠재적인 악성 인터넷 트래픽
ID 관리. 관리 ID, Single Sign-On, 강력한 인증, 관리 ID 및 조건부 액세스와 같은 Microsoft Entra 기능을 사용하여 Microsoft Entra ID를 통해 인증 및 권한 부여를 제공합니다.
보안 모니터링 시스템에는 조직 목표 및 Azure Security Benchmark 컨트롤을 사용하여 위협을 감지하고 규정 준수를 측정하는 모니터링 도구가 있어야 합니다. 이러한 도구를 SIEM(중앙 보안 정보 및 이벤트 관리) 시스템과 통합하여 보안 상태를 전체적으로 파악해야 합니다.
전송 중 데이터. 구성 요소, 위치 또는 API 호출 간에 전송되는 데이터는 암호화되어야 합니다.
미사용 데이터. 구성을 포함한 모든 지속형 데이터를 암호화해야 합니다.
거버넌스 정책 조직에서 설정하는 규정 준수 표준의 편차를 감지해야 합니다. Azure Policy는 편차를 검색하기 위해 적용해야 하는 기본 제공 정의를 제공합니다. 정책을 적용해도 컨트롤의 모든 요구 사항을 완전히 준수하는 것은 아닙니다. 기본 제공 정의에서 처리되지 않는 규정 준수 표준이 있을 수 있습니다.
자격 증명 노출. ID 또는 비밀을 사용하여 코드, 구성 및 지속형 데이터를 배포하고 실행할 수 있습니다. 자산에 액세스할 때 자격 증명이 검사되는지 확인합니다.
인증서 관리. 인증서는 절대 신뢰하지 않는 제로 트러스트 원칙에 따라 로드되어야 하며, 항상 확인해야 하며 자격 증명이 없어야 합니다. 인증서에 대한 액세스 권한을 부여하기 전에 ID를 확인하여 공유 인증서만 신뢰합니다.
일관된 배포. IaC(Infrastructure-as-code)를 사용하여 모든 Azure 리소스의 프로비전 및 구성을 자동화하고 보안 태세를 강화합니다.
디자인 권장 사항
경계로 네트워크
이러한 네트워크 컨트롤은 격리 경계를 만들고 애플리케이션 내/외부의 흐름을 제한합니다.
네트워크 구분
Azure Spring Cloud 서비스 리소스를 배포할 때 기존 가상 네트워크를 만들거나 사용합니다.
서브넷을 통해 가상 네트워크 내에서 격리를 만듭니다. NSG 규칙을 사용하여 내부 리소스 간의 트래픽을 제한하거나 허용합니다. 클라우드용 Microsoft Defender 적응형 네트워크 강화 기능을 사용하여 포트 및 원본 IP를 제한하는 NSG 구성을 더욱 강화합니다. 외부 네트워크 트래픽 규칙에 대한 구성을 기반으로 합니다.
보안 규칙을 만들 때 Azure 서비스 태그를 사용하여 특정 IP 주소 대신 네트워크 액세스 제어를 정의합니다. 적절한 규칙의 원본 또는 대상 필드에 서비스 태그 이름을 지정하는 경우 해당 서비스에 대한 트래픽을 허용하거나 거부합니다. Microsoft는 서비스 태그에서 다루는 주소 접두사를 관리합니다. 주소가 변경되면 서비스 태그가 자동으로 업데이트됩니다.
네트워크 보안 그룹 또는 Azure Firewall에서 AzureSpringCloud
서비스 태그를 사용하여 Azure Spring Apps에서 애플리케이션에 대한 트래픽을 허용합니다.
자세한 내용은 가상 네트워크에서 Azure Spring Cloud를 실행하기 위한 고객의 책임을 참조하세요.
프라이빗 네트워크와의 연결
공동 배치된 환경에서 Azure ExpressRoute 또는 Azure VPN(가상 사설망)을 사용하여 Azure 데이터 센터와 온-프레미스 인프라 간에 프라이빗 연결을 만듭니다. ExpressRoute 연결은 안정성, 빠른 속도 및 짧은 대기 시간으로 공용 인터넷을 통해 이동하지 않습니다.
지점 및 사이트간 VPN 및 사이트간 VPN의 경우 온-프레미스 디바이스 또는 네트워크를 가상 네트워크에 연결합니다. 이러한 VPN 옵션과 Azure ExpressRoute를 조합하여 사용합니다.
Azure에서 둘 이상의 가상 네트워크를 연결하려면 가상 네트워크 피어링을 사용합니다. 피어링된 가상 네트워크 간의 네트워크 트래픽이 프라이빗 전용입니다. 이 트래픽 형식은 Azure 백본 네트워크에 유지됩니다.
외부 네트워크의 공격
WAF(통합 웹 애플리케이션 방화벽)를 사용하여 Azure 애플리케이션 Gateway를 사용하여 인바운드 트래픽에 대한 제어를 배치하고 애플리케이션 계층 공격을 차단합니다.
Azure Firewall을 사용하여 애플리케이션에서 아웃바운드 트래픽을 제한합니다. Azure Firewall을 사용하여 인터넷 및 기타 외부 위치에서 잠재적으로 악의적인 트래픽으로부터 애플리케이션 및 서비스를 보호할 수 있습니다.
Azure Firewall 위협 인텔리전스 기반 필터링은 알려진 악성 IP 주소 및 도메인에 대한 경고를 보내거나 트래픽을 차단할 수 있습니다. IP 주소 및 도메인은 Microsoft 위협 인텔리전스 피드에서 제공됩니다. 페이로드 검사가 필요한 경우 페이로드 검사 기능을 사용하여 Azure Marketplace에서 타사 침입 감지/침입 방지 시스템(IDS/IPS)을 배포합니다. 또는 네트워크 기반 IDS/IPS 대신 호스트 기반 IDS/IPS 또는 호스트 기반 EDR(엔드포인트 검색 및 응답) 솔루션을 사용할 수 있습니다.
DDoS 공격으로부터 워크로드 리소스를 보호하려면 Azure 가상 네트워크에서 DDoS 표준 보호를 사용하도록 설정합니다. 클라우드용 Microsoft Defender 사용하여 네트워크 관련 리소스에 대한 잘못된 구성 위험을 검색합니다.
DNS(도메인 이름 서비스) 보호
Azure DNS를 사용하여 DNS 도메인을 호스트합니다. 잘못된 행위자로부터 DNS 영역 및 레코드를 보호합니다. 이러한 용도로 Azure RBAC(Azure 역할 기반 액세스 제어) 및 리소스 잠금을 권장합니다. 자세한 내용은 현수 DNS 항목 방지 및 하위 도메인 인수 방지를 참조하세요.
경계로서의 ID
Azure는 Microsoft Entra ID를 통해 ID 컨트롤을 제공합니다. 애플리케이션에는 Single Sign-On, 강력한 인증, 관리 ID 및 조건부 액세스와 같은 많은 기능이 있습니다. 아키텍처에 대한 디자인 선택에 대한 자세한 내용은 Azure Spring Apps 랜딩 존 가속기 ID 고려 사항을 참조 하세요.
다음 섹션에서는 이러한 선택 항목의 보안 측면을 설명합니다.
중앙 집중식 ID 시스템과 통합
Azure 랜딩 존은 Microsoft Entra ID를 기본 ID 및 액세스 관리 서비스로 사용합니다. 워크로드 서비스를 관리하려면 중앙 집중식 Microsoft Entra ID를 사용하는 것이 좋습니다. 중앙 집중식 Microsoft Entra ID에는 조직의 네트워크 리소스, Azure Storage, Key Vault 및 애플리케이션이 의존하는 기타 서비스에 대한 액세스가 포함됩니다.
Azure Spring Apps 데이터 평면에 대한 액세스 권한을 부여하려면 Azure Spring Cloud Data Reader 기본 제공 역할을 사용합니다. 이 역할은 읽기 전용 권한을 제공합니다.
다음 Microsoft Entra 기능을 사용하는 것이 좋습니다.
애플리케이션 ID입니다. 애플리케이션은 다른 Azure 서비스에 액세스해야 할 수 있습니다. 예를 들어 Azure Key Vault에서 비밀을 검색하려는 경우입니다.
애플리케이션이 Microsoft Entra ID를 사용하여 다른 서비스에 인증할 수 있도록 Azure Spring Apps에서 관리 ID를 사용합니다. 이 용도로 서비스 주체를 사용하지 마세요. 관리 ID 인증 프로세스는 소스 코드 또는 구성 파일에서 하드 코딩된 자격 증명을 사용하지 않습니다.
인증서 자격 증명과 함께 서비스 주체를 사용하고 클라이언트 비밀로 대체해야 하는 경우 Microsoft Entra ID를 사용하여 리소스 수준에서 권한이 제한된 서비스 주체를 만드는 것이 좋습니다.
두 경우 모두 Key Vault와 Azure 관리 ID를 함께 사용할 수 있습니다. Azure 함수와 같은 런타임 구성 요소를 사용하여 Key Vault에서 비밀을 검색할 수 있습니다. 자세한 내용은 Azure Key Vault의 인증을 참조 하세요.
Microsoft Entra SSO(Single Sign-On). Microsoft Entra SSO 는 클라우드 또는 온-프레미스에서 실행되는 다른 애플리케이션 또는 디바이스에서 애플리케이션에 대한 액세스를 인증하는 것이 좋습니다. SSO는 파트너 또는 공급업체와 같은 내부 및 외부 사용자에게 ID 관리를 제공합니다.
강력한 인증 제어. Microsoft Entra ID는 MFA(다단계 인증) 및 강력한 암호 없는 방법을 통해 강력한 인증 제어를 지원합니다. 관리자 및 권한 있는 사용자의 경우 가장 높은 수준의 강력한 인증 방법을 사용하여 위반이 있는 경우 폭발 반경을 줄입니다. 그리고 기타 사용자에게는 적절하며 강력한 인증 정책을 펼쳐야 합니다. 자세한 내용은 Azure에서 MFA 사용 및 Microsoft Entra ID에 대한 암호 없는 인증 옵션을 참조하세요.
리소스에 대한 조건부 액세스입니다. Azure Spring Apps는 사용자 정의 조건을 기반으로 하는 보다 세부적인 액세스 제어를 위해 Microsoft Entra 조건부 액세스를 지원합니다. MFA를 사용하여 로그인해야 하는 특정 IP 범위의 사용자 로그인을 포함하도록 조건을 설정할 수 있습니다. 이러한 조건부 액세스 정책은 애플리케이션에 액세스하고 관리하기 위해 Microsoft Entra ID에 인증하는 사용자 계정에만 적용됩니다. 이러한 정책은 워크로드 리소스에 연결하는 데 사용되는 서비스 주체, 키 또는 토큰에는 적용되지 않습니다.
권한 있는 액세스. Microsoft Entra Privileged Identity Management를 구현하여 전체 Azure 환경에서 최소 권한 액세스 및 심층 보고를 보장합니다. Teams는 올바른 사용자 및 서비스 원칙이 현재 및 올바른 권한 부여 수준을 갖도록 반복적인 액세스 검토를 시작해야 합니다.
데이터 컨트롤
네트워크 및 ID 컨트롤은 애플리케이션에 대한 액세스를 제한하지만 데이터를 보호해야 합니다. 암호화는 데이터 무결성을 보장하며 위협을 완화하기 위해 적용해야 하는 주요 보안 기능입니다.
전송 중 데이터
전송된 데이터는 트래픽 캡처와 같은 대역 외 공격에 취약합니다. 암호화를 사용하여 공격자가 해당 데이터를 쉽게 읽거나 수정할 수 없도록 합니다. Azure는 Azure 데이터 센터 간에 전송 중인 데이터에 대한 암호화를 제공합니다.
Azure Spring Apps는 TLS(전송 계층 보안) v1.2 이상으로 암호화를 지원합니다. TLS는 ID 및 신뢰를 통해 보안 통신을 제공하고 모든 유형의 통신을 암호화합니다. 모든 유형의 TLS 인증서를 사용할 수 있습니다. 예를 들어 인증 기관에서 발급한 인증서, 확장 유효성 검사 인증서, 여러 하위 도메인을 지원하는 와일드카드 인증서 또는 개발 및 테스트 환경에 대한 자체 서명된 인증서가 있습니다.
암호화는 외부 및 공용 네트워크의 트래픽에 중요합니다. 모든 퍼블릭 엔드포인트는 기본적으로 인바운드 트래픽에 HTTPS를 사용해야 합니다. Azure Resource Manager API 호출을 통해 Azure Spring Apps 서비스를 구성하기 위한 관리 호출은 HTTPS를 통해 수행해야 합니다.
HTTP 트래픽의 경우 Azure 리소스에 연결하는 클라이언트가 TLS v1.2 이상을 협상할 수 있는지 확인합니다. 사용되지 않는 버전이나 프로토콜을 사용하지 마세요. 약한 암호화를 사용하지 않도록 설정합니다.
원격 관리의 경우 암호화되지 않은 프로토콜을 사용하는 대신 Linux용 SSH(Secure Shell) 또는 RDP(원격 데스크톱 프로토콜) 및 Windows용 TLS를 사용합니다.
미사용 데이터
워크로드에는 원본 및 아티팩트, 구성 서버 설정, 앱 설정 및 스토리지에 대한 저장소 상태가 필요합니다. 미사용 서버 쪽 데이터는 Azure Storage 암호화로 보호됩니다. 스토리지는 Microsoft 관리형 키를 사용하여 콘텐츠를 자동으로 암호화합니다.
구성 서버 캐시, 업로드된 원본에서 빌드된 런타임 이진 파일 및 애플리케이션 수명 동안 애플리케이션 로그는 Azure 관리 디스크에 저장됩니다. 이 데이터는 자동으로 암호화됩니다. 사용자가 업로드한 원본에서 빌드된 컨테이너 이미지는 암호화되어 Azure Container Registry에 저장됩니다.
지원 시나리오의 경우 Microsoft에서 관련 고객 데이터에 액세스해야 하는 경우 팀 또는 조직이 액세스를 승인해야 하므로 Microsoft Azure용 Customer Lockbox를 사용합니다.
계정 변칙 모니터링 및 경고
클라우드용 Microsoft Defender 구독에서 과도한 수의 실패한 인증 시도 또는 사용되지 않는 계정과 같은 의심스러운 활동에 대한 경고를 수신하는 것이 좋습니다.
Azure Spring Apps는 위험한 로그인을 포함한 로그인 활동을 추적할 수 있는 Microsoft Entra ID와 통합됩니다. 감사 로그를 사용하여 Microsoft Entra ID 내의 모든 리소스에 대한 변경 내용을 검색할 수 있습니다. 데이터는 Azure Monitor와 통합되며 Microsoft Sentinel로 내보낼 수 있습니다.
자세한 내용은 다음을 참조하세요.
- Microsoft Entra ID의 감사 활동 보고서
- Microsoft Entra 위험한 로그인 보기
- 클라우드용 Microsoft Defender에서 사용자의 ID 및 액세스 작업 모니터링
- 클라우드용 Microsoft Defender의 위협 인텔리전스 보호 모듈의 경고
거버넌스 정책
Azure Spring Cloud라는 Azure의 기본 제공 정의는 네트워크 삽입을 사용하여 네트워크 제어를 적용할 수 있도록 합니다.
- 인터넷에서 애플리케이션에 대한 격리 경계의 구현을 검색합니다.
- Azure Spring Apps가 온-프레미스 데이터 센터의 프라이빗 네트워크 또는 다른 가상 네트워크의 Azure 서비스와 통신할 수 있도록 설정합니다.
- Azure Spring Apps 가상 네트워크에 대한 인바운드 및 아웃바운드 네트워크 통신을 제어합니다.
인증서 관리
백 엔드 서비스 또는 온-프레미스 시스템과 통신할 때 앱에 공용 TLS 인증서가 필요할 수 있습니다. Key Vault에서 인증서를 업로드할 수 있습니다.
Key Vault에서 인증서를 안전하게 로드하기 위해 Spring Boot 앱은 관리 ID 및 Azure RBAC(역할 기반 액세스 제어)를 사용합니다. Azure Spring Apps는 공급자 서비스 주체 및 Azure 역할 기반 액세스 제어를 사용합니다. 이 보안 로드는 Azure Key Vault JCA(Java Cryptography Architecture) 공급자를 사용하여 구동됩니다. 자세한 내용은 Azure Key Vault JCA Java용 클라이언트 라이브러리를 참조하세요.
Spring 코드, Java 코드 또는 OpenSSL과 같은 오픈 소스 라이브러리가 JVM 기본 JCA 체인을 사용하여 JVM의 트러스트 저장소에 인증서를 암시적으로 로드하는 경우 Key Vault에서 Azure Spring Apps로 TLS 인증서를 가져올 수 있습니다. 앱 내에서 해당 인증서를 사용합니다. 자세한 내용은 Azure Spring Apps의 애플리케이션에서 TLS/SSL 인증서 사용을 참조하세요.
자격 증명 검사
자격 증명 스캐너를 구현하여 코드, 구성 및 지속형 데이터에 액세스하는 자격 증명을 식별합니다. 자격 증명 스캐너는 검색된 자격 증명을 Key Vault와 같은 보다 안전한 위치로 이동하는 것이 좋습니다.
GitHub의 경우 네이티브 비밀 검사 기능을 사용하여 코드 내에서 자격 증명 또는 다른 형태의 비밀을 식별할 수 있습니다.
자세한 내용은 다음을 참조하세요.