Always Encrypted를 위한 키 관리 개요

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

상시 암호화 는 사용자 데이터를 암호화하는 키와 데이터를 암호화하는 키를 암호화하는 다른 키 등 두 가지 유형의 암호화 키를 사용하여 데이터를 보호합니다. 열 암호화 키는 데이터를 암호화하고 열 마스터 키는 열 암호화 키를 암호화합니다. 이 문서에서는 이러한 암호화 키를 관리하기 위한 자세한 개요를 제공합니다.

Always Encrypted 키 및 키 관리에 대해 논의할 때는 실제 암호화 키와 키를 설명하는 메타데이터 개체 간의 차이점을 이해하는 것이 중요합니다. 열 암호화 키와 열 마스터 키를 사용하여 실제 암호화 키를 참조하고, 열 암호화 키 메타데이터열 마스터 키 메타데이터를 사용하여 데이터베이스의 Always Encrypted 키 설명을 참조합니다.

  • 열 암호화 키 는 데이터를 암호화하는 데 사용되는 콘텐츠 암호화 키입니다. 이름에서 알 수 있듯이 열 암호화 키를 사용하여 데이터베이스 열의 데이터를 암호화합니다. 동일한 열 암호화 키를 사용하여 하나 이상의 열을 암호화하거나 애플리케이션 요구 사항에 따라 여러 열 암호화 키를 사용할 수 있습니다. 열 암호화 키 자체가 암호화되며, 열 암호화 키의 암호화된 값만 열 암호화 키 메타데이터의 일부로 데이터베이스에 저장됩니다. 열 암호화 키 메타데이터는 sys.column_encryption_keys(Transact-SQL)sys.column_encryption_key_values(Transact-SQL) 카탈로그 뷰에 저장됩니다. AES-256 알고리즘에 사용되는 열 암호화 키는 256비트 길이입니다.

  • 열 마스터 키 는 열 암호화 키를 암호화하는 데 사용되는 키 보호 키입니다. 열 마스터 키는 Windows 인증서 저장소, Azure Key Vault 또는 하드웨어 보안 모듈과 같은 신뢰할 수 있는 키 저장소에 저장되어야 합니다. 데이터베이스에는 열 마스터 키(키 저장소 및 위치의 형식)에 대한 메타데이터만 포함됩니다. 열 마스터 키 메타데이터는 sys.column_master_keys(Transact-SQL) 카탈로그 뷰에 저장됩니다.

데이터베이스 시스템의 키 메타데이터에는 일반 텍스트 열 마스터 키 또는 일반 텍스트 열 암호화 키가 포함되어 있지 않습니다. 데이터베이스에는 열 마스터 키의 형식 및 위치와 열 암호화 키의 암호화된 값에 대한 정보만 포함됩니다. 즉, 데이터베이스 시스템이 손상되더라도 Always Encrypted를 사용하여 보호되는 데이터가 안전하게 보호되도록 일반 텍스트 키가 데이터베이스 시스템에 노출되지 않습니다. 데이터베이스 시스템이 일반 텍스트 키에 액세스할 수 없도록 하려면 데이터베이스를 호스팅하는 컴퓨터와 다른 컴퓨터에서 키 관리 도구를 실행해야 합니다. 자세한 내용은 아래의 키 관리 보안 고려 사항 섹션을 검토하세요.

데이터베이스는 암호화된 데이터(Always Encrypted로 보호된 열)만 포함하며 일반 텍스트 키에 액세스할 수 없으므로 데이터의 암호를 해독할 수 없습니다. 즉, Always Encrypted 열을 쿼리하면 암호화된 값만 반환되므로 보호된 데이터를 암호화하거나 암호 해독해야 하는 클라이언트 애플리케이션은 열 마스터 키 및 관련 열 암호화 키에 액세스할 수 있어야 합니다. 자세한 내용은 Always Encrypted를 사용하여 애플리케이션 개발을 참조하세요.

키 관리 작업

키 관리 프로세스는 다음과 같은 개략적인 작업으로 나눌 수 있습니다.

  • 키 프로비전 - 신뢰할 수 있는 키 저장소(예: Windows 인증서 저장소, Azure Key Vault 또는 하드웨어 보안 모듈)에서 물리적 키 만들기, 열 마스터 키로 열 암호화 키 암호화, 데이터베이스의 두 키 유형에 대한 메타데이터 만들기.

  • 키 순환 - 정기적으로 기존 키를 새 키로 교체 키가 손상된 경우 또는 암호화 키를 순환해야 하는 조직의 정책 또는 규정 준수 규정을 준수하기 위해 키를 회전해야 할 수 있습니다.

키 관리 역할

상시 암호화 키를 관리하는 두 가지 사용자 역할이 있으며, 보안 관리자와 DBA(데이터베이스 관리자)입니다.

  • 보안 관리자 - 열 암호화 키 및 열 마스터 키를 생성하고 열 마스터 키를 포함하는 키 저장소를 관리합니다. 이러한 작업을 수행하려면 보안 관리자가 키와 키 저장소에 액세스할 수 있어야 하지만 데이터베이스에 액세스할 필요는 없습니다.
  • DBA - 데이터베이스의 키에 대한 메타데이터를 관리합니다. 키 관리 작업을 수행하려면 DBA가 데이터베이스에서 키 메타데이터를 관리할 수 있어야 하지만 열 마스터 키를 보유하는 키 또는 키 저장소에 액세스할 필요는 없습니다.

위의 역할을 고려할 때 Always Encrypted에 대한 키 관리 작업을 수행하는 방법에는 두 가지가 있습니다. 역할 분리 및 역할 분리가 없는 경우 조직의 필요에 따라 요구 사항에 가장 적합한 키 관리 프로세스를 선택할 수 있습니다.

역할 분리를 사용하여 키 관리

Always Encrypted 키를 역할 분리로 관리하는 경우 조직의 다른 사용자가 보안 관리자 및 DBA 역할을 가정합니다. 역할 분리를 사용하는 키 관리 프로세스를 통해 DBA는 실제 키를 보유하는 키 또는 키 저장소에 액세스할 수 없으며 보안 관리자는 중요한 데이터가 포함된 데이터베이스에 액세스할 수 없습니다. 조직의 DBA가 중요한 데이터에 액세스할 수 없도록 하는 것이 목표인 경우 역할 분리를 사용하여 키를 관리하는 것이 좋습니다.

참고: 보안 관리자는 일반 텍스트 키를 생성하고 사용하므로 데이터베이스 시스템을 호스팅하는 동일한 컴퓨터 또는 DBA 또는 잠재적인 악의적 사용자가 액세스할 수 있는 컴퓨터에서 작업을 수행해서는 안 됩니다.

역할 분리 없이 키 관리

상시 암호화 키를 역할 분리 없이 관리하는 경우 한 사람이 보안 관리자 및 DBA 역할을 모두 가정할 수 있습니다. 이는 해당 사용자가 키/키 저장소와 키 메타데이터 모두에 액세스하고 관리할 수 있어야 함을 의미합니다. 역할 구분을 사용하지 않는 키 관리는 DevOps 모델을 사용하는 조직이나 데이터베이스가 클라우드에서 호스트되고 클라우드 관리자(온-프레미스 DBA 아님)가 중요한 데이터에 액세스할 수 없도록 제한하는 것이 주요 목표인 경우에 권장됩니다.

Always Encrypted 키를 관리하기 위한 도구

Always Encrypted 키는 SSMS(SQL Server Management Studio)PowerShell을 사용하여 관리할 수 있습니다.

키 관리에 대한 보안 고려 사항

Always Encrypted의 기본 목표는 데이터베이스 시스템 또는 해당 호스팅 환경이 손상되더라도 데이터베이스에 저장된 중요한 데이터를 안전하게 보호하는 것입니다. Always Encrypted가 중요한 데이터 유출을 방지하는 데 도움이 될 수 있는 보안 공격의 예는 다음과 같습니다.

  • 중요한 데이터 열을 쿼리하는 DBA와 같은 악의적인 높은 권한의 데이터베이스 사용자입니다.
  • SQL Server 인스턴스를 호스팅하거나, SQL Server 프로세스의 메모리를 검색하거나, SQL Server 프로세스 덤프 파일을 호스트하는 컴퓨터의 악의적인 관리자입니다.
  • 고객 데이터베이스를 쿼리하거나, SQL Server 덤프 파일을 검사하거나, 클라우드에서 고객 데이터를 호스팅하는 컴퓨터의 메모리를 검사하는 악의적인 데이터 센터 운영자입니다.
  • 데이터베이스를 호스트하는 컴퓨터에서 실행되는 맬웨어

Always Encrypted가 이러한 유형의 공격을 방지하는 데 효과적인지 확인하려면 키 관리 프로세스에서 열 마스터 키 및 열 암호화 키와 열 마스터 키가 포함된 키 저장소에 대한 자격 증명이 잠재적 공격자에게 표시되지 않도록 해야 합니다. 다음 몇 가지 지침을 따라야 합니다.

  • 데이터베이스를 호스팅하는 컴퓨터에서 열 마스터 키 또는 열 암호화 키를 생성하지 마세요. 대신, 키 관리에만 사용되거나 키에 액세스해야 하는 애플리케이션을 호스트하는 컴퓨터인 별도 컴퓨터에서 키를 생성합니다. 즉 , 공격자가 Always Encrypted 키를 프로비전하거나 유지 관리하는 데 사용되는 컴퓨터에 액세스하는 경우 키가 도구의 메모리에 짧은 시간 동안만 표시되더라도 공격자가 키를 가져올 수 있기 때문에 데이터베이스 를 호스트하는 컴퓨터에서 키를 생성하는 데 사용되는 도구를 실행해서는 안 됩니다.
  • 키 관리 프로세스에서 실수로 열 마스터 키 또는 열 암호화 키를 표시하지 않도록 하려면 키 관리 프로세스를 정의하고 구현하기 전에 잠재적인 악의적 사용자 및 보안 위협을 식별하는 것이 중요합니다. 예를 들어 DBA가 중요한 데이터에 액세스할 수 없도록 하는 것이 목표인 경우 DBA는 키 생성을 담당할 수 없습니다. 그러나 DBA는 메타데이터에 일반 텍스트 키가 포함되어 있지 않으므로 데이터베이스의 키 메타데이터를 관리할 수 있습니다 .

다음 단계