보안 Enclave를 사용한 Always EncryptedAlways Encrypted with secure enclaves

적용 대상:Applies to:예SQL Server 2019 (15.x)SQL Server 2019 (15.x)yesSQL Server 2019 (15.x)SQL Server 2019 (15.x)-Windows만적용 대상:Applies to: 예SQL Server 2019 (15.x)SQL Server 2019 (15.x)yesSQL Server 2019 (15.x)SQL Server 2019 (15.x) - Windows only

보안 Enclave를 사용한 Always Encrypted는 Always Encrypted 기능에 추가 기능을 제공합니다.Always Encrypted with secure enclaves provides additional functionality to the Always Encrypted feature.

SQL Server 2016에 도입된, Always Encrypted는 맬웨어 및 높은 권한이 있는 SQL Server 무단 사용자로부터 중요한 데이터의 기밀을 보호합니다.Introduced in SQL Server 2016, Always Encrypted protects the confidentiality of sensitive data from malware and high-privileged unauthorized users of SQL Server. 높은 권한이 있는 무단 사용자는 DBA, 컴퓨터 관리자, 클라우드 관리자 또는 서버 인스턴스에 대해 합법적인 액세스 권한이 있지만 실제 데이터의 일부 또는 전체에 대해 액세스 권한이 없는 사람입니다.High-privileged unauthorized users are DBAs, computer admins, cloud admins, or anyone else who has legitimate access to server instances, hardware, etc., but who should not have access to some or all of the actual data.

이 문서에 설명된 향상된 기능을 사용하지 않는 Always Encrypted는 클라이언트 쪽에서 데이터를 암호화하여 데이터 또는 해당 암호화 키가 SQL Server 엔진 내에서 일반 텍스트로 표시되지 않도록 함으로써 데이터를 보호합니다.Without the enhancements discussed in this article, Always Encrypted protects the data by encrypting it on the client side and never allowing the data or the corresponding cryptographic keys to appear in plaintext inside the SQL Server Engine. 따라서 데이터베이스 내에 있는 암호화된 열에 대한 기능이 심각하게 제한됩니다.As a result, the functionality on encrypted columns inside the database is severely restricted. SQL Server가 암호화된 데이터에 관해 수행할 수 있는 유일한 작업은 같음 비교입니다(결정적 암호화에서만 사용할 수 있음).The only operations SQL Server can perform on encrypted data are equality comparisons (only available with deterministic encryption). 암호화 작업(초기 데이터 암호화 또는 키 회전), 리치 계산(예: 패턴 일치) 등 다른 모든 작업은 데이터베이스 내에서 지원되지 않습니다.All other operations, including cryptographic operations (initial data encryption or key rotation) and or rich computations (for example, pattern matching) are not supported inside the database. 사용자가 클라이언트 쪽에서 해당 작업을 수행하려면 데이터베이스 외부로 데이터를 이동해야 합니다.Users need to move their data outside of the database to perform these operations on the client-side.

보안 Enclave를 사용한 Always Encrypted는 서버 쪽의 보안 Enclave 내에서 일반 텍스트 데이터에 대한 계산을 허용하여 이러한 제한을 해결합니다.Always Encrypted with secure enclaves addresses these limitations by allowing computations on plaintext data inside a secure enclave on the server side. 보안 Enclave는 SQL Server 프로세스 내의 보호된 메모리 영역으로, SQL Server 엔진 내에서 중요한 데이터를 처리하기 위한 신뢰할 수 있는 실행 환경으로 사용됩니다.A secure enclave is a protected region of memory within the SQL Server process, and acts as a trusted execution environment for processing sensitive data inside the SQL Server engine. 보안 Enclave는 SQL Server의 나머지 부분 및 호스팅 컴퓨터의 다른 프로세스에서 불투명 상자로 표시됩니다.A secure enclave appears as a opaque box to the rest of the SQL Server and other processes on the hosting machine. 디버거를 사용하더라도 외부에서 Enclave 내의 데이터나 코드를 볼 수 없습니다.There is no way to view any data or code inside the enclave from the outside, even with a debugger.

Always Encrypted는 다음 다이어그램에 설명된 것처럼 보안 Enclave를 사용합니다.Always Encrypted uses secure enclaves as illustrated in the following diagram:

데이터 흐름

애플리케이션의 쿼리를 구문 분석할 때 SQL Server 엔진은 쿼리가 보안 Enclave를 사용해야 하는 암호화된 데이터에 대한 작업을 포함하는지 확인합니다.When parsing an application's query, the SQL Server Engine determines if the query contains any operations on encrypted data that require the use of the secure enclave. 보안 Enclave를 액세스해야 하는 쿼리:For queries where the secure enclave needs to be accessed:

  • 클라이언트 드라이버는 작업에 필요한 열 암호화 키를 보안 채널을 통해 보안 Enclave로 보냅니다.The client driver sends the column encryption keys required for the operations to the secure enclave (over a secure channel).
  • 그러면 클라이언트 드라이버는 암호화된 쿼리 매개 변수와 함께 실행할 쿼리를 제출합니다.Then, the client driver submits the query for execution along with the encrypted query parameters.

쿼리 처리 동안, 데이터 또는 열 암호화 키는 보안 Enclave 외부의 SQL Server 엔진에서 일반 텍스트로 노출되지 않습니다.During query processing, the data or the column encryption keys are not exposed in plaintext in the SQL Server Engine outside of the secure enclave. SQL Server 엔진은 암호화된 열의 암호화 작업 및 계산을 보안 enclave에 위임합니다.The SQL Server Engine delegates cryptographic operations and computations on encrypted columns to the secure enclave. 필요한 경우, 보안 Enclave는 암호화된 열에 저장된 쿼리 매개 변수 및/또는 데이터의 암호를 해독하고 요청된 작업을 수행합니다.If needed, the secure enclave decrypts the query parameters and/or the data stored in encrypted columns and performs the requested operations.

SQL Server 2019 (15.x)SQL Server 2019 (15.x)에서 보안 Enclave를 사용한 Always Encrypted는 Windows의 VBS(가상화 기반 보안) 보안 메모리 Enclave(가상 보안 모드 또는 VSM Enclave라고도 함)를 사용합니다.In SQL Server 2019 (15.x)SQL Server 2019 (15.x), Always Encrypted with secure enclaves uses Virtualization-based Security (VBS) secure memory enclaves (also known as Virtual Secure Mode, or VSM enclaves) in Windows.

보안 Enclave를 사용한 Always Encrypted를 사용하는 이유는 무엇일까요?Why use Always Encrypted with secure enclaves?

보안 Enclaves를 사용하면 Always Encrypted는 다음과 같은 이점을 제공하면서 중요한 데이터의 기밀성을 보호합니다.With secure enclaves, Always Encrypted protects the confidentiality of sensitive data while providing the following benefits:

  • 바로 암호화 – 중요한 데이터에 대한 암호화 작업(예: 초기 데이터 암호화 또는 열 암호화 키 순환)은 보안 Enclave 내에서 수행되며 데이터베이스 외부로 데이터를 이동할 필요가 없습니다.In-place encryption - cryptographic operations on sensitive data, for example: initial data encryption or rotating a column encryption key, are performed inside the secure enclave and do not require moving the data outside of the database. ALTER TABLE Transact-SQL 문을 사용하여 바로 암호화를 실행할 수 있으며, SSMS의 Always Encrypted 마법사 또는 Set-SqlColumnEncryption PowerShell cmdlet과 같은 도구를 사용할 필요가 없습니다.You can issue in-place encryption using the ALTER TABLE Transact-SQL statement, and you do not need to use tools, such as the Always Encrypted wizard in SSMS or the Set-SqlColumnEncryption PowerShell cmdlet.

  • 리치 계산 – 패턴 일치(LIKE 조건자) 및 범위 비교를 비롯하여 암호화된 열에 대해 수행되는 작업은 보안 Enclave 내에서 지원됩니다. 이 경우 데이터베이스 시스템 내에서 이러한 계산을 수행하도록 요구하는 광범위한 애플리케이션 및 시나리오가 Always Encrypted에서 지원됩니다.Rich computations - operations on encrypted columns, including pattern matching (the LIKE predicate) and range comparisons, are supported inside the secure enclave, which unlocks Always Encrypted to a broad range of applications and scenarios that require such computations to be performed inside the database system.

보안 Enclave 증명Secure Enclave Attestation

SQL Server 엔진 내의 보안 Enclave는 암호화된 데이터베이스 열에 저장된 중요한 데이터와 일반 텍스트로 나타낸 해당 열 암호화 키에 액세스할 수 있습니다.The secure enclave inside the SQL Server Engine can access sensitive data stored in encrypted database columns and the corresponding column encryption keys in plaintext. Enclave 계산을 포함하는 쿼리를 SQL Server로 제출하기 전에, 애플리케이션 내의 클라이언트 드라이버는 지정된 기술(예: VBS)에 따라 보안 Enclave가 정품 Enclave인지 확인하고, Enclave 내에서 실행되는 코드가 Enclave 내에서 실행될 수 있게 서명되었는지 확인해야 합니다.Before submitting a query that involves enclave computations to SQL Server, the client driver inside the application must verify the secure enclave is a genuine enclave based on a given technology (for example, VBS) and the code running inside the enclave has been signed for running inside the enclave.

Enclave를 확인하는 프로세스를 Enclave 증명이라고 하며, 애플리케이션 내의 클라이언트 드라이버와 SQL Server가 둘 다 외부 증명 서비스에 연결합니다.The process of verifying the enclave is called enclave attestation, and it involves both a client driver within the application and SQL Server contacting an external attestation service. 증명 프로세스의 사양은 Enclave 기술과 증명 서비스에 따라 좌우됩니다.The specifics of the attestation process depend on the enclave technology and the attestation service.

SQL Server 2019 (15.x)SQL Server 2019 (15.x)에서 SQL Server가 VBS 보안 Enclave를 지원하는 증명 프로세스를 Windows Defender System Guard 런타임 증명이라고 하며 이 프로세스는 HGS(호스트 보호 서비스)를 증명 서비스로 사용합니다.The attestation process SQL Server supports for VBS secure enclaves in SQL Server 2019 (15.x)SQL Server 2019 (15.x) is Windows Defender System Guard runtime attestation, which uses Host Guardian Service (HGS) as an attestation service. 사용자 환경에서 HGS를 구성하고 HGS에서 SQL Server 인스턴스를 호스트하는 컴퓨터를 등록해야 합니다.You need to configure HGS in your environment and register the machine hosting your SQL Server instance in HGS. 또한 HGS 증명을 사용하여 클라이언트 애플리케이션 또는 도구(예: SQL Server Management Studio)를 구성해야 합니다.You also must configure you client applications or tools (for example, SQL Server Management Studio) with an HGS attestation.

지원되는 클라이언트 드라이버Supported Client Drivers

보안 Enclave를 사용한 Always Encrypted를 사용하려면 애플리케이션은 해당 기능을 지원하는 클라이언트 드라이버를 사용해야 합니다.To use Always Encrypted with secure enclaves, an application must use a client driver that supports the feature. 애플리케이션 및 클라이언트 드라이버에서 Enclave 계산 및 Enclave 증명을 사용하도록 구성해야 합니다.You need to configure the application and the client driver to enable enclave computations and enclave attestation. 지원되는 클라이언트 드라이버 목록을 비롯한 자세한 내용은 보안 Enclave를 사용한 Always Encrypted를 참조하세요.For details, including the list of supported client drivers, see Always Encrypted with secure enclaves.

Enclave 사용 키Enclave-enabled Keys

보안 Enclave를 사용한 Always Encrypted는 Enclave 사용 키의 개념을 도입했습니다.Always Encrypted with secure enclaves introduces the concept of enclave-enabled keys:

  • Enclave 사용 열 마스터 키 – 데이터베이스 내의 열 마스터 키 메타데이터 개체에 ENCLAVE_COMPUTATIONS 속성이 지정된 열 마스터 키입니다.Enclave-enabled column master key - a column master key that has the ENCLAVE_COMPUTATIONS property specified in the column master key metadata object inside the database. 열 마스터 키 메타데이터 개체는 메타데이터 속성의 유효한 서명도 포함해야 합니다.The column master key metadata object must also contain a valid signature of the metadata properties.
  • Enclave 사용 열 암호화 키 – Enclave 사용 열 마스터 키로 암호화된 열 암호화 키입니다.Enclave-enabled column encryption key - a column encryption key that is encrypted with an enclave-enabled column master key.

SQL Server 엔진은 쿼리에 지정된 작업을 보안 Enclave 내에서 수행해야 한다고 결정하면 클라이언트 드라이버에 계산에 필요한 열 암호화 키를 보안 Enclave와 공유하도록 요청합니다.When the SQL Server Engine determines operations, specified in a query, need to be performed inside the secure enclave, the SQL Server Engine requests the client driver shares the column encryption keys that are needed for the computations with the secure enclave. 클라이언트 드라이버는 열 암호화 키가 enclave 사용 키(즉, Enclave 사용 열 마스터 키로 암호화됨)이고 적절히 서명된 경우에만 해당 키를 공유합니다.The client driver shares the column encryption keys only if the keys are enclave-enabled (that is, encrypted with enclave-enabled column master keys) and they're properly signed. 그렇지 않으면 쿼리는 실패합니다.Otherwise, the query fails.

자세한 내용은 Manage keys for Always Encrypted with secure enclaves(보안 Enclave를 사용한 Always Encrypted 키 관리)를 참조하세요.For more information, see Manage keys for Always Encrypted with secure enclaves.

Enclave 사용 열Enclave-enabled Columns

Enclave 사용 열은 Enclave 사용 열 암호화 키로 암호화한 데이터베이스 열입니다.An enclave-enabled column is a database column encrypted with an enclave-enabled column encryption key. Enclave 사용 열에 사용할 수 있는 기능은 열이 사용하는 암호화 유형에 따라 다릅니다.The functionality available for an enclave-enabled column depends on the encryption type the column is using.

  • 결정적 암호화 - 결정적 암호화를 사용하는 Enclave 사용 열은 바로 암호화를 지원하지만 보안 Enclave 내에서 다른 작업은 지원하지 않습니다.Deterministic encryption - Enclave-enabled columns using deterministic encryption support in-place encryption, but no other operations inside the secure enclave. 같음 비교는 지원되지만 enclave 외부에서 암호 텍스트를 비교하여 수행됩니다.Equality comparison is supported, but it is performed by comparing the ciphertext outside of the enclave.
  • 임의 암호화 - 임의 암호화를 사용하는 Enclave 사용 열은 보안 Enclave 내에서 바로 암호화 및 리치 계산을 모두 지원합니다.Randomized encryption - Enclave-enabled columns using randomized encryption support in-place encryption as well as rich computations inside the secure enclave. 지원되는 리치 계산은 패턴 일치 및 비교 연산자(같음 비교 포함)입니다.The supported rich computations are pattern matching and comparison operators, including equality comparison.

암호화 유형에 대한 자세한 내용은 Always Encrypted 암호화를 참조하세요.For more information about encryption types, see Always Encrypted Cryptography.

다음 표에서는 열이 Enclave 사용 열 암호화 키 및 암호화 유형을 사용하는지 여부에 따라 암호화된 열에 사용할 수 있는 기능을 요약해서 보여 줍니다.The following table summarizes the functionality available for encrypted columns, depending on whether the columns use enclave-enabled column encryption keys and an encryption type.

연산Operation 열이 Enclave 사용 열이 아님Column is NOT enclave-enabled 열이 Enclave 사용 열이 아님Column is NOT enclave-enabled 열이 Enclave 사용 열임.Column is enclave-enabled 열이 Enclave 사용 열임.Column is enclave-enabled
임의 암호화Randomized encryption 결정적 암호화Deterministic encryption 임의 암호화Randomized encryption 결정적 암호화Deterministic encryption
바로 암호화In-place encryption 지원되지 않음Not Supported 지원되지 않음Not Supported 지원됨Supported 지원됨Supported
같음 비교Equality comparison 지원되지 않음Not Supported Enclave 외부에서 지원됨Supported outside of the enclave 지원됨(Enclave 내부)Supported (inside the enclave) Enclave 외부에서 지원됨Supported outside of the enclave
같음에 대한 비교 연산자Comparison operators beyond equality 지원되지 않음Not Supported 지원되지 않음Not Supported 지원됨Supported 지원되지 않음Not Supported
LIKELIKE 지원되지 않음Not Supported 지원되지 않음Not Supported 지원됨Supported 지원되지 않음Not Supported

바로 암호화는 Enclave 내에서 다음 작업을 지원합니다.In-place encryption includes support for the following operations inside the enclave:

  • 기존 열에 저장된 데이터의 초기 암호화Initial encryption of data stored in an existing column.

  • 열에 있는 기존 데이터 다시 암호화(예:Re-encrypting existing data in a column, for example:

    • 열 암호화 키 순환(새 키로 열을 다시 암호화)Rotating the column encryption key (re-encrypting the column with a new key).
    • 암호화 유형 변경Changing the encryption type.
  • 암호화된 열에 저장된 데이터 암호 해독(열을 일반 텍스트 열로 변환)Decrypting data stored in an encrypted column (converting the column into a plaintext column).

바로 암호화가 가능하려면 암호화 작업에 관련된 열 암호화 키가 Enclave 사용 키여야 합니다.For in-place encryption to be possible, the column encryption key (or keys), involved in the cryptographic operations, must be enclave-enabled:

  • 초기 암호화: 암호화할 열의 열 암호화 키가 Enclave 사용 키여야 합니다.Initial encryption: the column encryption key for the column being encrypted must be enclave-enabled.
  • 다시 암호화: 현재 및 대상 열 암호화 키(현재 키와 다른 경우)가 Enclave 사용 키여야 합니다.Re-encryption: both the current and the target column encryption key (if different than the current key) must be enclave-enabled.
  • 암호 해독: 열의 현재 열 암호화 키가 Enclave 사용 키여야 합니다.Decryption: the current column encryption key of the column must be enclave-enabled.

임의 암호화를 사용하는 Enclave 사용 열의 인덱스Indexes on Enclave-enabled Columns using Randomized Encryption

풍부한 쿼리가 더 빠르게 실행되도록 임의 암호화를 이용하여 enclave 사용 열에 비클러스터형 인덱스를 만들 수 있습니다.You can create nonclustered indexes on enclave-enabled columns using randomized encryption to make rich queries run faster. 임의 암호화를 사용하여 암호화된 열의 인덱스에는 중요한 데이터를 누출하지 않는 동시에, enclave 내의 쿼리 처리에 유용합니다. 인덱스 데이터 구조(B-트리)의 키 값이 암호화되고 해당 일반 텍스트 값에 따라 정렬됩니다.To ensure an index on a column encrypted using randomized encryption doesn't leak sensitive data and, at the same time, it's useful for processing queries inside the enclave, the key values in the index data structure (B-tree) are encrypted and sorted based on their plaintext values. SQL Server 엔진의 쿼리 실행기가 enclave 내의 계산을 위해 암호화된 열의 인덱스를 사용하는 경우 인덱스를 검색하여 열에 저장된 특정 값을 조회합니다.When the query executor in the SQL Server Engine uses an index on an encrypted column for computations inside the enclave, it searches the index to look up specific values stored in the column. 각 검색에서 여러 개의 비교를 수행할 수 있습니다.Each search may involve multiple comparisons. 쿼리 실행기는 각 비교를 enclave에 위임하고, enclave는 열에 저장된 값 및 비교할 암호화된 인덱스 키 값의 암호를 해독하고 일반 텍스트를 비교하여 비교 결과를 실행기에 반환합니다.The query executor delegates each comparison to the enclave, which decrypts a value stored in the column and the encrypted index key value to be compared, it performs the comparison on plaintext and it returns the result of the comparison to the executor.

임의 암호화를 사용하는데 enclave를 지원하지 않는 열에는 인덱스를 만들 수 없습니다.Creating indexes on columns that use randomized encryption and are not enclave-enabled remains unsupported.

자세한 내용은 보안 Enclave를 사용한 Always Encrypted를 이용하여 열에 인덱스 만들기 및 사용을 참조하세요.For more information, see Create and use indexes on columns using Always Encrypted with secure enclaves. Always Encrypted와 관련된 정보가 아닌, SQL Server 인덱싱의 작동 방식에 대한 일반적인 내용은 클러스터형 및 비클러스터형 인덱스 소개를 참조하세요.For general information, not specific to Always Encrypted, on how indexing in SQL Server works, see Clustered and Nonclustered Indexes Described.

데이터베이스 복구Database Recovery

SQL Server 인스턴스에서 오류가 발생하면 데이터베이스가 불완전한 트랜잭션으로 인한 수정 내용이 데이터 파일에 포함된 상태로 남겨질 수 있습니다.If an instance of SQL Server fails, its databases may be left in a state where the data files may contain some modifications from incomplete transactions. 인스턴스를 시작하면 트랜잭션 로그에서 발견된 불완전한 트랜잭션을 모두 롤백하여 데이터베이스의 무결성을 유지하는 데이터베이스 복구 프로세스가 실행됩니다.When the instance is started, it runs a process called database recovery, which involves rolling back every incomplete transaction found in the transaction log to make sure the integrity of the database is preserved. 불완전한 트랜잭션이 인덱스를 변경한 경우 해당 변경 내용도 취소해야 합니다.If an incomplete transaction made any changes to an index, those changes also need to be undone. 예를 들어 인덱스의 일부 키 값을 제거하거나 다시 삽입해야 할 수 있습니다.For example, some key values in the index may need to be removed or reinserted.

중요

데이터베이스에 대해 ADR(가속 데이터베이스 복구)을 사용하도록 설정한 다음, 임의 암호화로 암호화된 enclave 사용 열에 첫 번째 인덱스를 만드는 것이 좋습니다.Microsoft strongly recommends enabling Accelerated database recovery (ADR) for your database, before creating the first index on an enclave-enabled column encrypted with randomized encryption.

인덱스의 변경 내용을 취소하는 기존 데이터베이스 복구 프로세스(ARIES 복구 모델을 따름)에서는 애플리케이션이 열의 열 암호화 키를 enclave에 제공할 때까지 SQL Server에서 기다려야 하며, 오랜 시간이 걸릴 수 있습니다.With the traditional database recovery process (that follows the ARIES recovery model), to undo a change to an index, SQL Server needs to wait until an application provides the column encryption key for the column to the enclave, which can take a long time. ADR을 사용하면 enclave 내부 캐시에서 열 암호화 키를 사용할 수 없어 지연되어야 하는 실행 취소 작업 수가 훨씬 줄어듭니다.ADR dramatically reduces the number of undo operations that must be deferred because a column encryption key is not available in the cache inside the enclave. 따라서 새 트랜잭션이 차단될 가능성이 최소화되어 데이터베이스 가용성이 상당히 증가합니다.Consequently, it substantially increases the database availability by minimizing a chance for a new transaction to get blocked. ADR을 사용하는 경우에도 SQL Server에서 이전 데이터 버전 정리를 완료하려면 열 암호화 키가 필요할 수 있지만 백그라운드 작업으로 수행하기 때문에 데이터베이스 또는 사용자 트랜잭션의 가용성에는 영향을 주지 않습니다.With ADR enabled, SQL Server still may need a column encryption key to complete cleaning up old data versions but it does that as a background task that does not impact the availability of the database or user transactions. 그러나 누락된 열 암호화 키로 인해 실패한 정리 작업을 나타내는 오류 메시지가 오류 로그에 표시될 수 있습니다.You may, however, see error messages in the error log, indicating failed cleanup operations due to a missing column encryption key.

결정적 암호화를 사용하는 Enclave 사용 열의 인덱스Indexes on Enclave-enabled Columns using Deterministic Encryption

결정적 암호화를 사용하는 열의 인덱스는 열의 enclave 사용 여부에 관계없이 암호 텍스트(일반 텍스트 아님)를 기준으로 정렬됩니다.An index on a column using deterministic encryption are sorted based on ciphertext (not plaintext), regardless if the column is enclave-enabled or not.

보안 고려사항Security Considerations

다음 보안 고려 사항은 보안 enclave를 사용한 Always Encrypted에 적용됩니다.The following security considerations apply to Always Encrypted with secure enclaves.

  • enclave 내부 데이터의 보안은 증명 프로토콜 및 증명 서비스에 따라 달라집니다.The security of your data inside the enclave depends on an attestation protocol and an attestation service. 따라서 신뢰할 수 있는 관리자가 증명 서비스와 증명 서비스에서 적용하는 증명 정책을 관리하도록 해야 합니다.Therefore, you need to ensure the attestation service and attestation policies, the attestation service enforces, are managed by a trusted administrator. 또한 증명 서비스는 일반적으로 다양한 정책과 증명 프로토콜을 지원하고, 이 중에서 일부는 enclave 및 환경에 대해 최소한의 확인을 수행하며 테스트 및 개발용으로 설계되었습니다.Also, attestation services typically support different policies and attestation protocols, some of which perform minimal verification of the enclave and its environment, and are designed for testing and development. 해당 증명 서비스와 관련된 지침에 따라 권장 구성 및 정책을 프로덕션 배포에 사용합니다.Closely follow the guidelines specific to your attestation service to ensure you are using the recommended configurations and policies for your production deployments.
  • 임의 암호화를 사용하는 열을 enclave 사용 CEK로 암호화하면 열 지원 범위 비교와 같은, 열에 저장된 데이터의 순서가 누출될 수 있습니다.Encrypting a column using randomized encryption with an enclave-enabled CEK may result in leaking the order of data stored in the column, as such columns support range comparisons. 예를 들어 직원 급여를 포함하는 암호화된 열에 인덱스가 있는 경우, 악의적인 DBA가 인덱스를 검색하여 최대 암호화된 급여 값을 찾고 최대 급여를 받는 사람을 식별할 수 있습니다(사람 이름은 암호화되지 않았다고 가정).For example, if an encrypted column, containing employee salaries, has an index, a malicious DBA could scan the index to find the maximum encrypted salary value and identify a person with the maximum salary (assuming the name of the person is not encrypted).
  • Always Encrypted를 사용하여 DBA의 무단 액세스로부터 중요한 데이터를 보호하는 경우 열 마스터 키 또는 열 암호화 키를 DBA와 공유하지 마세요.If you use Always Encrypted to protect sensitive data from unauthorized access by DBAs, do not share the column master keys or column encryption keys with the DBAs. DBA는 enclave 내부의 열 암호화 키 캐시를 활용하여 키에 직접 액세스하지 않고도 암호화된 열의 인덱스를 관리할 수 있습니다.A DBA can manage indexes on encrypted columns without having direct access to the keys, by leveraging the cache of column encryption keys inside the enclave.

가용성 그룹 및 데이터베이스 마이그레이션의 고려 사항Considerations for Availability Groups and Database Migration

enclave를 사용하여 쿼리를 지원하는 데 필요한 Always On 가용성 그룹을 구성하는 경우, 가용성 그룹의 데이터베이스를 호스팅하는 모든 SQL Server 인스턴스에서 보안 enclave를 사용한 Always Encrypted를 지원하며 enclave가 구성되어 있는지 확인해야 합니다.When configuring an Always On availability group that is required to support queries using enclaves, you need to ensure that all SQL Server instances hosting the databases in the availability group support Always Encrypted with secure enclaves and have an enclave configured. 주 데이터베이스는 enclave를 지원하지만 보조 복제본이 지원하지 않는 경우 보안 enclave를 사용한 Always Encrypted의 기능을 사용하려고 하면 실패합니다.If the primary database supports enclaves, but a secondary replica does not, any query that attempts to use the functionality of Always Encrypted with secure enclaves will fail.

enclave가 구성되지 않은 SQL Server 인스턴스에서 보안 enclave를 사용한 Always Encrypted의 기능을 사용하는 데이터베이스의 백업 파일을 복원하는 경우 복원 작업이 성공하고, enclave를 이용하지 않는 모든 기능을 사용할 수 있습니다.When you restore a backup file of a database that uses the functionality of Always Encrypted with secure enclaves on a SQL Server instance that doesn't have the enclave configured, the restore operation will succeed and all the functionality that doesn't rely on the enclave will be available. 그러나 enclave 기능을 사용한 모든 후속 쿼리는 실패하고, 임의 암호화를 사용하는 enclave 사용 열의 인덱스가 유효하지 않게 됩니다.However, any subsequent queries using the enclave functionality will fail, and indexes on enclave-enabled columns using randomized encryption will become invalid. enclave가 구성되지 않은 인스턴스에서 보안 enclave를 사용한 Always Encrypted를 사용하는 데이터베이스를 연결하는 경우에도 동일하게 적용됩니다.The same applies when you attach a database using Always Encrypted with secure enclaves on the instance that doesn't have the enclave configured.

데이터베이스에 임의 암호화를 사용하는 enclave 사용 열이 포함된 경우 데이터베이스 백업을 만들기 전에 데이터베이스에서 ADR(가속 데이터베이스 복구)을 사용하도록 설정해야 합니다.If your database contains indexes on enclave-enabled columns using randomized encryption, make sure you enable Accelerated database recovery (ADR) in the database before creating a database backup. ADR을 사용하면 데이터베이스를 복원한 후에 인덱스를 비롯한 데이터베이스를 즉시 사용할 수 있습니다.ADR will ensure the database, including the indexes, is available immediately after you restore the database. 자세한 내용은 데이터베이스 복구를 참조하세요.For more information, see Database Recovery.

bacpac 파일을 사용하여 데이터베이스를 마이그레이션하는 경우, bacpac 파일을 만들기 전에 임의 암호화를 사용하는 enclave 사용 열의 인덱스를 모두 삭제해야 합니다.When you migrate your database using a bacpac file, you need to make sure you drop all indexes enclave-enabled columns using randomized encryption before creating the bacpac file.

알려진 제한 사항Known Limitations

보안 Enclave를 사용한 Always Encrypted는 다음 작업을 사용하도록 설정하여 Always Encrypted가 가지고 있는 제한 사항 중 일부를 해결합니다.Always Encrypted with secure enclaves addresses some limitations of Always Encrypted, by enabling the following operations:

  • 바로 암호화 작업In-place cryptographic operations.
  • 임의 암호화를 사용하여 암호화된 열의 패턴 일치(LIKE) 및 비교 연산자Pattern matching (LIKE) and comparison operators on column encrypted using randomized encryption.

    참고

    위의 작업은 binary2 정렬 순서의 데이터 정렬(BIN2 데이터 정렬)을 사용하는 문자열 열에 대해 지원됩니다.The above operations are supported for character string columns that use collations with a binary2 sort order (BIN2 collations). BIN2 이외의 데이터 정렬을 사용하는 문자열 열은 임의 암호화 및 Enclave 사용 열 암호화 키로 암호화할 수 있습니다.Character string columns using non-BIN2 collations can be encrypted using randomized encryption and enclave-enabled column encryption keys. 그러나 이러한 열에 사용할 수 있는 유일한 새 기능은 바로 암호화입니다.However, the only new functionality that is enabled for such columns is in-place encryption.

  • 임의 암호화를 사용하는 Enclave 사용 열에 비클러스터형 인덱스 및 통계 만들기Creating nonclustered indexes and statistics on columns using randomized encryption.

기능 정보에 나열된 Always Encrypted의 다른 모든 제한 사항은 보안 Enclave를 사용한 Always Encrypted에도 적용됩니다.All other limitations for Always Encrypted listed at Feature Details also apply to Always Encrypted with secure enclaves.

다음 제한 사항은 보안 enclave를 사용한 Always Encrypted와 관련이 있습니다.The following limitations are specific to Always Encrypted with secure enclaves:

  • 임의 암호화를 사용하는 Enclave 사용 열에는 클러스터형 인덱스를 만들 수 없습니다.Clustered indexes can't be created on enclave-enabled columns using randomized encryption.
  • 임의 암호화를 사용하는 enclave 사용 열은 기본 키 열이 될 수 없으며, 외래 키 제약 조건 또는 고유 키 제약 조건에서 참조할 수 없습니다.Enclave-enabled columns using randomized encryption can't be primary key columns and cannot be referenced by foreign key constraints or unique key constraints.
  • 임의 암호화를 사용하는 Enclave 사용 열에서는 중첩된 루프 조인(인덱스 사용, 사용 가능한 경우)만 지원됩니다.Only nested loop joins (using indexes, if available) are supported on enclave-enabled columns using randomized encryption. 해시 조인과 병합 조인은 지원되지 않습니다.Hash joins and merged joins are not supported.
  • 바로 암호화 작업은 동일한 코드 페이지 내의 데이터 정렬 및 null 허용 여부 변경을 제외하고 다른 열 메타데이터 변경과 결합할 수 없습니다.In-place cryptographic operations cannot be combined with any other changes of column metadata, except changing a collation within the same code page and nullability. 예를 들어 단일 ALTER TABLE/ALTER COLUMN Transact-SQL 문에서 열을 암호화하거나 다시 암호화하거나 암호 해독하는 작업과 열의 데이터 형식을 변경하는 작업을 함께 수행할 수는 없습니다.For example, you cannot encrypt, re-encrypt, or decrypt a column AND change a data type of the column in a single ALTER TABLE/ALTER COLUMN Transact-SQL statement. 두 개의 개별 문을 사용합니다.Use two separate statements.
  • 메모리 내 테이블의 열에 대해 enclave 사용 키를 사용할 수 없습니다.Using enclave-enabled keys for columns in in-memory tables isn't supported.
  • 계산 열을 정의하는 식은 임의 암호화를 사용하는 Enclave 사용 열에서 계산을 수행할 수 없습니다(계산이 LIKE 및 범위 비교인 경우에도 수행할 수 없음).Expressions defining computed columns cannot perform any computations on enclave-enabled columns using randomized encryption (even if the computations are LIKE and range comparisons).
  • 임의 암호화를 사용하는 Enclave 사용 열에서는 LIKE 연산자의 매개 변수에서 이스케이프 문자가 지원되지 않습니다.Escape characters are not supported in parameters of the LIKE operator on enclave-enabled columns using randomized encryption.
  • 암호화 후에 큰 개체가 되는 다음 데이터 형식 중 하나를 사용하는 쿼리 매개 변수가 있는 LIKE 연산자 또는 비교 연산자가 포함된 쿼리는 인덱스를 무시하고 테이블 검사를 수행합니다.Queries with the LIKE operator or a comparison operator that has a query parameter using one of the following data types (that become large objects after encryption) ignore indexes and perform table scans.
    • n이 3,967보다 큰 경우 nchar[n]nvarchar[n]입니다.nchar[n] and nvarchar[n], if n is greater than 3967.
    • n이 7,935보다 큰 경우 char[n], varchar[n], binary[n], varbinary[n]입니다.char[n], varchar[n], binary[n], varbinary[n], if n is greater than 7935.
  • 도구 제한 사항은 다음과 같습니다.Tooling limitations:
    • Enclave 사용 열 마스터 키를 저장할 수 있는 유일한 키 저장소는 Windows 인증서 저장소 및 Azure Key Vault입니다.The only supported key stores for storing enclave-enabled column master keys are Windows Certificate Store and Azure Key Vault.
    • Enclave 사용 키가 포함된 데이터베이스 가져오기/내보내기는 지원되지 않습니다.Importing/exporting databases containing enclave-enabled keys is not supported.
    • ALTER TABLE/ALTER COLUMN을 통해 바로 암호화 작업을 트리거하려면 SSMS에서 쿼리 창을 사용하여 문을 실행해야 합니다. 또는 해당 문을 실행하는 고유한 프로그램을 작성할 수도 있습니다.To trigger an in-place cryptographic operation via ALTER TABLE/ALTER COLUMN, you need to issue the statement using a query window in SSMS, or you can write your own program that issues the statement. 현재 SqlServer PowerShell 모듈의 Set-SqlColumnEncryption cmdlet과 SQL Server Management Studio의 Always Encrypted 마법사는 바로 암호화를 지원하지 않으며, 작업에 사용되는 열 암호화 키가 Enclave 사용 키인 경우에도 암호화 작업을 위해 데이터베이스 외부로 데이터를 이동합니다.Currently, the Set-SqlColumnEncryption cmdlet in the SqlServer PowerShell module and the Always Encrypted wizard in SQL Server Management Studio do not support in-place encryption - they move the data out of the database for cryptographic operations, even if the column encryption keys used for the operations are enclave-enabled.

다음 단계Next steps

참고 항목See also