상시 암호화를 위한 키 관리 개요Overview of Key Management for Always Encrypted

이 항목은 다음에 적용됩니다. 예SQL Server(2016부터)예Azure SQL Database아니요Azure SQL Data Warehouse아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO: yesSQL Server (starting with 2016)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

상시 암호화는 사용자 데이터를 암호화하는 키와 데이터를 암호화하는 키를 암호화하는 다른 키 등 두 가지 유형의 암호화 키를 사용하여 데이터를 보호합니다.Always Encrypted uses two types of cryptographic keys to protect your data - one key to encrypt your data, and another key to encrypt the key that encrypts your data. 열 암호화 키는 사용자 데이터를 암호화하고, 열 마스터 키는 열 암호화 키를 암호화합니다.The column encryption key encrypts your data, the column master key encrypts the column encryption key. 이 문서에서는 이러한 암호화 키 관리의 개요를 자세히 설명합니다.This article provides a detailed overview for managing these encryption keys.

상시 암호화 키와 키 관리를 설명할 때는 실제 암호화 키와 키를 설명 하는 메타데이터 개체 간의 차이를 이해하는 것이 중요합니다.When discussing Always Encrypted keys and key management it is important to understand the distinction between the actual cryptographic keys, and the metadata objects that describe the keys. 열 암호화 키열 마스터 키 라는 용어는 실제 암호화 키를 가리키고, 열 암호화 키 메타데이터열 마스터 키 메타데이터 라는 용어는 데이터베이스의 상시 암호화 키 설명 을 가리킵니다.We use the terms column encryption key and column master key to refer to the actual cryptographic keys, and we use column encryption key metadata and column master key metadata to refer to the Always Encrypted key descriptions in the database.

  • 열 암호화 키 는 데이터를 암호화하는 데 사용되는 콘텐츠 암호화 키입니다.Column encryption keys are content-encryption keys used to encrypt data. 이름에서 알 수 있듯이 열 암호화 키를 사용하여 데이터베이스 열의 데이터를 암호화합니다.As the name implies, you use column encryption keys to encrypt data in database columns. 동일한 열 암호화 키를 사용하여 하나 이상의 열을 암호화하거나, 응용 프로그램 요구 사항에 따라 여러 개의 열 암호화 키를 사용할 수 있습니다.You can encrypt 1 or more columns with the same column encryption key, or you can use multiple column encryption keys depending on your application requirements. 열 암호화 키 자체가 암호화되며, 열 암호화 키의 암호화된 값만 열 암호화 키 메타데이터의 일부로 데이터베이스에 저장됩니다.The column encryption keys are themselves encrypted, and only the encrypted values of the column encryption keys are stored in the database (as part of the column encryption key metadata). 열 암호화 키 메타데이터는 sys.column_encryption_keys(TRANSACT-SQL)sys.column_encryption_key_values(TRANSACT-SQL) 카탈로그 뷰에 저장됩니다.The column encryption key metadata is stored in the sys.column_encryption_keys (Transact-SQL) and sys.column_encryption_key_values (Transact-SQL) catalog views. AES-256 알고리즘에서 사용되는 열 암호화 키는 256비트입니다.Column encryption keys used with the AES-256 algorithm are 256-bit long.

  • 열 마스터 키 는 열 암호화 키를 암호화하는 데 사용되는 키를 보호하는 키입니다.Column master keys are key-protecting keys used to encrypt column encryption keys. 열 마스터 키는 Windows 인증서 저장소, Azure 주요 자격 증명 모음, 하드웨어 보안 모듈 등의 신뢰할 수 있는 키 저장소에 저장해야 합니다.Column master keys must be stored in a trusted key store, such as Windows Certificate Store, Azure Key Vault, or a hardware security module. 데이터베이스에는 열 마스터 키에 대한 메타데이터(키 저장소 유형 및 위치)만 포함됩니다.The database only contains metadata about column master keys (the type of key store and location). 열 마스터 키 메타데이터는 sys.column_master_keys(TRANSACT-SQL) 카탈로그 뷰에 저장됩니다.The column master key metadata is stored in the sys.column_master_keys (Transact-SQL) catalog view.

데이터베이스 시스템의 키 메타데이터에는 일반 텍스트 열 마스터 키 또는 일반 텍스트 열 암호화 키가 포함되지 않습니다.It is important to note that the key metadata in the database system does not contain plaintext column master keys or plaintext column encryption keys. 데이터베이스에는 열 마스터 키의 유형 및 위치와 열 암호화 키의 암호화된 값에 대한 정보만 포함됩니다.The database only contains information about the type and location of column master keys, and encrypted values of column encryption keys. 즉, 데이터베이스 시스템이 손상된 경우에도 상시 암호화를 사용하여 보호된 데이터가 안전하도록 일반 텍스트 키는 데이터베이스 시스템에 노출되지 않습니다.This means that plaintext keys are never exposed to the database system ensuring that data protected using Always Encrypted is safe, even if the database system gets compromised. 데이터베이스 시스템이 일반 텍스트 키에 액세스할 수 없게 하려면 데이터베이스를 호스트하는 컴퓨터 이외의 다른 컴퓨터에서 키 관리 도구를 실행해야 합니다. 자세한 내용은 아래 키 관리에 대한 보안 고려 사항 섹션을 참조하세요.To ensure the database system cannot gain access to the plaintext keys, be sure to run your key management tools on a different machine than the one hosting your database - review the Security Considerations for Key Management section below for details.

데이터베이스에는 암호화된 데이터(상시 암호화로 보호된 열)만 포함되며 일반 텍스트 키에 액세스할 수 없으므로 데이터 암호를 해독할 수 없습니다.Because the database only contains encrypted data (in Always Encrypted protected columns), and cannot access the plaintext keys, it cannot decrypt the data. 즉, 상시 암호화 열을 쿼리하면 암호화된 값만 반환되므로 보호된 데이터를 암호화하거나 암호를 해독해야 하는 클라이언트 응용 프로그램이 열 마스터 키 및 관련된 열 암호화 키에 액세스할 수 있어야 합니다.This means that querying Always Encrypted columns will simply return encrypted values, so client applications that need to encrypt or decrypt protected data must be able to access the column master key, and related column encryption keys. 자세한 내용은 상시 암호화(클라이언트 개발)를 참조하세요.For details, see Always Encrypted (client development).

키 관리 태스크Key Management Tasks

키 관리 프로세스는 다음과 같은 상위 수준 태스크로 나누어질 수 있습니다.The process of managing keys can be divided into the following high-level tasks:

  • 키 프로비저닝 - 신뢰할 수 있는 키 저장소(예: Windows 인증서 저장소, Azure 주요 자격 증명 모음 또는 하드웨어 보안 모듈)에 물리적 키 만들기, 열 마스터 키를 사용하여 열 암호화 키 암호화, 데이터베이스에 두 가지 유형의 키에 대한 메타데이터 만들기Key provisioning - Creating the physical keys in a trusted key store (for example, in the Windows Certificate Store, Azure Key Vault, or a hardware security module), encrypting column encryption keys with column master keys, and creating metadata for both types of keys in the database.

  • 키 순환 - 정기적으로 기존 키를 새 키로 교체Key rotation - Periodically replacing an existing key with a new key. 키가 손상된 경우 또는 암호화 키를 순환하도록 요구하는 조직의 정책이나 규정 준수 규칙을 준수하기 위해 키를 순환해야 할 수 있습니다.You may need to rotate a key if the key has been compromised, or in order to comply with your organization’s policies or compliance regulations that mandate cryptographic keys must be rotated.

키 관리 역할 Key Management Roles

상시 암호화 키를 관리하는 두 가지 사용자 역할이 있으며, 보안 관리자와 DBA(데이터베이스 관리자)입니다.There are two distinct roles of users who manage Always Encrypted keys; Security Administrators and Database Administrators (DBAs):

  • 보안 관리자 - 열 암호화 키와 열 마스터 키를 생성하고 열 마스터 키를 포함하는 키 저장소를 관리합니다.Security Administrator - generates column encryption keys and column master keys and manages key stores containing the column master keys. 이러한 태스크를 수행하려면 보안 관리자가 키와 키 저장소에 액세스할 수 있어야 하지만 데이터베이스에 액세스할 필요는 없습니다.To perform these tasks, a Security Administrator needs to be able to access the keys and the key store, but does not need access to the database.
  • DBA – 데이터베이스의 키 메타데이터를 관리합니다.DBA – manages metadata about the keys in the database. 키 관리 태스크를 수행하려면 DBA가 데이터베이스의 키 메타데이터를 관리할 수 있어야 하지만 키 또는 열 마스터 키를 포함하는 키 저장소에 액세스할 필요는 없습니다.To perform key management tasks, a DBA needs to be able to manage key metadata in the database, but does not need access to the keys or the key store holding the column master keys.

위의 역할을 고려할 경우 상시 암호화를 위한 키 관리 태스크를 수행하는 두 가지 방법이 있으며, 역할 구분 사용역할 구분 사용 안 함입니다.Considering the above roles, there are two different ways to perform key management tasks for Always Encrypted; with role separation, and without role separation. 조직의 필요에 따라 요구 사항에 가장 적합한 키 관리 프로세스를 선택할 수 있습니다.Depending on the needs of your organization you can select the key management process that best suits your requirements.

역할 구분을 사용하여 키 관리Managing Keys with Role Separation

상시 암호화 키가 역할 구분을 사용하여 관리되는 경우 조직 내의 서로 다른 사용자가 보안 관리자 및 DBA 역할을 맡습니다.When Always Encrypted keys are managed with role separation, different people in an organization assume the Security Administrator and DBA roles. 역할 구분을 사용하는 키 관리 프로세스에서는 DBA가 키 또는 실제 키를 포함하는 키 저장소에 액세스할 수 없고, 보안 관리자가 중요한 데이터를 포함하는 데이터베이스에 액세스할 수 없습니다.A key management process with role separation ensures DBAs have no access to the keys or key stores holding the actual keys, and Security Administrators have no access to the database containing sensitive data. 역할 구분을 사용하는 키 관리는 조직의 DBA가 중요한 데이터에 액세스할 수 없도록 하려는 경우에 권장됩니다.Managing keys with role separation is recommended if your goal is to ensure DBAs in your organization cannot access sensitive data.

참고: 보안 관리자는 일반 텍스트 키를 생성하고 사용하므로 데이터베이스 시스템을 호스트하는 컴퓨터나 DBA 또는 악의적 사용자가 될 수 있는 다른 사용자가 액세스할 수 있는 컴퓨터에서 해당 태스크를 수행하면 안 됩니다.Note: Security Administrators generate and work with the plaintext keys, so they should never perform their tasks on the same computers hosting a database system, or computers that can be accessed by DBAs or anyone else who might be potential adversaries.

역할 구분을 사용하지 않고 키 관리Managing Keys without Role Separation

상시 암호화 키가 역할 구분을 사용하지 않고 관리되는 경우 한 사람이 보안 관리자 및 DBA 역할을 모두 맡을 수 있으므로 해당 사용자가 키/키 저장소와 키 메타데이터를 둘 다 액세스하고 관리할 수 있어야 합니다.When Always Encrypted keys are managed without role separation, a single person can assume both Security Administrator and DBA roles, which implies that person needs to be able to access and manage both the keys/key stores and the key metadata. 역할 구분을 사용하지 않는 키 관리는 DevOps 모델을 사용하는 조직이나 데이터베이스가 클라우드에서 호스트되고 클라우드 관리자(온-프레미스 DBA 아님)가 중요한 데이터에 액세스할 수 없도록 제한하는 것이 주요 목표인 경우에 권장됩니다.Managing keys without role separation can be recommended for organizations using the DevOps model, or if the database is hosted in the cloud and the primary goal is to restrict cloud administrators (but not on-premises DBAs), from accessing sensitive data.

상시 암호화 키 관리 도구Tools for Managing Always Encrypted Keys

상시 암호화 키는 SSMS(SQL Server Management Studio)PowerShell을 사용하여 관리할 수 있습니다.Always Encrypted keys can be managed using SQL Server Management Studio (SSMS) and PowerShell:

키 관리에 대한 보안 고려 사항 Security Considerations for Key Management

상시 암호화의 주요 목표는 데이터베이스 시스템 또는 해당 호스팅 환경이 손상된 경우에도 데이터베이스에 저장된 중요한 데이터를 안전하게 보호하는 것입니다.The primary objective of Always Encrypted is to ensure sensitive data stored in a database is safe, even if the database system or its hosting environment gets compromised. 상시 암호화가 중요한 데이터 누출 방지에 도움이 되는 보안 공격의 예는 다음과 같습니다.Examples of security attacks where Always Encrypted can help prevent sensitive data leaks include:

  • DBA와 같은 높은 권한을 가진 악의적인 데이터베이스 사용자가 중요한 데이터 열을 쿼리하는 경우A malicious high-privilege database user, such as a DBA, querying sensitive data columns.
  • SQL Server 인스턴스를 호스트하는 컴퓨터의 악의적인 관리자가 메모리에서 SQL Server 프로세스 또는 SQL Server 프로세스 덤프 파일을 검색하는 경우A rogue administrator of a computer hosting a SQL Server instance, scanning memory of a SQL Server process, or SQL Server process dump files.
  • 악의적인 데이터 센터 운영자가 고객 데이터베이스를 쿼리하거나 SQL Server 덤프 파일을 검사하거나 클라우드에서 고객 데이터를 호스트하는 컴퓨터의 메모리를 검사하는 경우A malicious data center operator querying a customer database, examining SQL Server dump files, or examining the memory of a computer hosting customer data in the cloud.
  • 데이터베이스를 호스트하는 컴퓨터에서 실행되는 맬웨어Malware running on a computer hosting the database.

상시 암호화가 이러한 유형의 공격을 효과적으로 방지하려면 키 관리 프로세스에서 열 마스터 키와 열 암호화 키는 물론 열 마스터 키를 포함하는 키 저장소에 대한 자격 증명이 잠재적인 공격자에게 노출되지 않도록 해야 합니다.To ensure Always Encrypted is effective in preventing these types of attacks, your key management process must ensure the column master keys and column encryption keys, as well as credentials to a key store containing the column master keys, are never revealed to a potential attacker. 다음 몇 가지 지침을 따라야 합니다.Here are a few guidelines, you should follow:

  • 데이터베이스를 호스트하는 컴퓨터에서 열 마스터 키 또는 열 암호화 키를 생성하지 않습니다.Never generate column master keys or column encryption keys on a computer hosting your database. 대신, 키 관리에만 사용되거나 키에 액세스해야 하는 응용 프로그램을 호스트하는 컴퓨터인 별도 컴퓨터에서 키를 생성합니다.Instead generate the keys on a separate computer, which is either dedicated for key management, or is a machine hosting applications that will need access to the keys anyway. 즉, 상시 암호화 키를 프로비전하거나 유지 관리하는 데 사용되는 컴퓨터에 공격자가 액세스할 경우 키가 짧은 시간 동안만 도구의 메모리에 표시되는 경우에도 키를 얻을 수 있기 때문에 데이터베이스를 호스트하는 컴퓨터에서 키를 생성하는 데 사용되는 도구를 실행하면 안 됩니다 .This means that you should never run tools used to generate the keys on the computer hosting your database because if an attacker accesses a computer used to provision or maintain your Always Encrypted keys, the attacker can potentially get your keys, even if the keys only appear in the tool’s memory for a short time.
  • 키 관리 프로세스에서 열 마스터 키 또는 열 암호화 키가 실수로 공개되지 않도록 하려면 키 관리 프로세스를 정의 및 구현하기 전에 잠재적인 악의적 사용자와 보안 위협을 확인하는 것이 중요합니다.To ensure your key management process does not inadvertently reveal column master keys or column encryption keys, it is critical to identify potential adversaries and security threats before defining and implementing a key management process. 예를 들어 DBA가 중요한 데이터에 액세스할 수 없게 하려는 경우 DBA는 키 생성을 담당할 수 없습니다.For example, if your goal is to ensure DBAs have no access to sensitive data, then a DBA cannot be responsible for generating the keys. 그러나 메타데이터에는 일반 텍스트 키가 포함되지 않으므로 DBA가 데이터베이스의 키 메타데이터를 관리할 수 있습니다 .A DBA, however, can manage key metadata in the database, as the metadata does not contain the plaintext keys.

다음 단계Next Steps

추가 리소스Additional Resources