EKM を使用して TDE を有効にする方法

透過的なデータ暗号化 (TDE) では、データベース全体のストレージを暗号化します。TDE では、データベース暗号化キーという対称キーを使用してデータを暗号化します。このトピックでは、拡張キー管理 (EKM) モジュールに格納されている非対称キーを使用してデータベース暗号化キーを保護する方法について説明します。

データベース暗号化キーは、master データベースのデータベース マスター キーによって保護される証明書を使用して保護することもできます。データベース マスター キーを使用してデータベース暗号化キーを保護する方法の詳細については、「透過的なデータ暗号化 (TDE) について」を参照してください。

EKM を使用して TDE を有効にするための基本手順を次に示します。

  1. EKM プロバイダーをインストールします。この手順は EKM プロバイダーの要件に応じて異なりますが、ローカルの証明書ストアに EKM プロバイダーの証明書をインストールする作業と、SQL Server コンピューターに EKM DLL ファイルをコピーする作業が必要になる場合があります。

  2. EKM プロバイダーを使用するように SQL Server を構成します。

  3. EKM モジュールで基本認証を使用する場合は、資格情報を作成してユーザーに追加します。

  4. EKM プロバイダーによって保護される非対称キーを作成します。

  5. EKM モジュールで基本認証を使用する場合は、非対称キーによって保護され、データベース エンジンで使用される資格情報を作成します。

  6. 対称データベース暗号化キーを作成します。

  7. データベース暗号化キーを使用して TDE を有効にします。

このトピックの手順を完了するには、SQL Server Management Studio のクエリ エディター ウィンドウを使用して SQL Server に接続します。

暗号化サービス プロバイダーをインストールおよび構成するには

  1. EKM プロバイダーによって提供されるファイルを SQL Server コンピューターの適切な場所にコピーします。この例では、C:\EKM フォルダーを使用します。

  2. EKM プロバイダーの要件に従ってコンピューターに証明書をインストールします。

    注意

    SQL Server には、EKM プロバイダーは用意されていません。EKM プロバイダーごとに、インストール、構成、およびユーザー承認の手順が異なります。この手順を完了するには、EKM プロバイダーのドキュメントを参照してください。

EKM プロバイダーを使用するように SQL Server を構成して SQL Server にプロバイダーを作成するには

  1. EKM プロバイダーの有効化は拡張オプションです。まず、次のステートメントを実行して拡張オプションを表示します。

    sp_configure 'show advanced options', 1 ;
    GO
    RECONFIGURE ;
    GO
    
    sp_configure 'show advanced options', 1 ;
    GO
    RECONFIGURE ;
    GO
    
  2. 次のステートメントを実行して EKM プロバイダーを有効にします。

    sp_configure 'EKM provider enabled', 1 ;
    GO
    RECONFIGURE ;
    GO
    
    sp_configure 'EKM provider enabled', 1 ;
    GO
    RECONFIGURE ;
    GO
    
  3. 次のステートメントを実行して、EKM プロバイダーに基づいて選択した EKM_Prov という名前の暗号化サービス プロバイダーを作成します。

    CREATE CRYPTOGRAPHIC PROVIDER EKM_Prov 
    FROM FILE = 'C:\EKM_Files\KeyProvFile.dll' ;
    GO
    
    CREATE CRYPTOGRAPHIC PROVIDER EKM_Prov 
    FROM FILE = 'C:\EKM_Files\KeyProvFile.dll' ;
    GO
    
    注意

    EKM DLL はデジタル署名されている必要があります。

データベースの暗号化に使用される資格情報の作成

データベース暗号化キーの作成およびデータベースの暗号化は、高い特権を持つユーザー (システム管理者など) が行う必要があります。このユーザーは、EKM モジュールが認証できるユーザーである必要があります。次の手順では、EKM ID を使用する資格情報を作成し、高い特権を持つユーザーにその資格情報を追加します。次の手順は、EKM モジュールが Identity1 という名前のユーザーを認証できることが前提となっています。例に示すアスタリスクの代わりにパスワードを指定する必要があります。これらの手順は、EKM プロバイダーで基本認証を使用する場合に必要となります。EKM モジュールで他の認証を使用する場合は、このセクションの手順を省略できます。

資格情報を作成して高い特権を持つユーザーのログインに追加するには

  1. 次のステートメントを実行して、システム管理者が使用する資格情報を作成します。

    CREATE CREDENTIAL sa_ekm_tde_cred 
    WITH IDENTITY = 'Identity1', 
    SECRET = '*************' 
    FOR CRYPTOGRAPHIC PROVIDER EKM_Prov ;
    GO
    
    CREATE CREDENTIAL sa_ekm_tde_cred 
    WITH IDENTITY = 'Identity1', 
    SECRET = '*************' 
    FOR CRYPTOGRAPHIC PROVIDER EKM_Prov ;
    GO
    
  2. 次のステートメントを実行して、高い特権を持つユーザー ([DOMAIN\login] 形式の独自のドメイン ログインなど) にシステム管理者の資格情報を追加します。

    ALTER LOGIN [DOMAIN\login]
    ADD CREDENTIAL sa_ekm_tde_cred ;
    GO
    
    ALTER LOGIN [DOMAIN\login]
    ADD CREDENTIAL sa_ekm_tde_cred ;
    GO
    

非対称キーの作成

データベース暗号化キーへのアクセスを保護する非対称キーを作成します。このキーは、SQL Server がデータベース暗号化キーにアクセスする際に使用されます。

データベース暗号化キーを作成するには

  • 次のステートメントを実行して、EKM プロバイダーの内部に格納される非対称キーを作成します。この例では、SQL Server は ekm_login_key という名前でキーを識別します。EKM デバイス内では、このキーの名前は SQL_Server_Key になります。

    注意

    EKM プロバイダーで必要とされるオプションとパラメーターは、このステートメントとは異なる場合があります。詳細については、EKM プロバイダーを参照してください。

    USE master ;
    GO
    CREATE ASYMMETRIC KEY ekm_login_key 
    FROM PROVIDER [EKM_Prov]
    WITH ALGORITHM = RSA_512,
    PROVIDER_KEY_NAME = 'SQL_Server_Key' ;
    GO
    
    USE master ;
    GO
    CREATE ASYMMETRIC KEY ekm_login_key 
    FROM PROVIDER [EKM_Prov]
    WITH ALGORITHM = RSA_512,
    PROVIDER_KEY_NAME = 'SQL_Server_Key' ;
    GO
    
    注意

    EKM モジュールに格納されている非対称キーが失われている場合、SQL Server はデータベースを開くことができません。EKM プロバイダーを使用して非対称キーをバックアップできる場合は、バックアップを作成して安全な場所に保存しておく必要があります。

データベース エンジンで使用される資格情報の作成

データベース エンジンは、起動時にデータベースを開く必要があります。次の手順では、EKM によって認証される資格情報を作成し、非対称キーに基づくログインにその資格情報を追加します。ユーザーがこのログインを使用してログインすることはできませんが、データベース エンジンは EKM デバイスで自身を認証することができます。次の手順は、EKM モジュールが Identity2 という名前のユーザーを認証できることが前提となっています。例に示すアスタリスクの代わりにパスワードを指定する必要があります。これらの手順は、EKM プロバイダーで基本認証を使用する場合に必要となります。EKM モジュールで他の認証を使用する場合は、このセクションの手順を省略できます。

資格情報を作成してログインに追加するには

  1. 次のステートメントを実行して、データベース エンジンで使用される資格情報を作成します。

    CREATE CREDENTIAL ekm_tde_cred 
    WITH IDENTITY = 'Identity2' 
    , SECRET = '*************' 
    FOR CRYPTOGRAPHIC PROVIDER EKM_Prov ;
    
    CREATE CREDENTIAL ekm_tde_cred 
    WITH IDENTITY = 'Identity2' 
    , SECRET = '*************' 
    FOR CRYPTOGRAPHIC PROVIDER EKM_Prov ;
    
  2. 次のステートメントを実行して、TDE で使用されるログインを追加し、このログインに新しい資格情報を追加します。

    CREATE LOGIN EKM_Login 
    FROM ASYMMETRIC KEY ekm_login_key ;
    GO
    
    ALTER LOGIN EKM_Login 
    ADD CREDENTIAL ekm_tde_cred ;
    GO
    
    CREATE LOGIN EKM_Login 
    FROM ASYMMETRIC KEY ekm_login_key ;
    GO
    
    ALTER LOGIN EKM_Login 
    ADD CREDENTIAL ekm_tde_cred ;
    GO
    

データベース暗号化キーの作成

データベース暗号化キーは対称キーです。master データベースにデータベース暗号化キーを作成します。

データベース暗号化キーを作成するには

  1. 暗号化するデータベースに切り替えます。

    USE AdventureWorks2008R2 ;
    GO
    
    USE AdventureWorks2008R2 ;
    GO
    
  2. 次のステートメントを実行して、TDE で使用されるデータベース暗号化キーを作成します。

    CREATE DATABASE ENCRYPTION KEY
    WITH ALGORITHM  = AES_128
    ENCRYPTION BY SERVER ASYMMETRIC KEY ekm_login_key ;
    GO
    
    CREATE DATABASE ENCRYPTION KEY
    WITH ALGORITHM  = AES_128
    ENCRYPTION BY SERVER ASYMMETRIC KEY ekm_login_key ;
    GO
    
  3. 次のコードを実行して、透過的なデータ暗号化が有効になるようにデータベースを変更します。

    ALTER DATABASE AdventureWorks2008R2 
    SET ENCRYPTION ON ;
    GO
    
    ALTER DATABASE AdventureWorks2008R2 
    SET ENCRYPTION ON ;
    GO
    

    これで、データベースが暗号化された形式で格納されるようになります。

セキュリティ

このトピックでは、次の権限を使用します。

  • 構成オプションを変更して RECONFIGURE ステートメントを実行するには、ALTER SETTINGS サーバーレベル権限が与えられている必要があります。ALTER SETTINGS 権限は、sysadmin 固定サーバー ロールと serveradmin 固定サーバー ロールでは暗黙のうちに付与されています。

  • ALTER ANY CREDENTIAL 権限が必要です。

  • ALTER ANY LOGIN 権限が必要です。

  • CREATE ASYMMETRIC KEY 権限が必要です。

  • データベースを暗号化するには、データベースに対する CONTROL 権限が必要です。