SQL Server Always On 構成のデータベース暗号化方法をメモします。
Always On 構成の場合のデータベースは、同期が行われているので以下の方法でそれぞれ暗号化が必要になります。
AlwaysOnデータベース暗号化方法
AlwaysOnで構成されたデータベースの暗号化順序と方法について
1.プライマリレプリカでマスターキーと証明書の作成
まずはプライマリレプリカ側でマスターキーを作成します。
USE master ; GO CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'encrypted_Passw0rd_<データベース名>'; GO
次に作成したマスターキーを元に証明書を作成します。
CREATE CERTIFICATE SQLServerCert_<データベース名> WITH SUBJECT = 'Certificate to protect TDE key' GO
2. プライマリレプリカで証明書のバックアップ
この段階で作成した証明書のバックアップを取得します。
※デフォルトのバックアップ先フォルダ
[C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA]
BACKUP CERTIFICATE SQLServerCert_<データベース名> TO FILE = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\SQLServerCert_<データベース名>' WITH PRIVATE KEY ( FILE = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\SQLPrivateKeyFile_<データベース名>', ENCRYPTION BY PASSWORD = 'encrypted_Passw0rd_<データベース名>' ); GO
3.セカンダリレプリカで証明書の作成
続いてセカンダリレプリカ側での作業となります。
データベースマスターキーおよびプライマリ証明書バックアップから証明書を作成します。
※プライマリから2つのファイルをコピーしてから行う(ファイル及びフォルダーのアクセス権限付与後)
USE master ; GO CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'encrypted_Passw0rd_<データベース名>'; GO
CREATE CERTIFICATE SQLServerCert FROM FILE = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\SQLServerCert_<データベース名>' WITH Private KEY ( FILE = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\SQLPrivateKeyFile_<データベース名>', Decryption BY Password = 'encrypted_Passw0rd_<データベース名>'); go
4. セカンダリレプリカで証明書のバックアップ
セカンダリレプリカ側でも証明書のバックアップを取得します。
デフォルトのバックアップ先フォルダ
[C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA]
BACKUP CERTIFICATE SQLServerCert TO FILE = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\SQLServerCert_Sec_<データベース名>' WITH PRIVATE KEY ( FILE = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\SQLPrivateKeyFile_Sec_<データベース名>', ENCRYPTION BY PASSWORD = 'encrypted_Passw0rd_<データベース名>' ); GO
5.データベースの暗号化
ここまでの作業が完了したらデータベースの暗号化を実施します。
データベース暗号化キーの作成
USE <データベース名>; GO CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER CERTIFICATE SQLServerCert_<データベース名>; GO
データベースの暗号化になります。
use <データベース名> go ALTER DATABASE <データベース名> SET ENCRYPTION ON; GO
以上でAlwaysOnデータベースの暗号化は完了になります。