การทำมิเรอร์ฐานข้อมูลด้วย TDE


10

ฉันมีความต้องการในการทำมิเรอร์ฐานข้อมูลบางส่วนและใช้การเข้ารหัสข้อมูลแบบโปร่งใส (TDE) กับพวกเขาเนื่องจากข้อมูลของเราจะต้องถูกเข้ารหัสขณะที่ 'พัก'

ฉันมีการติดตั้ง TDE ทั้งตัวการและตัวสะท้อน ปัญหาที่ฉันเกิดขึ้นเมื่อฉันตั้งค่าการทำมิเรอร์ของฐานข้อมูลทั้งสอง ตั้งแต่ฉันใช้ TDE ฉันไม่รู้วิธีตั้งค่าการมิเรอร์ผ่าน gui ดังนั้นฉันถูกบังคับให้ใช้ t-sql เพื่อให้งานเสร็จ

ด้านล่างเป็นรหัสที่ฉันใช้กับเซิร์ฟเวอร์ที่ทำมิเรอร์

--Restore the full backup to the mirrored mdf and ldf
OPEN MASTER KEY DECRYPTION BY PASSWORD = '1Password'
RESTORE DATABASE TDE
   FROM disk = '\\SERVERNAME\SQL_Stuff\Backup\TDE_FULL.bak'
      WITH NORECOVERY,
       REPLACE,
       MOVE 'TDE' TO 'E:\TDE.mdf',
      REPLACE,
      MOVE 'TDE_log' TO 'G:\TDE.ldf'
CLOSE MASTER KEY 
GO

--Restore the log backup to the mirrored db
OPEN MASTER KEY DECRYPTION BY PASSWORD = '1Password'
RESTORE LOG TDE
    FROM DISK = '\\SERVERNAME\SQL_Stuff\Backup\TDE_LOG.trn'
    WITH NORECOVERY;
CLOSE MASTER KEY
GO


--Drop/Create Mirroring endpoint on mirror
--DROP ENDPOINT TDE
CREATE ENDPOINT TDE
    STATE = STARTED
    AS TCP ( LISTENER_PORT = 7025 )
    FOR DATABASE_MIRRORING (
        ROLE = PARTNER
        );
GO

--Check the endpoints for the mirror
USE MASTER
SELECT * FROM sys.database_mirroring_endpoints
GO

--Set the principal on the mirrored db
OPEN MASTER KEY DECRYPTION BY PASSWORD = '1Password'
ALTER DATABASE TDE SET PARTNER = 'TCP://PRINCIPAL.DOMAIN.local:7022'
GO
CLOSE MASTER KEY
GO

ด้านล่างเป็นรหัสที่ฉันใช้บนเซิร์ฟเวอร์หลัก

----------------------Mirroring Section----------------------------------

--Full Backup of Principal
USE TDE
GO
BACKUP DATABASE TDE
TO DISK = '\\SERVERNAME\SQL_Stuff\Backup\TDE_FULL.bak'
    WITH COMPRESSION,
         NAME = 'Full Backup of TDE';
GO

---Log Backup of Principal
USE TDE
GO
BACKUP LOG TDE
TO DISK = '\\SERVERNAME\SQL_Stuff\Backup\TDE_LOG.trn'
    WITH COMPRESSION,
         NAME = 'Log backup of TDE'
GO

--Drop/Create Mirroring endpoint on principal
--DROP ENDPOINT TDE
CREATE ENDPOINT TDE
    STATE = STARTED
    AS TCP ( LISTENER_PORT = 7022 )
    FOR DATABASE_MIRRORING (
        ROLE = PARTNER
        );
GO

--Check the endpoints for the princple
USE master
select * from sys.database_mirroring_endpoints
GO

--Set the mirror db on the principal db
OPEN MASTER KEY DECRYPTION BY PASSWORD = '1Password'
ALTER DATABASE TDE SET PARTNER = 'TCP://MIRROR.DOMAIN.local:7025'
CLOSE MASTER KEY
GO

ฉันตั้งค่าจุดสิ้นสุดการมิรเรอร์ที่ 1 จากนั้นเป็นจุดสิ้นสุดหลัก จากนั้นฉันก็ออกALTER DATABASEกระจกมองข้างและจากอาจารย์ใหญ่ที่ฉันได้รับข้อผิดพลาดที่เกิดขึ้น:

 Msg 1416, Level 16, State 31, Line 2
Database "TDE" is not configured for database mirroring.

ฉันกำลังสูญเสียเป็นสิ่งที่ต้องทำเกี่ยวกับเรื่องนี้ มิเรอร์อยู่ในสถานะ "กู้คืน" แต่ฉันมั่นใจว่าข้อผิดพลาดกำลังพูดถึง db หลัก

ขอบคุณสำหรับความช่วยเหลือใด ๆ ที่คุณสามารถให้!

อัพเดต รหัสสำหรับ TDE หลัก:

--Create Master Key in Master Database
USE MASTER
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '1Password';
PRINT 'created master key'
go

--Backing up the master key file
USE master;
OPEN MASTER KEY DECRYPTION BY PASSWORD = '1Password';
BACKUP MASTER KEY TO FILE = '\\SERVERNAME\TDE_Master_Key.key' ENCRYPTION BY PASSWORD = '1Password';
GO

--Create Server Certificate in the Master Database encrypted with master key (created above) which would be used to create USER database encryption key.
USE Master
CREATE CERTIFICATE Cert_For_TDE WITH SUBJECT = 'Master_Cert_for_TDE', EXPIRY_DATE = '3500-Jan-01';
Go

--Backing up the server cert file
--USE master;
BACKUP CERTIFICATE Cert_For_TDE TO FILE = '\\SERVERNAME\TDE_Cert.cer' 
    WITH PRIVATE KEY ( FILE = '\\SERVERNAME\TDE_Cert_Key.key', ENCRYPTION BY PASSWORD = '1Password');
GO

--Create user database key
USE TDE
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER CERTIFICATE Cert_For_TDE;
GO

--Enabling Transparent Database Encryption for the USER Database
USE master;
GO
ALTER DATABASE TDE SET ENCRYPTION ON
GO

รหัสบนกระจกสำหรับ TDE:

--restore the backed up key to the mirror
use master
RESTORE MASTER KEY
    FROM FILE = '\\SERVERNAME\TDE_Master_Key.key'
    DECRYPTION BY PASSWORD = '1Password'
    ENCRYPTION BY PASSWORD = '1Password';
GO

--restore the backed up cert to the mirror
USE Master;
OPEN MASTER KEY DECRYPTION BY PASSWORD = '1Password'
CREATE CERTIFICATE Cert_For_TDE    
FROM FILE = '\\SERVERNAME\TDE_Cert.cer' WITH PRIVATE KEY ( FILE = '\\SERVERNAME\TDE_Cert_Key.key', DECRYPTION BY PASSWORD = '1Password');
GO

Update2 sys.database_mirroring_endpoints เข้าร่วมกับ sys.tcp_endpoints ในการแสดงหลัก:

endpoint_id name    principal_id    state_desc  role_desc   connection_auth_desc    certificate_id  encryption_algorithm_desc   port    ip_address
65545   TDE 261 STARTED PARTNER NEGOTIATE   0   RC4 7022    NULL

sys.database_mirroring_endpoints เข้าร่วมกับ sys.tcp_endpoints ในรายการ Mirror:

endpoint_id name    principal_id    state_desc  role_desc   connection_auth_desc    certificate_id  encryption_algorithm_desc   port    ip_address
65537   TDE 261 STARTED PARTNER NEGOTIATE   0   RC4 7025    NULL

เป็นฐานข้อมูลในรูปแบบการกู้คืนเต็ม? มีงานบันทึกข้อมูลสำรองใด ๆ ที่ทำงานอยู่ในขณะที่คุณตั้งค่าหรือไม่? คุณสำรองข้อมูลมาสเตอร์คีย์บนตัวการและเรียกคืนบนมิรเรอร์สำหรับ TDE หรือไม่?
Robert L Davis

ใช่ทั้งสอง dbs ในการกู้คืนเต็ม ไม่มีงานทำงานในขณะที่ฉันทำการสำรองข้อมูล (เพียง 1 ตารางที่มี 4 แถว) ใช้เวลา 2 วินาที ฉันได้สำรองคีย์หลักและเรียกคืนไปยังกระจกแล้ว ฉันจะโพสต์รหัสนั้นในวันพรุ่งนี้เมื่อฉันกลับไปทำงาน
RateControl

ฉันได้เพิ่มการเขียนสคริปต์ TDE และ dmvs บางอย่าง
RateControl

คำตอบ:


10

พบเว็บไซต์ที่มีความคิดเห็น

ฉันเพิ่มรหัสไปหลังจากที่ฉันคืนค่าคีย์และใบรับรอง

--Mumbojumbo to get mirroring to work
OPEN MASTER KEY DECRYPTION BY PASSWORD = '1Password'
ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY
GO

มันใช้งานได้อย่างมีเสน่ห์มันมีเหตุผลเล็กน้อยที่ฉันต้องเข้ารหัสคีย์หลักที่ฉันกู้คืนด้วย service master key ของเซิร์ฟเวอร์ใหม่ ฉันคิดว่า.

ยัก


1
ดีใจที่คุณสามารถตอบตัวเองได้: D
jcolebrand
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.