拡張キー管理 (EKM)
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に登録できます。 登録すると、その EKM モジュールに格納されている暗号化キーを SQL Server ユーザーが使用できるようになります。 これにより、それらのモジュールでサポートされている一括暗号化/暗号化解除などの高度な暗号化機能や、キー エージングやキー ローテーションなどのキー管理機能を SQL Server から利用できます。
Azure 仮想マシンで SQL Server を実行している場合、 SQL Server は、 Azure Key Vaultに格納されたキーを使用できます。 詳細については、「Azure Key Vault を使用する拡張キー管理 (SQL Server)」を参照してください。
EKM の構成
拡張キー管理は MicrosoftSQL Serverのすべてのエディションでサポートされているわけではありません。 SQL Serverの各エディションでサポートされている機能の一覧については、「SQL Server 2014 の各エディションでサポートされる機能」を参照してください。
既定では、拡張キー管理は無効です。 この機能を有効にするには、次のオプションと値を使用して sp_configure コマンドを実行します。
sp_configure 'show advanced', 1
GO
RECONFIGURE
GO
sp_configure 'EKM provider enabled', 1
GO
RECONFIGURE
GO
Note
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 つだけです。したがって、モジュールで基本認証とその他の認証方法がサポートされている場合、公開されるのはいずれか一方だけで、両方は公開されません。
ユーザー名/パスワードを使用する EKM デバイス固有の基本認証
SQL Server では、ユーザー名/パスワードのペアを使用する基本認証をサポートしている EKM モジュールで、資格情報による透過的な認証を利用できます。 資格情報の詳細については、「 資格情報 (データベース エンジン)」を参照してください。
EKM プロバイダーに対して資格情報を作成し、それをログイン (Windows アカウントと SQL Server アカウントの両方) にマップすることにより、ログインごとに EKM モジュールにアクセスできます。 資格情報の [識別] フィールドにユーザー名を含め、 [シークレット] フィールドに 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とデータベース暗号化キー (データベース エンジン)」を参照してください。
Note
別の EKM キーを使用して EKM キーを暗号化することはできません。
SQL Server では、EKM プロバイダーから生成された非対称キーを使用してモジュールに署名することをサポートしていません。
Related Tasks
EKM provider enabled サーバー構成オプション
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 Configuration Manager)
スケールアウト配置に関する暗号化キーの追加と削除 (SSRS 構成マネージャー)
サービス マスター キーのバックアップ
サービス マスター キーの復元
データベース マスター キーの作成
データベース マスター キーのバックアップ
データベース マスター キーの復元
2 台のサーバーでの同じ対称キーの作成