Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Cơ Sở Dữ Liệu

MSSQL Server: Di chuyển Database với Cell Level Encryption (CLE) – Hướng dẫn an toàn

Trong bài blog này, tôi thảo luận các bước cần thiết để Restore Database và truy xuất dữ liệu đã mã hóa khi CLE (Cell Level Encryption) được triển khai.

Bảo mật dữ liệu là khía cạnh quan trọng trong quản trị Database. Khi mã hóa dữ liệu nhạy cảm, có nhiều cách trong MS SQL Server như CLE, TDE, và Always Encrypted. Khi bạn mã hóa dữ liệu trong Cell bằng Certificate hoặc Keys, đó gọi là CLE (Cell Level Encryption).

Vấn đề:

  1. ERROR: - Một vấn đề bạn có thể thấy là Application hoặc một số TSQL Code đang giải mã dữ liệu bắt đầu báo lỗi sau.
  1. Hàm DECRYPTBYKEY không thể giải mã dữ liệu. Điều này không báo lỗi tuy nhiên chức năng bị ảnh hưởng do thiếu Encryption Keys.

Giải pháp

Vì chúng ta không mở Database Master Key nên giải mã dữ liệu không thể thực hiện, cũng DMK không được mã hóa bởi Service Master Key của Instance hiện tại nên gặp vấn đề này. Có nhiều giải pháp, hãy nói lần lượt.

Trường hợp 1 - Khi biết mật khẩu mã hóa Database Master Key.

Bước 1: Mở Database Master Key bằng mật khẩu và giải mã dữ liệu.

Bước 2: Câu hỏi nảy sinh là có thể mở Key bằng mật khẩu mỗi Session hay Hardcode? Câu trả lời là không, trong trường hợp này, bạn sẽ Re-encrypt Database Master Key với Service Master Key của Instance hiện tại và chạy các lệnh như ảnh chụp.

Bước 3: Kiểm tra xem có thể giải mã dữ liệu mà không cần mở Key bằng mật khẩu không – câu trả lời là Có vì Key giờ cũng được mã hóa bởi Current Service Master Key.

Bước 4: Nếu muốn đổi mật khẩu mã hóa Database Master Key, cần hoàn tất bước sau.

Trường hợp 2: Không biết mật khẩu mã hóa Database Master Key.

Nếu bạn không biết mật khẩu và Source vẫn accessible. Chỉ dùng Bước 4 từ Trường hợp 1 để đổi mật khẩu và làm theo thủ tục Bước 1. Ngược lại, dùng các bước sau làm phương án thay thế.
Điều này chỉ khả thi khi Instance nơi Database được Restore không dùng Key nào khác vì các bước liên quan ở đây là Restore Instance Service Master Key.

Ví dụ: Cách Backup Instance Service Master Key.

-- BACKUP SERVICE MASTER KEY
BACKUP SERVICE MASTER KEY TO FILE = 'C:\SHARED\SERVICE_MASTER_KEY.KEY'
ENCRYPTION BY PASSWORD = 'KEY_P@SSW0RDGQW0956565'

Lưu ý: File Backup Key rất nhạy cảm về bảo mật, hãy thêm SQL Service Account vào Tab Security để đảm bảo SQL Server có quyền truy cập file, nếu không bạn có thể gặp lỗi sau khi Restore:

MSG 15317, LEVEL 16, STATE 2, LINE 53
THE MASTER KEY FILE DOES NOT EXIST OR HAS INVALID FORMAT

Bước 1: Restore Service Master Key TRƯỚC khi Restore Database.

Bước 2: Restore Database.

Bước 3: Kiểm tra có thể giải mã dữ liệu không cần mở Key bằng mật khẩu – câu trả lời là Có vì Key dùng chung Service Master Key như đã Restore cả Instance Service Key và Database được mã hóa bởi nó.

Kết luận

Mọi đối tượng trong MS SQL Server dùng cho Encryption đều được bảo vệ bởi Instance-level Service Master Keys. Để quản lý Encryption, quan trọng phải hiểu rằng các đối tượng tham gia Encryption lại được mã hóa tiếp bằng Passwords, Keys hoặc Certificates.
Mỗi khi Migrate Database với Cell Level Data Encryption, chúng ta cần hoặc Decrypt Key và Re-encrypt chúng với Destination Instance Service Master Key, hoặc Restore Source Instance Master Key.

Sử dụng tab Feedback để bình luận hoặc đặt câu hỏi. Bạn cũng có thể bắt đầu cuộc trò chuyện với chúng tôi.