拡張キー管理 (EKM)

適用対象:SQL Server

SQL Server には、 拡張キー管理 (EKM) を含むデータ暗号化機能が用意されています。暗号化とキーの生成には Microsoft Cryptographic API (MSCAPI) が使用されます。 データとキーの暗号化のための暗号化キーは一時的なキー コンテナーに作成され、それらをデータベースに格納するには、まずプロバイダーからエクスポートする必要があります。 SQL Server ではこの方法により、暗号化キー階層とキーのバックアップを含むキー管理を処理できます。

法規制遵守の必要性やデータ プライバシーに対する関心の高まりを受けて、組織では、"多層防御" のソリューションを実現するための手段として暗号化が活用されるようになっています。 このアプローチは多くの場合、データベースの暗号化管理ツールを使用するだけで実現できるものではありません。 各ハードウェア ベンダーからは、 ハードウェア セキュリティ モジュール (HSM) を使用して企業のキー管理の問題に対処する製品が提供されています。 HSM デバイスでは、暗号化キーがハードウェア モジュールまたはソフトウェア モジュールに格納されます。 この場合、暗号化キーが暗号化データと一緒に保管されないため、より安全なソリューションが実現されます。

多くのベンダーにより、キー管理と暗号化アクセラレーションの両方に対応する HSM が提供されています。 HSM デバイスでは、アプリケーションと HSM の仲介として、サーバー プロセスとのハードウェア インターフェイスが使用されます。 また、モジュール上に MSCAPI プロバイダー (ハードウェアの場合もあればソフトウェアの場合もあります) が実装されています。 MSCAPI では、多くの場合、HSM でサポートされている機能の一部しかサポートされません。 その他、HSM、キーの構成、およびキーへのアクセスのための管理ソフトウェアが用意されている場合もあります。

HSM の実装はベンダーによって異なるため、SQL Server でそれらを使用するには、共通のインターフェイスが必要です。 このインターフェイスを提供するのが MSCAPI ですが、HSM の機能の一部しかサポートされません。 MSCAPI には、これ以外にも、対称キーをネイティブのまま永続化できない、セッション指向の通信がサポートされていないなどの制限があります。

SQL Server の拡張キー管理では、サードパーティの EKM/HSM ベンダーがそれぞれのモジュールを SQL Server に登録できます。 登録すると、SQL Server ユーザーは EKM モジュールに格納されている暗号化キーを使用できるようになります。 これにより、それらのモジュールでサポートされている一括暗号化/暗号化解除などの高度な暗号化機能や、キー エージングやキー ローテーションなどのキー管理機能を SQL Server から利用できます。

Azure 仮想マシンで SQL Server を実行している場合、SQL Server は、 Azure Key Vault に格納されたキーを使用できます。 詳細については、「Azure Key Vault を使用する拡張キー管理 (SQL Server)」を参照してください。

EKM の構成

拡張キー管理は Microsoft SQL Server のすべてのエディションでサポートされているわけではありません。 SQL Serverの各エディションでサポートされる機能の一覧については、「 SQL Server 2016 の各エディションがサポートする機能」を参照してください。

既定では、拡張キー管理は無効です。 この機能を有効にするには、次のオプションと値を使用して sp_configure コマンドを実行します。

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

注意

EKM をサポートしていないエディションの SQL Server でこのオプションを使用して sp_configure コマンドを実行すると、エラーが表示されます。

この機能を無効にするには、値を 0 に設定します。 サーバー オプションの設定方法については、「sp_configure (Transact-SQL)」を参照してください。

EKM を使用する方法

SQL Server 拡張キー管理を使用すると、データベース ファイルを保護する暗号化キーを、スマート カード、USB デバイス、EKM/HSM モジュールなどの外部デバイスに保存できます。 これにより、データベース管理者 (sysadmin グループのメンバーを除く) からのデータの保護も実現され、 そのデータベース ユーザー以外はアクセスできない外部 EKM/HSM モジュール上の暗号化キーを使用してデータを暗号化できます。

拡張キー管理にはその他、次のような利点があります。

  • 追加の承認チェック (職務の分離の実現)。

  • ハードウェア ベースの暗号化/暗号化解除のパフォーマンスの向上。

  • 外部での暗号化キーの生成。

  • 外部での暗号化キーの格納 (データとキーの物理的な分離)。

  • 暗号化キーの取得。

  • 外部での暗号化キーの保持 (暗号化キーのローテーションの実現)。

  • 暗号化キーのより簡単な復元。

  • 暗号化キーの管理可能な配布。

  • 暗号化キーの安全な破棄。

拡張キー管理は、ユーザー名とパスワードの組み合わせに対して使用することも、EKM ドライバーで定義されたその他の方法に対して使用することもできます。

注意

トラブルシューティングの際には、EKM プロバイダーから取得した暗号化キーを Microsoft テクニカル サポートに提供する必要がある場合があります。 問題を解決するためにベンダーのツールやプロセスにアクセスする必要性が生じる場合もあります。

EKM デバイスによる認証

EKM モジュールでは複数の種類の認証をサポートできますが、 各プロバイダーが SQL Server に公開する認証の種類は 1 つだけです。そのため、モジュールで Basic 認証とその他の認証方法がサポートされている場合、公開されるのはいずれか一方だけで、両方は公開されません。

ユーザー名/パスワードを使用する EKM デバイス固有の基本認証

SQL Server では、ユーザー名/パスワード のペアを使用する基本認証をサポートしている EKM モジュールで、資格情報による透過的な認証を利用できます。 資格情報の詳細については、「資格情報 (データベース エンジン)」を参照してください。

EKM プロバイダーに対して資格情報を作成し、それをログイン (Windows アカウントと SQL Server アカウントの両方) にマップすることにより、ログインごとに EKM モジュールにアクセスできます。 資格情報の [ID] フィールドにはユーザー名が含まれ、[シークレット] フィールドには EKM モジュールに接続するためのパスワードが含まれます。

ログインにマップされた EKM プロバイダーの資格情報がない場合は、SQL Server サービス アカウントにマップされた資格情報が使用されます。

それぞれが異なる EKM プロバイダーに対して使用される資格情報であれば、1 つのログインに複数の資格情報をマップできます。 マップされた資格情報は、各ログインで各 EKM プロバイダーにつき 1 つだけ存在する必要があります。 同じ資格情報を他のログインにマップすることはできます。

その他の種類の EKM デバイス固有の認証

Windows 認証や ユーザー/パスワードの組み合わせの認証以外を使用する EKM モジュールに対しては、SQL Server とは別に認証を行う必要があります。

EKM デバイスによる暗号化および暗号化解除

対称キーと非対称キーを使用してデータを暗号化および暗号化解除するには、以下の関数と機能を使用できます。

関数または機能 関連項目
対称キー暗号化 CREATE SYMMETRIC KEY (Transact-SQL)
非対称キー暗号化 CREATE ASYMMETRIC KEY (Transact-SQL)
EncryptByKey(key_guid, 'cleartext', ...) ENCRYPTBYKEY (Transact-SQL)
DecryptByKey(ciphertext, ...) DECRYPTBYKEY (Transact-SQL)
EncryptByAsmKey(key_guid, 'cleartext') ENCRYPTBYASYMKEY (Transact-SQL)
DecryptByAsmKey(ciphertext) DECRYPTBYASYMKEY (Transact-SQL)

EKM キーによるデータベース キーの暗号化

SQL Server では、EKM キーを使用してデータベースのその他のキーを暗号化できます。 EKM デバイスで対称キーと非対称キーの両方を作成および使用できます。 EKM 非対称キーを使用してネイティブ (EKM 以外) の対称キーを暗号化することができます。

次の例では、データベースの対称キーを作成し、それを EKM モジュールのキーを使用して暗号化しています。

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 Server におけるデータベースとサーバー キーの詳細については、「SQL Server とデータベースの暗号化キー (データベース エンジン)」を参照してください。

注意

別の EKM キーを使用して EKM キーを暗号化することはできません。

SQL Server では、EKM プロバイダーから生成された非対称キーを使用してモジュールに署名することをサポートしていません。

EKM provider enabled サーバー構成オプション

EKM の使用による TDE の有効化

Azure Key Vault を使用する拡張キー管理 (SQL Server)

参照

CREATE CRYPTOGRAPHIC PROVIDER (Transact-SQL)
DROP CRYPTOGRAPHIC PROVIDER (Transact-SQL)
ALTER CRYPTOGRAPHIC PROVIDER (Transact-SQL)
sys.cryptographic_providers (Transact-SQL)
sys.dm_cryptographic_provider_sessions (Transact-SQL)
sys.dm_cryptographic_provider_properties (Transact-SQL)
sys.dm_cryptographic_provider_algorithms (Transact-SQL)
sys.dm_cryptographic_provider_keys (Transact-SQL)
sys.credentials (Transact-SQL)
CREATE CREDENTIAL (Transact-SQL)
ALTER LOGIN (Transact-SQL)
CREATE ASYMMETRIC KEY (Transact-SQL)
ALTER ASYMMETRIC KEY (Transact-SQL)
DROP ASYMMETRIC KEY (Transact-SQL)
CREATE SYMMETRIC KEY (Transact-SQL)
ALTER SYMMETRIC KEY (Transact-SQL)
DROP SYMMETRIC KEY (Transact-SQL)
OPEN SYMMETRIC KEY (Transact-SQL)
Reporting Services の暗号化キーのバックアップと復元
暗号化キーの削除と再作成 (SSRS 構成マネージャー)
スケールアウト配置に関する暗号化キーの追加と削除 (SSRS 構成マネージャー)
サービス マスター キーのバックアップ
サービス マスター キーの復元
データベース マスター キーの作成
データベース マスター キーのバックアップ
データベース マスター キーの復元
2 台のサーバーでの同じ対称キーの作成