このトピックでは、SQL Server 2014 で Transparent Data Encryption (TDE) を有効にして、Transact-SQL で拡張キー管理 (EKM) モジュールに格納されている非対称キーを使用してデータベース暗号化キーを保護する方法について説明します。
TDE は、データベース暗号化キーと呼ばれる対称キーを使用して、データベース全体のストレージを暗号化します。 データベース暗号化キーは、マスター データベースのデータベース マスター キーによって保護されている証明書を使用して保護することもできます。 データベース マスター キーを使用したデータベース暗号化キーの保護の詳細については、「 Transparent Data Encryption (TDE)」を参照してください。 SQL Server が Azure VM で実行されているときに TDE を構成する方法については、「Azure Key Vault を使用した拡張キー管理 (SQL Server)」を参照してください。
このトピックについて
開始する前に
制限事項と制約条件
データベース暗号化キーを作成し、データベースを暗号化するには、高い特権を持つユーザー (システム管理者など) である必要があります。 このユーザーは、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 権限が必要です。
Transact-SQL の使用
EKM を使用して TDE を有効にするには
EKM プロバイダーから提供されたファイルを SQL Server コンピューター上の適切な場所にコピーします。 この例では、 C:\EKM フォルダーを使用します。
EKM プロバイダーの必要に応じて、コンピューターに証明書をインストールします。
注
SQL Server は EKM プロバイダーを提供していません。 EKM プロバイダーごとに、ユーザーのインストール、構成、および承認のための異なる手順を使用できます。 この手順を完了するには、EKM プロバイダーのドキュメントを参照してください。
オブジェクト エクスプローラーで、 データベース エンジンのインスタンスに接続します。
標準バーで [新しいクエリ] をクリックします。
次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] をクリックします。
-- 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 credential to a high privileged user such as your -- own domain login in the format [DOMAIN\login]. ALTER LOGIN Contoso\Mary 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
詳細については以下をご覧ください: