EKM(확장 가능 키 관리)Extensible Key Management (EKM)

SQL ServerSQL Server 에서는 암호화 및 키 생성용 MSCAPI( Microsoft Cryptographic API ) 공급자를 사용하여 EKM( Extensible Key Management )과 함께 데이터 암호화 기능을 제공합니다. provides data encryption capabilities together with Extensible Key Management (EKM), using the Microsoft Cryptographic API (MSCAPI) provider for encryption and key generation. 데이터 및 키 암호화를 위한 암호화 키는 임시 키 컨테이너에서 생성되며 데이터베이스에 저장되기 전에 공급자로부터 내보내져야 합니다.Encryption keys for data and key encryption are created in transient key containers, and they must be exported from a provider before they are stored in the database. 이 방법을 사용하면 SQL ServerSQL Server에서 암호화 키 계층 및 키 백업을 포함한 키 관리를 처리할 수 있습니다.This approach enables key management that includes an encryption key hierarchy and key backup, to be handled by SQL ServerSQL Server.

규정 준수에 대한 요구와 데이터에 포함된 개인 정보 보호에 대한 관심이 증가함에 따라 조직에서는 "심층 방어" 솔루션을 제공하기 위해 암호화를 활용하고 있습니다.With the growing demand for regulatory compliance and concern for data privacy, organizations are taking advantage of encryption as a way to provide a "defense in depth" solution. 일반적으로 이 방법은 데이터베이스 암호화 관리 도구만 사용하므로 유용한 방법이 아닙니다.This approach is often impractical using only database encryption management tools. 하드웨어 공급업체에서는 HSM( 하드웨어 보안 모듈 )을 사용하여 엔터프라이즈 키 관리를 해결하는 제품을 제공합니다.Hardware vendors provide products that address enterprise key management by using Hardware Security Modules (HSM). HSM 장치는 하드웨어나 소프트웨어 모듈에 암호화 키를 저장합니다.HSM devices store encryption keys on hardware or software modules. 이 방법은 암호화 키와 암호화 데이터가 별도로 보관되므로 더욱 안전한 솔루션입니다.This is a more secure solution because the encryption keys do not reside with encryption data.

많은 공급업체에서 키 관리와 암호화 가속 둘 다를 위해 HSM을 제공합니다.A number of vendors offer HSM for both key management and encryption acceleration. HSM 장치는 응용 프로그램과 HSM 간의 매개자로 서버 프로세스가 포함된 하드웨어 인터페이스를 사용합니다.HSM devices use hardware interfaces with a server process as an intermediary between an application and an HSM. 또한 공급업체는 하드웨어나 소프트웨어일 수 있는 해당 모듈을 통해 MSCAPI 공급자를 구현합니다.Vendors also implement MSCAPI providers over their modules, which might be hardware or software. 일반적으로 MSCAPI는 HSM에서 제공하는 기능의 하위 집합만 제공합니다.MSCAPI often offers only a subset of the functionality that is offered by an HSM. 또한 공급업체는 HSM, 키 구성 및 키 액세스를 위해 관리 소프트웨어를 제공할 수도 있습니다.Vendors can also provide management software for HSM, key configuration, and key access.

HSM 구현은 공급업체마다 다르며 SQL ServerSQL Server 에서 사용하려면 공용 인터페이스가 필요합니다.HSM implementations vary from vendor to vendor, and to use them with SQL ServerSQL Server requires a common interface. MSCAPI는 이 인터페이스를 제공하지만 HSM 기능의 하위 집합만 지원합니다.Although the MSCAPI provides this interface, it supports only a subset of the HSM features. 이외에도 MSCAPI에는 기본적으로 대칭 키를 지속할 수 없고 세션 지향이 지원되지 않는 등의 제한 사항이 있습니다.It also has other limitations, such as the inability to natively persist symmetric keys, and a lack of session-oriented support.

SQL ServerSQL Server 확장 가능 키 관리를 사용하면 타사 EKM/HSM 공급업체가 SQL ServerSQL Server에 해당 모듈을 등록할 수 있습니다.The SQL ServerSQL Server Extensible Key Management enables third-party EKM/HSM vendors to register their modules in SQL ServerSQL Server. EKM 모듈이 등록되면 SQL ServerSQL Server 에서 이러한 모듈에 저장된 암호화 키를 사용할 수 있고,When registered, SQL ServerSQL Server users can use the encryption keys stored on EKM modules. 이를 통해 SQL ServerSQL Server 에서 이러한 모듈이 지원하는 대량 암호화 및 암호 해독 같은 고급 암호화 기능과 키 에이징 및 키 회전 같은 키 관리 함수에 액세스할 수 있습니다.This enables SQL ServerSQL Server to access the advanced encryption features these modules support such as bulk encryption and decryption, and key management functions such as key aging and key rotation.

Azure VM에서 SQL ServerSQL Server 를 실행할 때 SQL ServerSQL ServerAzure 키 자격 증명 모음에 저장된 키를 사용할 수 있습니다.When running SQL ServerSQL Server in an Azure VM, SQL ServerSQL Server can use keys stored in the Azure Key Vault. 자세한 내용은 Azure 주요 자격 증명 모음을 사용한 확장 가능 키 관리(SQL Server)에서 암호화 키 계층 및 키 백업을 포함한 키 관리를 처리할 수 있습니다.For more information, see Extensible Key Management Using Azure Key Vault (SQL Server).

EKM 구성EKM Configuration

일부 MicrosoftMicrosoft SQL ServerSQL Server버전에서는 확장 가능 키 관리를 사용할 수 없습니다.Extensible Key Management is not available in every edition of MicrosoftMicrosoft SQL ServerSQL Server. SQL ServerSQL Server버전에서 지원되는 기능 목록은 SQL Server 2016 버전에서 지원하는 기능을 참조하세요.For a list of features that are supported by the editions of SQL ServerSQL Server, see Features Supported by the Editions of SQL Server 2016.

기본적으로 확장 가능 키 관리는 해제되어 있습니다.By default, Extensible Key Management is off. 이 기능을 사용하도록 설정하려면 다음 예와 같이 다음 옵션과 값이 포함된 sp_configure 명령을 사용합니다.To enable this feature, use the sp_configure command that has the following option and value, as in the following example:

sp_configure 'show advanced', 1  
GO  
RECONFIGURE  
GO  
sp_configure 'EKM provider enabled', 1  
GO  
RECONFIGURE  
GO  
참고

EKM을 지원하지 않는 SQL ServerSQL Server 버전에서 이 옵션에 대해 명령을 사용할 경우 오류가 수신됩니다.If you use the sp_configure command for this option on editions of SQL ServerSQL Server that do not support EKM, you will receive an error.

기능을 사용하지 않으려면 값을 0으로 설정합니다.To disable the feature, set the value to 0. 서버 옵션을 설정하는 방법은 sp_configure(Transact-SQL)를 참조하세요.For more information about how to set server options, see sp_configure (Transact-SQL).

EKM 사용 방법How to Use EKM

SQL ServerSQL Server 확장 가능 키 관리를 사용하면 데이터베이스 파일을 보호하는 암호화 키를 스마트 카드, USB 장치 또는 EKM/HSM 모듈과 같은 외부 장치에 저장할 수 있을 뿐 아니라 Extensible Key Management enables the encryption keys that protect the database files to be stored in an off-box device such as a smartcard, USB device, or EKM/HSM module. 데이터베이스 관리자(sysadmin 그룹의 멤버 제외)로부터 데이터를 보호할 수도 있습니다.This also enables data protection from database administrators (except members of the sysadmin group). 즉, 외부 EKM/HSM 모듈에서 데이터베이스 사용자만 액세스할 수 있는 암호화 키를 사용하여 데이터를 암호화할 수 있습니다.Data can be encrypted by using encryption keys that only the database user has access to on the external EKM/HSM module.

또한 확장 가능 키 관리는 다음과 같은 이점을 제공합니다.Extensible Key Management also provides the following benefits:

  • 추가 권한 확인(의무 분리 가능)Additional authorization check (enabling separation of duties).

  • 하드웨어 기반 암호화/암호 해독의 성능 향상Higher performance for hardware-based encryption/decryption.

  • 외부 암호화 키 생성External encryption key generation.

  • 외부 암호화 키 저장(데이터와 키의 물리적 분리)External encryption key storage (physical separation of data and keys).

  • 암호화 키 검색Encryption key retrieval.

  • 외부 암호화 키 보존(암호화 키 회전 사용)External encryption key retention (enables encryption key rotation).

  • 더 쉬워진 암호화 키 복구Easier encryption key recovery.

  • 관리 가능한 암호화 키 배포Manageable encryption key distribution.

  • 안전한 암호화 키 삭제Secure encryption key disposal.

    사용자 이름과 암호 조합 또는 EKM 드라이버에서 정의한 다른 메서드에 확장 가능 키 관리를 사용할 수 있습니다.You can use Extensible Key Management for a username and password combination or other methods defined by the EKM driver.

주의

문제 해결을 위해 MicrosoftMicrosoft 기술 지원 서비스에 EKM 공급자의 암호화 키를 제공하거나For troubleshooting, MicrosoftMicrosoft technical support might require the encryption key from the EKM provider. 공급업체 도구나 프로세스에 액세스해야 할 수 있습니다.You might also need to access vendor tools or processes to help resolve an issue.

EKM 장치를 사용한 인증Authentication with an EKM Device

EKM 모듈은 둘 이상의 인증 유형을 지원할 수 있습니다.An EKM module can support more than one type of authentication. 각 공급자는 SQL ServerSQL Server에 한 가지 유형의 인증만 제공합니다. 즉, 모듈에서 기본 또는 기타 인증 유형을 지원하는 경우 둘 다가 아닌 둘 중 하나만 제공합니다.Each provider exposes only one type of authentication to SQL ServerSQL Server, that is if the module supports Basic or Other authentication types, it exposes one or the other, but not both.

사용자 이름/암호를 통한 EKM 장치별 기본 인증EKM Device-Specific Basic Authentication Using username/password

사용자 이름/암호 쌍을 사용한 기본 인증을 지원하는 EKM 모듈의 경우 SQL ServerSQL Server에서 자격 증명을 사용하여 투명한 인증을 제공합니다.For those EKM modules that support Basic authentication using a username/password pair, SQL ServerSQL Server provides transparent authentication using credentials. 자격 증명에 대한 자세한 내용은 자격 증명(데이터베이스 엔진)을 참조하세요.For more information about credentials, see Credentials (Database Engine).

로그온할 때마다 EKM 공급자에 대해 자격 증명을 만든 후 로그인(Windows 및 SQL ServerSQL Server 계정 모두)에 매핑하여 EKM 모듈에 액세스할 수 있습니다.A credential can be created for an EKM provider and mapped to a login (both Windows and SQL ServerSQL Server accounts) to access an EKM module on per-login basis. 자격 증명의 Identify 필드에는 사용자 이름이 포함되고 secret 필드에는 EKM 모듈에 연결할 암호가 포함됩니다.The Identify field of the credential contains the username; the secret field contains a password to connect to an EKM module.

EKM 공급자에 대해 매핑된 로그인 자격 증명이 없으면 SQL ServerSQL Server 서비스 계정에 매핑된 자격 증명이 사용됩니다.If there is no login mapped credential for the EKM provider, the credential mapped to the SQL ServerSQL Server service account is used.

자격 증명이 고유한 EKM 공급자에 대해 사용되는 경우 로그인에 여러 개의 매핑된 자격 증명이 있을 수 있습니다.A login can have multiple credentials mapped to it, as long as they are used for distinctive EKM providers. 로그인별로 각 EKM 공급자에 하나의 매핑된 자격 증명만 있어야 합니다.There must be only one mapped credential per EKM provider per login. 동일한 자격 증명이 다른 로그인에 매핑될 수 있습니다.The same credential can be mapped to other logins.

다른 유형의 EKM 장치별 인증Other Types of EKM Device-Specific Authentication

Windows 또는 사용자/암호 조합 이외의 인증을 사용하는 EKM 모듈의 경우 SQL ServerSQL Server와는 별도로 인증이 수행되어야 합니다.For EKM modules that have authentication other than Windows or user/password combinations, authentication must be performed independently from SQL ServerSQL Server.

EKM 장치별 암호화 및 암호 해독Encryption and Decryption by an EKM Device

다음 함수와 기능을 사용하여 대칭 및 비대칭 키를 통해 데이터를 암호화하고 암호 해독할 수 있습니다.You can use the following functions and features to encrypt and decrypt data by using symmetric and asymmetric keys:

함수 또는 기능Function or feature 참조Reference
대칭 키 암호화Symmetric key encryption CREATE SYMMETRIC KEY (Transact-SQL)CREATE SYMMETRIC KEY (Transact-SQL)
비대칭 키 암호화Asymmetric Key encryption CREATE ASYMMETRIC KEY (Transact-SQL)CREATE ASYMMETRIC KEY (Transact-SQL)
EncryptByKey(key_guid, 'cleartext', …)EncryptByKey(key_guid, 'cleartext', …) ENCRYPTBYKEY(Transact-SQL)ENCRYPTBYKEY (Transact-SQL)
DecryptByKey(ciphertext, …)DecryptByKey(ciphertext, …) DECRYPTBYKEY(Transact-SQL)DECRYPTBYKEY (Transact-SQL)
EncryptByAsmKey(key_guid, 'cleartext')EncryptByAsmKey(key_guid, 'cleartext') ENCRYPTBYASYMKEY(Transact-SQL)ENCRYPTBYASYMKEY (Transact-SQL)
DecryptByAsmKey(ciphertext)DecryptByAsmKey(ciphertext) DECRYPTBYASYMKEY(Transact-SQL)DECRYPTBYASYMKEY (Transact-SQL)

EKM 키로 데이터베이스 키 암호화Database Keys Encryption by EKM Keys

SQL ServerSQL Server 에서는 EKM 키를 사용하여 데이터베이스에 있는 다른 키를 암호화할 수 있습니다. can use EKM keys to encrypt other keys in a database. EKM 장치에서 대칭 키 및 비대칭 키 모두를 만들고 사용할 수 있습니다.You can create and use both symmetric and asymmetric keys on an EKM device. EKM 비대칭 키를 사용하여 네이티브(비 EKM) 대칭 키를 암호화할 수 있습니다.You can encrypt native (non-EKM) symmetric keys with EKM asymmetric keys.

다음 예에서는 데이터베이스 대칭 키를 만들고 EKM 모듈에 저장된 키를 사용하여 이 키를 암호화합니다.The following example creates a database symmetric key and encrypts it using a key on an EKM module.

CREATE SYMMETRIC KEY Key1  
WITH ALGORITHM = AES_256  
ENCRYPTION BY EKM_AKey1;  
GO  
--Open database key  
OPEN SYMMETRIC KEY Key1  
DECRYPTION BY EKM_AKey1  

SQL ServerSQL Server의 데이터베이스 및 서버 키에 대한 자세한 내용은 SQL Server 및 데이터베이스 암호화 키(데이터베이스 엔진)를 참조하세요.For more information about Database and Server Keys in SQL ServerSQL Server, see SQL Server and Database Encryption Keys (Database Engine).

참고

한 EKM 키로 다른 EKM 키를 암호화할 수는 없습니다.You cannot encrypt one EKM key with another EKM key.

SQL ServerSQL Server 는 EKM 공급자에서 생성된 비대칭 키를 사용한 서명 모듈을 지원하지 않습니다. does not support signing modules with asymmetric keys generated from EKM provider.

EKM provider enabled 서버 구성 옵션EKM provider enabled Server Configuration Option

EKM을 사용하여 SQL Server에서 TDE를 사용하도록 설정Enable TDE on SQL Server Using EKM

Azure 주요 자격 증명 모음을 사용한 확장 가능 키 관리(SQL Server)Extensible Key Management Using Azure Key Vault (SQL Server)

참고 항목See Also

CREATE CRYPTOGRAPHIC PROVIDER (Transact-SQL) CREATE CRYPTOGRAPHIC PROVIDER (Transact-SQL)
DROP CRYPTOGRAPHIC PROVIDER(Transact-SQL) DROP CRYPTOGRAPHIC PROVIDER (Transact-SQL)
ALTER CRYPTOGRAPHIC PROVIDER(Transact-SQL) ALTER CRYPTOGRAPHIC PROVIDER (Transact-SQL)
sys.cryptographic_providers(Transact-SQL) sys.cryptographic_providers (Transact-SQL)
sys.dm_cryptographic_provider_sessions(Transact-SQL) sys.dm_cryptographic_provider_sessions (Transact-SQL)
sys.dm_cryptographic_provider_properties(Transact-SQL) sys.dm_cryptographic_provider_properties (Transact-SQL)
sys.dm_cryptographic_provider_algorithms(Transact-SQL) sys.dm_cryptographic_provider_algorithms (Transact-SQL)
sys.dm_cryptographic_provider_keys(Transact-SQL) sys.dm_cryptographic_provider_keys (Transact-SQL)
sys.credentials(Transact-SQL) sys.credentials (Transact-SQL)
CREATE CREDENTIAL (Transact-SQL) CREATE CREDENTIAL (Transact-SQL)
ALTER LOGIN (Transact-SQL) ALTER LOGIN (Transact-SQL)
CREATE ASYMMETRIC KEY (Transact-SQL) CREATE ASYMMETRIC KEY (Transact-SQL)
ALTER ASYMMETRIC KEY(Transact-SQL) ALTER ASYMMETRIC KEY (Transact-SQL)
DROP ASYMMETRIC KEY(Transact-SQL) DROP ASYMMETRIC KEY (Transact-SQL)
CREATE SYMMETRIC KEY (Transact-SQL) CREATE SYMMETRIC KEY (Transact-SQL)
ALTER SYMMETRIC KEY(Transact-SQL) ALTER SYMMETRIC KEY (Transact-SQL)
DROP SYMMETRIC KEY(Transact-SQL) DROP SYMMETRIC KEY (Transact-SQL)
OPEN SYMMETRIC KEY(Transact-SQL) OPEN SYMMETRIC KEY (Transact-SQL)
Reporting Services 암호화 키 백업 및 복원 Back Up and Restore Reporting Services Encryption Keys
암호화 키 삭제 및 다시 만들기(SSRS 구성 관리자) Delete and Re-create Encryption Keys (SSRS Configuration Manager)
확장 배포의 암호화 키 추가 및 제거(SSRS 구성 관리자) Add and Remove Encryption Keys for Scale-Out Deployment (SSRS Configuration Manager)
서비스 마스터 키 백업 Back Up the Service Master Key
서비스 마스터 키 복원 Restore the Service Master Key
데이터베이스 마스터 키 만들기 Create a Database Master Key
데이터베이스 마스터 키 백업 Back Up a Database Master Key
데이터베이스 마스터 키 복원 Restore a Database Master Key
두 서버에서 동일한 대칭 키 만들기Create Identical Symmetric Keys on Two Servers