CREATE CRYPTOGRAPHIC PROVIDER (Transact-SQL)

適用対象: SQL ServerAzure SQL Managed Instance

SQL Server 内で、拡張キー管理 (EKM: Extensible Key Management) プロバイダーから暗号化サービス プロバイダーを作成します。

Transact-SQL 構文表記規則

構文

CREATE CRYPTOGRAPHIC PROVIDER provider_name   
    FROM FILE = path_of_DLL  

Note

SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

provider_name
拡張キー管理プロバイダーの名前を指定します。

path_of_DLL
SQL Server 拡張キー管理インターフェイスを実装する .dll ファイルのパスを指定します。 SQL Server コネクタ for Microsoft Azure Key Vault を使うときの既定の場所は、 'C:\Program Files\SQL Server Connector for Microsoft Azure Key Vault\Microsoft.AzureKeyVaultService.EKM.dll' です。

解説

プロバイダーによって作成されるキーはいずれも、プロバイダーをその GUID で参照します。 GUID は、DLL のすべてのバージョン間で保持されます。

SQLEKM インターフェイスを実装する DLL は、任意の証明書を使用して、デジタル署名する必要があります。 この署名は SQL Server によって検証されます。 これにはその証明書チェーンも含まれます。証明書チェーンのルートは、Windows システムの信頼されたルート証明機関がある場所にインストールされている必要があります。 署名が正しく検証されなかった場合は、CREATE CRYPTOGRAPHIC PROVIDER ステートメントが失敗します。 証明書と証明書チェーンについて詳しくは、「SQL Server の証明書と非対称キー」をご覧ください。

EKM プロバイダーの dll で必要なメソッドの一部が実装されなかった場合は、CREATE CRYPTOGRAPHIC PROVIDER から次のエラー 33085 が返されることがあります。

One or more methods cannot be found in cryptographic provider library '%.*ls'.

EKM プロバイダーの dll の作成に使用されたヘッダー ファイルが古い場合は、CREATE CRYPTOGRAPHIC PROVIDER から次のエラー 33032 が返されることがあります。

SQL Crypto API version '%02d.%02d' implemented by provider is not supported. Supported version is '%02d.%02d'.

アクセス許可

CONTROL SERVER 権限、または sysadmin 固定サーバー ロールのメンバーシップが必要です。

次の例では、SQL Server で .dll ファイルから SecurityProvider という暗号化サービス プロバイダーを作成します。 この .dll ファイルは c:\SecurityProvider\SecurityProvider_v1.dll という名前でサーバーにインストールされています。 最初にプロバイダーの証明書をサーバーにインストールする必要があります。

-- Install the provider  
CREATE CRYPTOGRAPHIC PROVIDER SecurityProvider  
    FROM FILE = 'C:\SecurityProvider\SecurityProvider_v1.dll';  

参照

拡張キー管理 (EKM)
ALTER CRYPTOGRAPHIC PROVIDER (Transact-SQL)
DROP CRYPTOGRAPHIC PROVIDER (Transact-SQL)
CREATE SYMMETRIC KEY (Transact-SQL)
Azure Key Vault を使用する拡張キー管理 (SQL Server)
Azure Key Vault を使用した SQL Server TDE 拡張キー管理を設定する
sys.cryptographic_providers
sys.dm_cryptographic_provider_properties