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

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

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

このトピックの内容

  • 作業を開始する準備:

    制限事項と制約事項

    セキュリティ

  • Transact-SQL を使用して、EKM による TDE を可能にするには

作業を開始する準備

制限事項と制約事項

  • データベース暗号化キーの作成およびデータベースの暗号化は、高い特権を持つユーザー (システム管理者など) が行う必要があります。 このユーザーは、EKM モジュールが認証できるユーザーである必要があります。

  • データベース エンジンは、起動時にデータベースを開く必要があります。 これを行うには、EKM によって認証される資格情報を作成し、非対称キーに基づくログインにその資格情報を追加する必要があります。 ユーザーがこのログインを使用してログインすることはできませんが、データベース エンジンは EKM デバイスで自身を認証することができます。

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

  • EKM プロバイダーによって要求されるオプションとパラメーターは、次のコード例に含まれるものとは異なっている場合があります。 詳細については、EKM プロバイダーを参照してください。

セキュリティ

権限

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

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

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

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

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

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

[トップに戻る] リンクで使用される矢印アイコン[Top]

Transact-SQL の使用

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

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

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

    注意

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

  3. オブジェクト エクスプローラーで、データベース エンジンのインスタンスに接続します。

  4. [標準] ツール バーの [新しいクエリ] をクリックします。

  5. 次の例をコピーしてクエリ ウィンドウに貼り付け、[実行] をクリックします。

    -- Enable advanced options.
    sp_configure 'show advanced options', 1 ;
    GO
    RECONFIGURE ;
    GO
    -- Enable EKM provider
    sp_configure 'EKM provider enabled', 1 ;
    GO
    RECONFIGURE ;
    GO
    -- Create a cryptographic provider, which we have chosen to call "EKM_Prov," based on an EKM provider
    
    CREATE CRYPTOGRAPHIC PROVIDER EKM_Prov 
    FROM FILE = 'C:\EKM_Files\KeyProvFile.dll' ;
    GO
    
    -- Create a credential that will be used by system administrators.
    CREATE CREDENTIAL sa_ekm_tde_cred 
    WITH IDENTITY = 'Identity1', 
    SECRET = 'q*gtev$0u#D1v' 
    FOR CRYPTOGRAPHIC PROVIDER EKM_Prov ;
    GO
    
    -- Add the system administrator credential to a high privileged user such as your own domain login in the format  [DOMAIN\login].
    ALTER LOGIN UCBERKELEY\shcooper
    ADD CREDENTIAL sa_ekm_tde_cred ;
    GO
    -- create an asymmetric key stored inside the EKM provider
    USE master ;
    GO
    CREATE ASYMMETRIC KEY ekm_login_key 
    FROM PROVIDER [EKM_Prov]
    WITH ALGORITHM = RSA_512,
    PROVIDER_KEY_NAME = 'SQL_Server_Key' ;
    GO
    
    -- Create a credential that will be used by the Database Engine.
    CREATE CREDENTIAL ekm_tde_cred 
    WITH IDENTITY = 'Identity2' 
    , SECRET = 'jeksi84&sLksi01@s' 
    FOR CRYPTOGRAPHIC PROVIDER EKM_Prov ;
    
    -- Add a login used by TDE, and add the new credential to the login.
    CREATE LOGIN EKM_Login 
    FROM ASYMMETRIC KEY ekm_login_key ;
    GO
    ALTER LOGIN EKM_Login 
    ADD CREDENTIAL ekm_tde_cred ;
    GO
    
    -- Create the database encryption key that will be used for TDE.
    USE AdventureWorks2012 ;
    GO
    CREATE DATABASE ENCRYPTION KEY
    WITH ALGORITHM  = AES_128
    ENCRYPTION BY SERVER ASYMMETRIC KEY ekm_login_key ;
    GO
    
    -- Alter the database to enable transparent data encryption.
    ALTER DATABASE AdventureWorks2012 
    SET ENCRYPTION ON ;
    GO
    

詳細については、以下を参照してください。

[トップに戻る] リンクで使用される矢印アイコン[Top]

関連項目

概念

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