데이터 암호화에 대한 권장 사항
잘 설계된 프레임워크 보안 검사 목록 권장 사항에 적용됩니다.
SE:07 | 최신 업계 표준 방법을 사용하여 기밀성과 무결성을 보호하여 데이터를 암호화합니다. 데이터 분류를 사용하여 암호화 범위 정렬; 네이티브 플랫폼 암호화 방법의 우선 순위를 지정합니다. |
---|
데이터가 보호되지 않으면 악의적으로 수정될 수 있으므로 무결성 및 기밀성이 손실됩니다.
이 가이드에서는 데이터 암호화 및 보호에 대한 권장 사항을 설명합니다. 암호화는 암호화 알고리즘을 사용하여 데이터를 읽을 수 없게 만들고 키로 데이터를 잠그는 프로세스입니다. 암호화된 상태에서는 데이터를 해독할 수 없습니다. 암호화 키와 쌍을 이루는 키를 사용해야만 암호를 해독할 수 있습니다.
정의
용어 | 정의 |
---|---|
인증서 | 암호화 또는 암호 해독을 위해 공개 키를 보유하는 디지털 파일입니다. |
암호 그룹 | TLS(전송 계층 보안)를 통해 네트워크 연결을 보호하기 위해 정보를 암호화하고 암호 해독하는 데 사용되는 알고리즘 집합입니다. |
기밀 컴퓨팅 | 기밀 컴퓨팅은 하드웨어 기반의 증명된 신뢰할 수 있는 실행 환경에서 계산을 수행하여 사용 중인 데이터를 보호하는 것입니다. |
암호 해독 | 암호화된 데이터가 비밀 코드로 잠금 해제되는 프로세스입니다. |
이중 암호화 | 둘 이상의 독립적인 암호화 계층을 사용하여 데이터를 암호화하는 프로세스입니다. |
암호화 | 데이터를 읽을 수 없게 만들고 비밀 코드로 잠기는 프로세스입니다. |
해시 | 정보를 숨기려는 의도로 데이터를 텍스트 또는 숫자로 변환하는 프로세스입니다. |
구성 | 암호화된 데이터를 잠그거나 잠금을 해제하는 데 사용되는 비밀 코드입니다. |
서명 | 데이터에 대한 암호화된 인증 스탬프입니다. |
서명 | 서명을 사용하여 데이터의 신뢰성을 확인하는 프로세스입니다. |
X.509 | 공개 키 인증서의 형식을 정의하는 표준입니다. |
주요 디자인 전략
조직의 의무 또는 규정 요구 사항은 암호화 메커니즘을 적용할 수 있습니다. 예를 들어 데이터가 선택한 지역에만 남아 있어야 하고 데이터 복사본이 해당 지역에서 유지 관리되어야 하는 요구 사항이 있을 수 있습니다.
이러한 요구 사항은 종종 기본 최소값입니다. 더 높은 수준의 보호를 위해 노력합니다. 사용자는 외부 사용자 데이터든 직원 데이터이든 중요한 데이터의 기밀 유출 및 변조를 방지할 책임이 있습니다.
암호화 메커니즘은 다음 세 단계로 데이터를 보호해야 할 수 있습니다.
미사용 데이터는 스토리지 개체에 보관되는 모든 정보입니다.
미사용 데이터를 보호하는 예제는 BitLocker를 사용하여 디스크의 스토리지에 저장된 데이터를 암호화하는 것입니다.
전송 중인 데이터는 구성 요소, 위치 또는 프로그램 간에 전송되는 정보입니다.
전송 중인 데이터를 보호하는 예로는 TLS를 사용하여 데이터를 암호화하여 공용 및 프라이빗 네트워크를 통해 이동하는 패킷이 안전합니다.
사용 중인 데이터는 메모리에서 현재 작업 중인 데이터입니다.
사용 중인 데이터를 보호하는 예는 데이터를 처리할 때 보호하기 위해 기밀 컴퓨팅으로 암호화하는 것입니다.
위의 선택은 상호 배타적이지 않습니다. 전체 솔루션의 컨텍스트에서 함께 사용되는 경우가 많습니다. 한 단계가 보상 컨트롤 역할을 할 수 있습니다. 예를 들어 메모리에서 데이터를 읽을 때 변조를 방지하기 위해 데이터를 격리해야 할 수 있습니다.
암호화 요구 사항 확인
용도 및 민감도 수준으로 데이터를 분류하여 암호화해야 하는 데이터를 결정합니다. 암호화해야 하는 데이터의 경우 필요한 보호 수준을 결정합니다. 전송 중인 모든 데이터에 대해 엔드투엔드 TLS 암호화가 필요한가요? 미사용 데이터의 경우 요구 사항을 충족할 수 있는 Azure 기능은 무엇입니까? 모든 스토리지 지점에서 데이터를 두 번 암호화해야 합니까? 정보 보호를 구현하려면 어떻게 해야 할까요?
상당한 절충이 있기 때문에 암호화 결정의 균형을 맞추는 것이 중요합니다.
절충: 모든 암호화 홉은 성능 대기 시간을 도입할 수 있습니다. 문제 해결 및 관찰 가능성과 관련하여 운영 복잡성이 발생할 수 있습니다. 복구는 어려울 수 있습니다.
이러한 절충의 범위를 지정합니다. 중요한 것으로 분류된 데이터에 대한 절충을 예상합니다. 예를 들어 특정 유형의 데이터를 암호화하고 특정 임계값 내에 저장해야 하는 경우와 같이 요구 사항에 따라 장단점이 결정될 수도 있습니다.
기술 제한, 투자 또는 기타 이유로 인해 암호화가 불가능한 경우가 있습니다. 이러한 이유가 명확하고 유효하며 문서화되어 있는지 확인합니다.
강력한 암호화 메커니즘은 유일한 방어 형태가 되어서는 안 됩니다. 데이터 도난 방지 프로세스, 적절한 테스트 방법 및 변칙 검색을 구현합니다.
분류에 대한 자세한 내용은 데이터 분류에 대한 권장 사항을 참조하세요.
네이티브 암호화 메커니즘 사용
대부분의 Azure 서비스는 기본 수준의 암호화를 제공합니다. 플랫폼 제공 암호화 옵션을 탐색합니다.
고유한 기능을 개발하기 위해 플랫폼 기능을 사용하지 않도록 설정하지 않는 것이 좋습니다. 플랫폼 암호화 기능은 최신 산업 표준을 사용하고, 전문가에 의해 개발되며, 고도로 테스트됩니다.
드문 경우지만 플랫폼 제공 암호화를 대체해야 하는 경우 장단점을 평가하고 업계 표준 암호화 알고리즘을 사용합니다.
개발자는 플랫폼이 아닌 암호화 라이브러리 대신 운영 체제에 기본 제공되는 암호화 API를 사용해야 합니다. .NET의 경우 .NET 암호화 모델을 따릅니다.
암호화 키 방법 선택
기본적으로 Azure 서비스는 Microsoft 관리형 암호화 키를 사용하여 데이터를 암호화하고 암호를 해독합니다. Azure는 키 관리를 담당합니다.
고객 관리형 키를 선택할 수 있습니다. Azure는 여전히 키를 사용하지만 키 작업에 대한 책임이 있습니다. 원하는 경우 키를 유연하게 변경할 수 있습니다. 암호 해독은 고객 관리형 키를 사용하는 강력한 이유입니다.
강력한 암호화와 강력한 암호 해독을 결합해야 합니다. 보안 관점에서는 키가 손상된 경우 회전이 폭발 반경을 제어하는 일반적인 방법이기 때문에 암호 해독 키를 보호하는 것이 중요합니다. 액세스를 모니터링하여 비정상적인 액세스 및 활동을 검색합니다.
암호화된 데이터와 분리된 키를 저장합니다. 이 분리는 한 엔터티의 손상이 다른 엔터티에 영향을 주지 않도록 하는 데 도움이 됩니다. 고객 관리형 키를 사용하는 경우 키 저장소에 저장합니다. HSM(관리형 하드웨어 보안 모듈)에 매우 중요한 데이터를 저장합니다.
두 저장소 모두 ID 기반 액세스로 보호됩니다. 이 기능을 사용하면 플랫폼에 대한 액세스도 거부할 수 있습니다.
표준 암호화 알고리즘 사용
사용자 지정 구현을 만드는 대신 잘 설정되고 업계 표준을 따르는 암호화 알고리즘을 사용합니다.
알고리즘에 대한 업계 표준에서는 암호화 체계가 특정 수준의 엔트로피를 갖도록 요구합니다. 엔트로피 원본은 암호화 중에 삽입됩니다. Entropy는 알고리즘을 강하게 만들고 공격자가 정보를 추출하기 어렵게 만듭니다. 엔트로피의 허용되는 임계값을 결정합니다. 암호화 절차는 프로세서를 많이 사용합니다. 컴퓨팅 요청의 전체 성능 목표를 기준으로 암호화에 소요되는 컴퓨팅 주기를 최대화할 수 있도록 적절한 균형을 찾습니다.
절충: 매우 복잡하거나 적절한 엔트로피보다 많은 양의 엔트로피를 삽입하는 알고리즘을 선택하면 시스템 성능이 저하됩니다.
해시 및 체크섬 사용
일반적으로 해시는 오류 검색 기술입니다. 변조로 인해 발생할 수 있는 데이터의 변경 내용을 감지하므로 보안을 위해 해시를 사용할 수도 있습니다. 해시 함수는 암호화를 기반으로 하지만 키를 사용하지 않습니다. 해시 함수는 알고리즘을 사용하여 체크섬을 생성합니다. 체크섬은 데이터를 비교하여 무결성을 확인할 수 있습니다.
애플리케이션은 SHA-256, SHA-384 또는 SHA-512와 같은 해시 알고리즘의 SHA-2 제품군을 사용해야 합니다.
저장 데이터 암호화
내부 및 외부 규정 준수 요구 사항에 따라 정보 스토리지 개체를 분류하고 보호합니다. 다음 권장 사항을 참조하세요.
스토리지 서비스, 데이터 저장소 및 데이터를 유지하는 데 사용되는 기타 리소스에 제공되는 네이티브 옵션을 사용하여 데이터를 암호화합니다. 이러한 스토리지 서비스 또는 리소스에 데이터를 일시적으로만 저장하는 경우에도 이 데이터를 암호화합니다. 또한 백업 데이터를 암호화하여 원래 원본과 동일한 수준의 보안을 유지합니다.
자세한 내용은 미사용 데이터 보호를 참조하세요.
이중 암호화를 사용합니다. 비즈니스 요구 사항이 더 높은 보증을 요구하는 경우 이중 암호화를 수행할 수 있습니다. 독립적인 고객 관리형 키를 사용하여 둘 이상의 계층으로 데이터를 암호화합니다. 관리형 HSM에 데이터를 저장합니다. 데이터를 읽으려면 두 키 모두에 액세스해야 합니다. 한 키가 손상된 경우 다른 키는 여전히 데이터를 보호합니다. 이 기술은 공격자 비용을 늘리는 것을 목표로 합니다.
플랫폼 제공 암호화를 사용하여 데이터를 두 번 암호화할 수도 있습니다. 플랫폼 제공 암호화는 인프라 수준에서 스토리지 미디어를 보호하고 데이터 수준에서 다른 암호화 계층을 적용합니다. 예를 들어 메시지 브로커 서비스에는 메시지 파이프를 보호하는 Microsoft 관리형 키를 통해 플랫폼 제공 암호화가 있습니다. 이 방법을 사용하면 고객 관리형 키를 사용하여 메시지를 암호화할 수 있습니다.
둘 이상의 암호화 키를 사용합니다. KEK(키 암호화 키)를 사용하여 DEK(데이터 암호화 키)를 보호합니다.
ID 기반 액세스 제어를 사용하여 데이터에 대한 액세스를 제어합니다. 네트워크 방화벽을 추가하여 예기치 않은 안전하지 않은 액세스를 차단하는 추가 보안 계층을 제공합니다.
자세한 내용은 ID 및 액세스 관리에 대한 권장 사항을 참조하세요.
최소 권한 액세스 제어가 있는 관리형 HSM 에 키를 저장합니다. 키에서 데이터로 데이터를 분리합니다.
필요한 항목만 암호화할 수 있도록 제한된 양의 데이터를 저장합니다. 데이터는 암호화 주기보다 오래 사용해서는 안 됩니다. 데이터가 더 이상 필요하지 않은 경우 암호 해독 주기를 소비하지 않고 암호화된 데이터를 삭제합니다.
전송 중인 데이터 암호화
클라이언트-서버 통신에 보안 프로토콜을 사용합니다. 전송 프로토콜에는 기본 제공 보안 계층이 있습니다. TLS는 클라이언트와 서버 엔드포인트 간의 데이터 교환을 위한 업계 표준입니다.
TLS 1.2보다 낮은 버전을 사용하지 마세요. TLS 1.2를 지원하도록 솔루션을 마이그레이션하고 기본적으로 이 버전을 사용합니다. 모든 Azure 서비스는 퍼블릭 HTTPS 엔드포인트에서 TLS 1.2를 지원합니다.
위험: 이전 버전과의 호환성이 지원되지 않는 경우 TLS 1.2를 지원하지 않는 이전 클라이언트가 제대로 작동하지 않을 수 있습니다.
모든 웹 사이트 통신은 전송된 데이터의 민감도에 관계없이 HTTPS를 사용해야 합니다. 클라이언트-서버 핸드셰이크 중에 HTTPS 전송이 유지 관리되고 통신 중에 HTTP로 삭제되지 않도록 HSTS(HTTP Strict Transport Security) 정책 사용을 협상합니다. 이 정책은 중간자 공격으로부터 보호합니다.
HSTS에 대한 지원은 최신 버전에 대한 것입니다. 이전 브라우저와의 호환성이 손상될 수 있습니다.
참고 항목
프로토콜을 암호화하여 데이터베이스에 대한 보안 연결을 설정할 수도 있습니다. 예를 들어 Azure SQL Database는 TLS 핸드셰이크를 통합하는 TDS(테이블 형식 데이터 스트림) 프로토콜을 지원합니다.
암호 그룹은 클라이언트와 서버 간의 핸드셰이크를 표준화하는 데 사용되는 알고리즘 집합입니다. 암호화는 교환이 암호화되고 인증되었는지 확인합니다. 암호화 선택은 서버에서 사용하는 TLS 버전에 따라 달라집니다. Azure 애플리케이션 Gateway와 같은 일부 서비스의 경우 지원하려는 TLS 버전 및 암호 그룹을 선택할 수 있습니다. AES(Advanced Encryption Standard)를 대칭 블록 암호로 사용하는 암호 그룹을 구현합니다. AES-128, AES-192 및 AES-256은 허용됩니다.
인증서의 수명 주기를 관리합니다. 인증서의 수명은 미리 결정됩니다. 수명이 긴 인증서를 보관하지 말고 자체 인증서가 만료되도록 해서는 안 됩니다. 허용 가능한 빈도로 인증서를 갱신하는 프로세스를 구현합니다. 짧은 간격으로 발생하는 갱신 프로세스를 자동화할 수 있습니다.
참고 항목
인증서 고정을 사용하는 경우 민첩성 및 인증서 관리 제한 사항을 숙지합니다.
워크플로에서 잘못된 인증서를 환경에서 수락하도록 허용해서는 안 됩니다. 인증서 고정 프로세스는 인증서의 유효성을 검사하고 해당 유효성 검사를 적용해야 합니다. 액세스 로그를 모니터링하여 서명 키가 적절한 권한과 함께 사용되는지 확인해야 합니다.
키가 손상된 경우 인증서를 즉시 철회해야 합니다. CA(인증 기관)는 만료 전에 무효화된 인증서를 나타내는 CRL(인증서 해지 목록)을 제공합니다. 유효성 검사에서는 CRL을 고려해야 합니다.
절충: 인증 유효성 검사 프로세스는 번거로울 수 있으며 일반적으로 CA를 포함합니다. 인증서를 사용하여 암호화해야 하는 데이터를 결정합니다. 다른 유형의 통신의 경우 지역화된 보상 컨트롤을 구현하여 보안을 추가할 수 있는지 확인합니다.
컨트롤을 지역화하는 한 가지 방법은 mTLS(상호 TLS)를 사용하는 것입니다. 클라이언트와 서버 간에 양방향으로 트러스트를 설정합니다. 클라이언트와 서버 모두 자체 인증서를 가지고 있으며 각 인증서는 퍼블릭 또는 프라이빗 키 쌍으로 인증됩니다. mTLS를 사용하면 외부 CA에 종속되지 않습니다. 이 절충은 두 인증서를 관리하는 복잡성이 더합니다.
필요한 경우 VPN 연결을 두 번 암호화합니다. 이중 암호화를 수행하여 VPN 터널에 심층 방어를 추가합니다. 두 개의 VPN 서버를 사용하는 경우 서버 간의 IP 주소를 숨기고 서버와 대상 간에 IP 주소를 숨길 수도 있습니다. 이 프로세스 중에 전송 중인 데이터도 두 번 암호화됩니다.
절충: 단일 VPN 설정에 비해 이중 VPN 설정은 비용이 많이 들고 연결 속도가 느린 경우가 많습니다.
로깅 및 모니터링 프로세스를 구현합니다. 원본 IP, 포트 및 프로토콜과 같은 클라이언트에 대한 정보를 저장하는 액세스 로그인 리소스를 추적합니다. 이 정보를 사용하여 변칙을 검색합니다.
사용 중인 데이터 암호화
높은 보안 워크로드의 경우 세분화, 격리 및 최소 권한 조정이 권장되는 디자인 패턴입니다.
사용 중인 보호의 컨텍스트에서 하드웨어 경계는 VM, 호스트 관리 코드 및 기타 구성 요소의 격리를 보장하기 위해 실제 CPU 및 메모리에서 사용 중인 동안 데이터를 암호화해야 할 수 있습니다. 데이터 암호화 및 암호 해독은 해당 격리 경계 내에서만 수행해야 합니다.
더 엄격한 보안 또는 규정 요구 사항에 따라 데이터가 사용 중일 때 암호화되고 있다는 하드웨어 기반의 암호화 서명된 증거가 필요할 수도 있습니다. 이는 증명을 통해 얻을 수 있습니다. 기밀 컴퓨팅 은 요구 사항을 지원하는 기술 중 하나입니다. Azure의 특정 서비스는 계산되는 동안 데이터를 보호하는 기능을 제공합니다. 자세한 내용은 Azure Facilitation: Azure Confidential Compute를 참조 하세요.
데이터를 보호하는 데이터의 끝 수명 주기가 수명 동안 여러 시스템을 통해 이동하는 경우가 많고, 솔루션의 모든 구성 요소 부분이 필요한 수준의 보호를 제공할 수 있는지 확인하거나, 데이터 관리 전략에서 적절한 세분화 또는 마스킹을 제공하는지 확인합니다.
Azure 촉진
다음 섹션에서는 데이터를 암호화하는 데 사용할 수 있는 Azure 서비스 및 기능에 대해 설명합니다.
고객 관리형 키
고객 관리형 키를 Azure Key Vault 또는 Key Vault 관리형 HSM에 저장합니다.
Key Vault는 키를 다른 비밀처럼 처리합니다. Azure RBAC(역할 기반 액세스 제어)는 권한 모델을 통해 키에 액세스합니다. 이 ID 기반 컨트롤은 Key Vault 액세스 정책과 함께 사용해야 합니다.
자세한 내용은 RBAC를 사용하여 Key Vault 키, 인증서 및 비밀에 대한 액세스 제공을 참조하세요.
Azure Key Vault Premium 및 Managed-HSM은 기밀 컴퓨팅 기능과 키가 TEE(신뢰할 수 있는 실행 환경) 내에서 실행 중임을 암호화적으로 증명할 수 있는 워크로드에만 릴리스되도록 하는 정책을 지원하는 보안 키 릴리스 를 포함하여 제품을 더욱 향상시킵니다.
미사용 데이터 보호
Azure Storage 는 데이터가 스토리지 계정에 유지될 때 블록 암호화를 사용하여 데이터를 자동으로 암호화합니다. Azure Blob Storage 및 Azure Queue Storage의 경우 Storage는 라이브러리를 통해 클라이언트 쪽 암호화도 제공합니다.
자세한 내용은 스토리지 암호화를 참조하세요.
Azure Virtual Machines 에는 가상 스토리지 볼륨 역할을 하는 디스크 파일이 있습니다. 콘텐츠에 액세스할 수 없도록 가상 디스크 파일을 암호화할 수 있습니다.
관리 디스크는 포털에서 내보낼 수 있습니다. 호스트의 서버 쪽 암호화 및 암호화는 데이터를 내보낸 후에만 보호할 수 있습니다. 그러나 내보내기 프로세스 중에 데이터를 보호해야 합니다. Azure Disk Encryption을 사용하여 내보내기 프로세스 중에 데이터를 보호하고 보호할 수 있습니다.
Azure는 관리 디스크에 대한 몇 가지 암호화 옵션을 제공합니다. 자세한 정보는 관리 디스크 암호화 옵션 개요를 참조하세요.
SQL Database 는 페이지 수준에서 데이터베이스 파일을 암호화하는 데 사용되는 투명한 데이터 암호화 기능을 제공합니다.
전송 중인 데이터 보호
Key Vault를 사용하면 공용 및 프라이빗 SSL(Secure Sockets Layer) 또는 TLS 인증서를 프로비전, 관리 및 배포할 수 있습니다. Azure 및 내부 연결된 리소스와 함께 인증서를 사용할 수 있습니다.
사용 중인 데이터 보호
Azure의 특정 서비스는 Azure 기밀 컴퓨팅을 사용하여 호스트의 실제 CPU 및 메모리 내에서 계산되는 동안 데이터를 보호하는 기능을 제공합니다.
기밀 Virtual Machines는 TEE 내에서 실행되는 전체 가상 머신을 제공하며, 가상 머신의 메모리 및 실행 CPU 콘텐츠는 암호화되어 높은 보안 요구 사항을 가진 수정되지 않은 애플리케이션을 Azure로 이동하기 위한 간단한 '리프트 앤 시프트' 접근 방식을 제공합니다. 각 Azure 기밀 VM에는 자체 전용 TPM(가상 신뢰 플랫폼 모듈)이 있습니다. 운영 체제 구성 요소가 안전하게 부팅되는 동안 암호화가 수행됩니다.
기밀 AKS 작업자 노드, AKS의 기밀 컨테이너 또는 ACI(Azure Container Instances)의 기밀 컨테이너는 TEE 내에서 수정되지 않은 컨테이너를 실행하고 관리하는 기능을 제공하여 고객이 사용 중인 보호를 활용할 수 있도록 합니다. 컨테이너 제품은 기본 제공 기밀 Virtual Machines이며 동일한 보호 기능을 활용합니다.
Application Enclave 솔루션은 SGX(Intel Software Guard Extensions)를 지원하는 가상 머신 SKU에서 제공하는 특정 CPU 확장을 활용하는 특별히 빌드된 애플리케이션으로, 매우 세분화된 TCB(신뢰할 수 있는 컴퓨팅 베이스) 를 제공하지만 기능을 활용하기 위해 애플리케이션을 구체적으로 코딩해야 합니다.
보안 키 릴리스를 이러한 기술과 결합하여 암호화된 데이터가 증명이라는 프로세스를 통해 필요한 수준의 보호를 제공한다는 것을 증명하는 TEE 내에서만 암호 해독되도록 할 수 있습니다.
비밀 관리
Key Vault를 사용하여 토큰, 암호, 인증서, API 키 및 기타 비밀에 대한 액세스를 안전하게 저장하고 제어할 수 있습니다. Key Vault를 키 및 인증서 관리 솔루션으로 사용합니다. 프리미엄 SKU는 HSM을 지원합니다.
예시
다음 예제에서는 키, 인증서 및 비밀을 관리하는 데 사용할 수 있는 암호화 솔루션을 보여 줍니다.
관련 링크
- .NET 암호화 모델
- Azure 디스크 암호화
- 미사용 데이터에 대한 스토리지 암호화
- Azure 서비스의 인증서 고정
- RBAC를 사용하여 Key Vault 키, 인증서 및 비밀에 대한 액세스 제공
- 관리 디스크 암호화 옵션 개요
- 투명한 데이터 암호화
- 신뢰 플랫폼 모듈 개요
- Azure 기밀 컴퓨팅
커뮤니티 링크
보안 검사 목록
전체 권장 사항 집합을 참조하세요.