はじめに
先日、SQL Server2019を使ってデータベースを暗号化する作業を実施しました。備忘録を兼ねて簡単に手順をまとめておきます。
前提
- SQL Server 2019がインストールされていること
- SQL Server Management Studio 18がインストールされていること
- サンプルデータベースを使っていること
手順
データベースを master に切り替える
USE master;
GO
マスターキーを作成する
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'p@ssw0rd';
go
p@ssw0rd:マスターキーの暗号化に使用するパスワードです。任意に設定して下さい。
証明書を作成する
CREATE CERTIFICATE MyServerCert WITH SUBJECT = 'My DEK Certificate';
go
MyServerCert:証明書の名前です。任意に設定して下さい。
My DEK Certificate:サブジェクト名です。任意に設定して下さい。
証明書と秘密キーのバックアップ
BACKUP CERTIFICATE MyServerCert
TO FILE = 'C:\temp\MyServerCert'
WITH PRIVATE KEY
( FILE = 'C:\temp\MyPrivKey'
, ENCRYPTION BY PASSWORD = 'P@ssw0rd' )
MyServerCert:証明書の名前です。「証明書を作成する」で設定した値と合わせて下さい。
MyPrivKey:秘密キーを保存するファイル名です。任意に設定して下さい。
P@ssw0rd:保存する秘密キーを暗号化するためのパスワードです。
暗号化するデータベースに切り替える
USE AdventureWorks2019;
GO
証明書を使用してデータベース暗号化キーを作成する
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE MyServerCert;
GO
MyServerCert:証明書の名前です。「証明書を作成する」で設定した値と合わせて下さい。
透過的なデータ暗号化を有効化する
ALTER DATABASE AdventureWorks2019
SET ENCRYPTION ON;
GO
証明書と秘密キーのリストア
CREATE MASTER KEY ENCRYPTION
BY PASSWORD = 'StrongPassword>'
go
-- サーバー証明書のリストア(インポート)
CREATE CERTIFICATE MyServerCert
FROM FILE = 'C:\temp\MyServerCert'
WITH PRIVATE KEY
( FILE = 'C:\temp\MyPrivKey'
, DECRYPTION BY PASSWORD = 'P@ssw0rd' )
コメント