拡張キー管理 (EKM)Extensible Key Management (EKM)

適用対象: ○SQL Server XAzure SQL Database XAzure SQL Data Warehouse XParallel Data WarehouseAPPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

SQL ServerSQL Server には、 拡張キー管理 (EKM) を含むデータ暗号化機能が用意されています。暗号化とキーの生成には Microsoft Cryptographic API (MSCAPI) が使用されます。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 仮想マシンで SQL ServerSQL Server を実行している場合、 SQL ServerSQL Server は、 Azure Key Vaultに格納されたキーを使用できます。When running SQL ServerSQL Server in an Azure VM, SQL ServerSQL Server can use keys stored in the Azure Key Vault. 詳細については、「 Azure Key Vault を使用する拡張キー管理 (SQL Server)で処理できるようになります。For more information, see Extensible Key Management Using Azure Key Vault (SQL Server).

EKM の構成EKM Configuration

拡張キー管理は MicrosoftMicrosoftSQL ServerSQL Serverのすべてのエディションでサポートされているわけではありません。Extensible Key Management is not available in every edition of MicrosoftMicrosoftSQL 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 でこのオプションを使用して sp_configure コマンドを実行すると、エラーが表示されます。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.

注意事項

トラブルシューティングの際には、EKM プロバイダーから取得した暗号化キーを MicrosoftMicrosoft テクニカル サポートに提供する必要性や、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に公開する認証の種類は 1 つだけです。したがって、モジュールで基本認証とその他の認証方法がサポートされている場合、公開されるのはいずれか一方だけで、両方は公開されません。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

SQL ServerSQL Server では、ユーザー名/パスワードのペアを使用する基本認証をサポートしている EKM モジュールで、資格情報による透過的な認証を利用できます。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. 資格情報の [識別] フィールドにユーザー名を含め、 [シークレット] フィールドに 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 プロバイダーに対して使用される資格情報であれば、1 つのログインに複数の資格情報をマップできます。A login can have multiple credentials mapped to it, as long as they are used for distinctive EKM providers. マップされた資格情報は、各ログインで各 EKM プロバイダーにつき 1 つだけ存在する必要があります。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 の使用による TDE の有効化Enable TDE on SQL Server Using EKM

Azure Key Vault を使用する拡張キー管理 (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
2 台のサーバーでの同じ対称キーの作成Create Identical Symmetric Keys on Two Servers