次の方法で共有


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
    
  2. 次のステートメントを実行して EKM プロバイダを有効にします。

    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
    
    注意注意

    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
    
  2. 次のステートメントを実行して、高い特権を持つユーザー ([DOMAIN\login] 形式の独自のドメイン ログインなど) にシステム管理者の資格情報を追加します。

    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
    
    注意注意

    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 ;
    
  2. 次のステートメントを実行して、TDE で使用されるログインを追加し、このログインに新しい資格情報を追加します。

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

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

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

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

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

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

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

    ALTER DATABASE AdventureWorks 
    SET ENCRYPTION ON ;
    GO
    

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

セキュリティ

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

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

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

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

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

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