미사용 데이터에 대한 Azure Storage 암호화

Azure Storage는 SSE(서버 측 암호화)를 사용하여 데이터가 클라우드에 유지될 때 데이터를 자동으로 암호화합니다. Azure Storage 암호화는 데이터를 보호하고 조직의 보안과 규정 준수 노력에 부합하는 데 도움이 됩니다.

Microsoft는 대부분의 시나리오에서 서비스 쪽 암호화를 사용하여 데이터를 보호할 것을 권장합니다. 그러나 Blob Storage 및 Queue Storage용 Azure Storage 클라이언트 라이브러리는 클라이언트의 데이터를 암호화해야 하는 고객을 위해 클라이언트 쪽 암호화도 제공합니다. 자세한 내용은 Blob 및 큐에 대한 클라이언트 쪽 암호화를 참조하세요.

Azure Storage 서비스 쪽 암호화 정보

Azure Storage의 데이터는 사용 가능한 가장 강력한 블록 암호 중 하나인 256비트 AES 암호화를 사용하여 투명하게 암호화 및 암호 해독되며 FIPS 140-2를 준수합니다. Azure Storage 암호화는 Windows의 BitLocker 암호화와 비슷합니다.

Azure Storage 암호화는 Resource Manager 및 클래식 스토리지 계정을 비롯한 모든 스토리지 계정에 사용됩니다. Azure Storage 암호화를 해제할 수 없습니다. 데이터가 기본적으로 보호되므로 Azure Storage 암호화를 활용하기 위해 코드 또는 애플리케이션을 수정할 필요가 없습니다.

스토리지 계정의 데이터는 성능 계층(표준 또는 프리미엄), 액세스 계층(핫 또는 쿨) 또는 배포 모델(Azure Resource Manager 또는 클래식)에 관계없이 암호화됩니다. 보관 계층의 Blob을 포함하여 모든 신규 및 기존 블록 Blob, 추가 Blob 및 페이지 Blob이 암호화됩니다. 모든 Azure Storage 중복 옵션은 암호화를 지원 하며 지역 복제를 사용하면 기본 지역과 보조 지역의 모든 데이터가 암호화됩니다. BLOB, 디스크, 파일, 큐 및 테이블 등 모든 Azure Storage 리소스가 암호화됩니다. 모든 개체 메타데이터도 암호화됩니다.

Azure Storage 암호화에 따른 추가 비용은 없습니다.

암호화 모듈의 기본 Azure Storage 암호화에 대한 자세한 내용은 Cryptography API: Next Generation을 참조하세요.

Azure 관리 디스크의 암호화 및 키 관리는 Azure 관리 디스크의 서버 측 암호화를 참조하세요.

암호화 키 관리 정보

기본적으로 새 스토리지 계정의 데이터는 Microsoft 관리 키로 암호화됩니다. Microsoft 관리 키를 데이터 암호화에 계속 사용하거나 고유한 키를 사용하여 암호화를 관리할 수도 있습니다. 고유한 키로 암호화를 관리하는 경우 두 가지 옵션이 있습니다. 두 가지 키 관리 유형 중 하나나 둘 다 사용할 수 있습니다.

  • Blob Storage와 Azure Files에서 데이터를 암호화 및 암호 해독하는 데 사용할 고객 관리형 키를 지정할 수 있습니다.1,2 고객 관리형 키를 Azure Key Vault 또는 Azure Key Vault 관리형 HSM(하드웨어 보안 모델)에 저장해야 합니다. 고객 관리형 키에 대한 자세한 내용은 Azure Storage 암호화에 고객 관리형 키 사용을 참조하세요.
  • Blob Storage 작업에서 고객이 제공한 키를 지정할 수 있습니다. Blob Storage에 대해 읽기 또는 쓰기 요청을 전송하는 클라이언트는 Blob 데이터를 암호화하고 암호 해독하는 방법을 세부적으로 제어할 수 있는 요청에 암호화 키를 포함할 수 있습니다. 고객이 제공한 키에 대한 자세한 내용은 Blob Storage 요청 시 암호화 키 제공을 참조하세요.

기본적으로 스토리지 계정은 전체 스토리지 계정으로 범위가 지정된 키로 암호화됩니다. 암호화 범위를 사용하면 컨테이너 또는 개별 Blob으로 범위가 지정된 키로 암호화를 관리할 수 ​​있습니다. 암호화 범위를 사용하여 같은 스토리지 계정에 있지만 다른 고객에 속한 데이터 간에 보안 경계를 만들 수 있습니다. 암호화 범위는 Microsoft 관리형 키 또는 고객 관리형 키를 사용할 수 있습니다. 암호화 범위에 대한 자세한 내용은 BLOB 스토리지의 암호화 범위를 참조하십시오.

다음 표에서는 Azure Storage 암호화의 키 관리 옵션을 비교합니다.

키 관리 매개 변수 Microsoft 관리형 키 고객 관리형 키 고객 제공 키
암호화/암호 해독 작업 Azure Azure Azure
지원되는 Azure Storage 서비스 모두 Blob Storage, Azure Files1,2 Blob Storage
키 스토리지 Microsoft 키 저장소 Azure Key Vault 또는 Key Vault HSM 고객의 고유한 키 저장소
키 회전 책임 Microsoft 고객 고객
키 제어 Microsoft 고객 고객
키 범위 계정(기본값), 컨테이너 또는 Blob 계정(기본값), 컨테이너 또는 Blob 해당 없음

1 큐 스토리지에서 고객 관리형 키 사용을 지원하는 계정을 만드는 방법은 큐에 고객 관리형 키를 지원하는 계정 만들기를 참조하세요.
2 테이블 스토리지에서 고객 관리형 키 사용을 지원하는 계정을 만드는 방법은 테이블에 고객 관리형 키를 지원하는 계정 만들기를 참조하세요.

참고 항목

Microsoft 관리 키는 규정 준수 요구 사항에 따라 적절하게 회전됩니다. 특정 키 회전 요구 사항이 있는 경우 회전을 직접 관리하고 감사할 수 있도록 고객 관리형 키로 이동하는 것이 좋습니다.

인프라 암호화를 사용하여 데이터 이중 암호화

데이터가 안전하다는 높은 수준의 보증을 요구하는 고객은 Azure Storage 인프라 수준에서 256비트 AES 암호화를 사용할 수도 있습니다. 인프라 암호화를 사용하도록 설정하면 스토리지 계정의 데이터가 다른 암호화 알고리즘 2개와 다른 키 2개를 사용하여 두 번(서비스 수준에서 한 번, 인프라 수준에서 한 번) 암호화됩니다. Azure Storage 데이터의 이중 암호화는 암호화 알고리즘 또는 키 중 하나가 손상될 수 있는 시나리오로부터 보호합니다. 이 시나리오에서 추가 암호화 계층은 계속해서 데이터를 보호합니다.

서비스 수준 암호화는 Azure Key Vault에서 Microsoft 관리형 키나 고객 관리형 키 사용을 지원합니다. 인프라 수준 암호화는 Microsoft 관리형 키를 기반으로 하며 항상 별도의 키를 사용합니다.

인프라 암호화를 사용하는 스토리지 계정을 만드는 방법에 대한 자세한 내용은 데이터 이중 암호화에 사용되는 인프라 암호화로 스토리지 계정 만들기를 참조하세요.

Blob 및 큐에 대한 클라이언트 쪽 암호화

.NET, Java 및 Python용 Azure Blob Storage 클라이언트 라이브러리는 Azure Storage에 업로드하기 전에 클라이언트 애플리케이션 내부에서 데이터를 암호화하고 클라이언트로 다운로드하는 동안 데이터의 암호를 해독하도록 지원합니다. .NET 및 Python용 Queue Storage 클라이언트 라이브러리는 클라이언트 쪽 암호화도 지원합니다.

참고 항목

클라이언트 쪽 암호화 대신 Azure Storage에서 제공하는 서비스 쪽 암호화 기능을 사용하여 데이터를 보호하는 것이 좋습니다.

Blob Storage 및 Queue Storage 클라이언트 라이브러리는 AES를 사용하여 사용자 데이터를 암호화합니다. 클라이언트 라이브러리에는 두 가지 버전의 클라이언트 쪽 암호화를 사용할 수 있습니다.

  • 버전 2는 AES에서 GCM(Galois/Counter Mode) 모드를 사용합니다. Blob Storage 및 Queue Storage SDK는 v2를 사용한 클라이언트 쪽 암호화를 지원합니다.
  • 버전 1은 AES에서 CBC(암호화 블록 체인) 모드를 사용합니다. Blob Storage, Queue Storage 및 Table Storage SDK는 v1을 사용한 클라이언트 쪽 암호화를 지원합니다.

Warning

클라이언트 라이브러리의 CBC 모드 구현에 있는 보안 취약성으로 인해 클라이언트 쪽 암호화 v1은 사용하지 않는 것이 좋습니다. 이 보안 취약성에 대한 자세한 내용은 보안 취약성을 해결하기 위해 SDK에서 클라이언트 쪽 암호화를 업데이트하는 Azure Storage를 참조하세요. 현재 v1을 사용하는 경우 클라이언트 쪽 암호화 v2를 사용하도록 애플리케이션을 업데이트하고 데이터를 마이그레이션하는 것이 좋습니다.

Azure Table Storage SDK는 클라이언트 쪽 암호화 v1만 지원합니다. Table Storage에서 클라이언트 쪽 암호화를 사용하지 않는 것이 좋습니다.

다음 표에서는 클라이언트 쪽 암호화 버전을 지원하는 클라이언트 라이브러리를 보여 주고 클라이언트 쪽 암호화 v2로 마이그레이션하기 위한 지침을 제공합니다.

클라이언트 라이브러리 지원되는 클라이언트 쪽 암호화 버전 권장 마이그레이션 추가 지침
.NET(버전 12.13.0 이상), Java(버전 12.18.0 이상) 및 Python(버전 12.13.0 이상)용 Blob Storage 클라이언트 라이브러리 2.0

1.0(이전 버전과의 호환성 전용)
클라이언트 쪽 암호화 v2를 사용하도록 코드를 업데이트합니다.

암호화된 데이터를 다운로드하여 암호를 해독한 다음, 클라이언트 쪽 암호화 v2로 다시 암호화합니다.
Blob에 대한 클라이언트 쪽 암호화
.NET(버전 12.12.0 이하), Java(버전 12.17.0 이하) 및 Python(버전 12.12.0 이하)용 Blob Storage 클라이언트 라이브러리 1.0(권장되지 않음) 클라이언트 쪽 암호화 v2를 지원하는 Blob Storage SDK 버전을 사용하도록 애플리케이션을 업데이트합니다. 자세한 내용은 클라이언트 쪽 암호화에 대한 SDK 지원 매트릭스를 참조하세요.

클라이언트 쪽 암호화 v2를 사용하도록 코드를 업데이트합니다.

암호화된 데이터를 다운로드하여 암호를 해독한 다음, 클라이언트 쪽 암호화 v2로 다시 암호화합니다.
Blob에 대한 클라이언트 쪽 암호화
.NET(버전 12.11.0 이상) 및 Python(버전 12.4 이상)용 Queue Storage 클라이언트 라이브러리 2.0

1.0(이전 버전과의 호환성 전용)
클라이언트 쪽 암호화 v2를 사용하도록 코드를 업데이트합니다. 큐에 대한 클라이언트 쪽 암호화
.NET(버전 12.10.0 이하) 및 Python(버전 12.3.0 이하)용 Queue Storage 클라이언트 라이브러리 1.0(권장되지 않음) 클라이언트 쪽 암호화 v2를 지원하는 Queue Storage SDK 버전을 사용하도록 애플리케이션을 업데이트합니다. 클라이언트 쪽 암호화에 대한 SDK 지원 매트릭스를 참조하세요.

클라이언트 쪽 암호화 v2를 사용하도록 코드를 업데이트합니다.
큐에 대한 클라이언트 쪽 암호화
.NET, Java 및 Python용 Table Storage 클라이언트 라이브러리 1.0(권장되지 않음) 사용할 수 없음. 해당 없음

다음 단계