web-dev-qa-db-ja.com

TDEはデータベースを暗号化できません

SQLデータベースを暗号化するために、次のコマンドを実行します。

CREATE CERTIFICATE <certname> ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>'
WITH SUBJECT = 'certificate subject', EXPIRY_DATE = '20291031';
go

USE <databasetoencrypt>;
GO

CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE <certname>;
GO

CREATE DATABASE ENCRYPTION KEYコマンドを実行しようとすると、次のメッセージが表示され、何をすべきかわかりません。

証明書 'name'を使用できません。プライベートキーが存在しないか、データベースマスターキーによって保護されていないためです。 SQL Serverでは、この操作に使用される証明書の秘密キーに自動的にアクセスする機能が必要です。

ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>'コマンドの実行中にCREATE CERTIFICATEを省略しても機能します。ただし、パスワードで保護された証明書を作成する必要があります。

何か考えはありますか?!ありがとうございました。

3
Markus Bosch

SQL Serverはデータベースを開くことができないため、パスワードで保護された証明書を作成し、その証明書を使用してTDE経由でデータベースを暗号化することはできません。

から Microsoft Docs

透過的データ暗号化(TDE)は、データベース暗号化キーと呼ばれる対称キーを使用する必要があります。これは、マスターデータベースのデータベースマスターキーで保護された証明書、またはEKMに保存された非対称キーで保護されています。

TDEを使​​用してデータベースを暗号化する手順:

  1. マスターキーを作成する

  2. マスターキーで保護された証明書を作成または取得する

  3. データベース暗号化キーを作成し、証明書で保護します

  4. 暗号化を使用するようにデータベースを設定する

TDEのMicrosoft Docsページ から取得した上記の例:

USE master;  
GO  
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>';  
go  
CREATE CERTIFICATE MyServerCert WITH SUBJECT = 'My DEK Certificate';  
go  
USE AdventureWorks2012;  
GO  
CREATE DATABASE ENCRYPTION KEY  
WITH ALGORITHM = AES_128  
ENCRYPTION BY SERVER CERTIFICATE MyServerCert;  
GO  
ALTER DATABASE AdventureWorks2012  
SET ENCRYPTION ON;  
GO  

そのページはこれも言っています:

TDE証明書は、次のステートメントで受け入れられるように、データベースマスターキーで暗号化する必要があります。パスワードのみで暗号化されている場合、ステートメントはそれらを暗号化として拒否します。

    CREATE DATABASE ENCRYPTION KEY
    ALTER DATABASE ENCRYPTION KEY
    DROP DATABASE ENCRYPTION KEY

証明書をTDEで使用した後にパスワードで保護するように変更すると、再起動後にデータベースにアクセスできなくなります。

7
Max Vernon