Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Mã hóa sao lưu cơ sở dữ liệu SQL Server

Để quản lý bảo mật dữ liệu đã được hệ thống tệp sao lưu dưới dạng tệp sao lưu cơ sở dữ liệu, SQL Server cung cấp tính năng mã hóa sao lưu. Trong bài viết này, chúng tôi sẽ nói về các tùy chọn mã hóa có sẵn trong SQL Server để sao lưu cơ sở dữ liệu. Chúng tôi sẽ xem xét kỹ hơn chi tiết sử dụng, lợi ích và các phương pháp được khuyến nghị để mã hóa sao lưu cơ sở dữ liệu SQL Server trong quá trình sao lưu.

Mã hóa sao lưu cơ sở dữ liệu là gì?

Nhu cầu bảo mật dữ liệu ngày càng tăng lên đáng kể. Cùng với dữ liệu, bạn cần đảm bảo các tệp sao lưu cơ sở dữ liệu của mình cũng được bảo mật, đặc biệt là những tệp trên hệ thống tệp máy chủ. Dữ liệu bên trong tệp sao lưu SQL Server gốc được lưu trữ dưới dạng văn bản thuần túy trên hệ thống tệp. Bạn có thể đọc nó mà không cần tốn nhiều công sức khi sử dụng trình soạn thảo văn bản.
Tùy thuộc vào kiểu dữ liệu được sử dụng trong bảng của bạn, một số dữ liệu dễ đọc hơn nhiều so với những dữ liệu khác. Hình ảnh sau minh họa tệp sao lưu được mở trong trình soạn thảo văn bản Notepad:

Như bạn có thể thấy, mã T-SQL hiển thị và dễ đọc. Tuy nhiên, khi chúng tôi tạo bản sao lưu bằng mã hóa, sẽ không ai có cơ hội thực hiện được.

Hình ảnh sau minh họa cùng một AdventureWorks2014.bak với một mã hóa.

Bắt đầu với SQL Server 2014, công cụ cơ sở dữ liệu có thể mã hóa dữ liệu trong khi tạo tệp sao lưu. Bạn có thể chỉ định thuật toán mã hóa và trình mã hóa, Chứng chỉ hoặc Khóa không đối xứng, trong khi tạo bản sao lưu. Tính năng mã hóa dự phòng cải thiện bảo mật và hoạt động trong bất kỳ miền nào có thể sử dụng SQL Server.

Yêu cầu gì?

Để mã hóa bản sao lưu cơ sở dữ liệu, bạn cần chỉ định một thuật toán mã hóa và một bộ mã hóa. Có hai tùy chọn mã hóa được hỗ trợ:

  • Thuật toán mã hóa:AES_128, AES_192, AES_256 và Triple_DES_3Key
  • Trình mã hóa:Chứng chỉ hoặc khóa không đối xứng

Nếu bạn vô tình làm mất chứng chỉ hoặc khóa không đối xứng, bạn sẽ không bao giờ có cơ hội khôi phục tệp sao lưu. Do đó, giữ chứng chỉ hoặc khóa bất đối xứng ở một vị trí an toàn là rất quan trọng.

Lợi ích của việc mã hóa sao lưu cơ sở dữ liệu

  • Giúp bảo mật dữ liệu.
  • Có thể được áp dụng cho các cơ sở dữ liệu được mã hóa với sự trợ giúp của Mã hóa dữ liệu minh bạch (TDE).
  • Được hỗ trợ cho các bản sao lưu do SQL Server quản lý sao lưu vào Microsoft Azure để cung cấp bảo mật bổ sung cho các bản sao lưu bên ngoài trang web.
  • Hỗ trợ nhiều thuật toán mã hóa lên đến AES 256 bit. Điều này cho phép bạn chọn một thuật toán đáp ứng yêu cầu của bạn.
  • Có thể tích hợp khóa mã hóa với các nhà cung cấp Quản lý khóa mở rộng (EKM).

Các thay đổi trong bảng hệ thống

Trong khi tạo bản sao lưu được mã hóa, một số thông tin được ghi vào MSDB cơ sở dữ liệu hệ thống:thuật toán khóa, loại mã hóa và dấu vân tay mã hóa được sử dụng.
Bộ sao lưu bảng chứa thông tin cho mỗi bộ sao lưu. Tập hợp sao lưu chứa bản sao lưu cho một thao tác sao lưu thành công duy nhất.
Các cột sau: key_algorithm , encode_thumprint , encode_type của DMV này lưu trữ thông tin về việc liệu bản sao lưu có được mã hóa hay không, loại bộ mã hóa và dấu vân tay của bộ mã hóa.

 CHỌN TOP 5 tên, key_algorithm, encode_thumbprint, Encryptor_typeFROM msdb.dbo.backupset AS backupet với (NOLOCK) WHERE nhập IN ('D', 'I') AND database_name ='AdventureWorks2014'ORDER BY backupet.backup_start_date DESCGO  

Đây là những gì bạn sẽ thấy:

Để biết thêm thông tin về bảng backupet, hãy đọc trang tài liệu MSDN sau:backupset (Transact-SQL)

Phương tiện dự phòng bảng chứa thông tin cho mỗi bộ phương tiện dự phòng. Cột is_encrypted cho biết liệu bản sao lưu có được mã hóa hay không. 0 - không được mã hóa và 1 - được mã hóa. Ban đầu, giá trị này được đặt thành NULL cho biết bộ sao lưu không được mã hóa.

 CHỌN HÀNG ĐẦU 5 media_set_id, is_encrypted, is_compressedFROM msdb.dbo.backupmediaset NHƯ phương tiện với (NOLOCK) ĐẶT HÀNG BẰNG PHƯƠNG TIỆN.media_set_id DESCGO 

Bộ kết quả:

Các phương pháp mã hóa sao lưu cơ sở dữ liệu

1. Với sự trợ giúp của dbForge Studio dành cho SQL Server

Có thể tạo mã hóa sao lưu cơ sở dữ liệu với sự trợ giúp của SSMS, nhưng cá nhân tôi thíchdbForge Studio cho SQL Server - một IDE mạnh mẽ để quản lý, quản trị, phát triển, báo cáo dữ liệu và phân tích SQL Server. IDE này giống như một con dao Thụy Sĩ cho các nhà phát triển cơ sở dữ liệu. Công cụ này cung cấp các tính năng thiết yếu được bao bọc trong một GUI được thiết kế tốt và trực quan. Để làm quen với các tính năng chính, hãy xem dbForge Studio cho SQL Server - Video giới thiệu tổng quan (04:03 phút):

Khi bạn đã tải xuống và cài đặt công cụ, bạn cần tạo kết nối cơ sở dữ liệu.

Lưu ý rằng tính năng mã hóa sao lưu được giới thiệu trong SQL Server 2014. SQL Server Express không hỗ trợ mã hóa trong khi sao lưu.

1. Khi bạn đã kết nối với phiên bản SQL Server bắt buộc, trong Database Explorer , nhấp vào tên máy chủ để mở rộng cây máy chủ.

2. Bấm chuột phải vào cơ sở dữ liệu bắt buộc, trỏ chuột vào Nhiệm vụ, sau đó nhấp vào Sao lưu . Hộp thoại Cơ sở dữ liệu sao lưu xuất hiện.

Trong Kết nối hộp danh sách, kiểm tra tên kết nối. Bạn có thể tùy ý chọn một kết nối khác từ danh sách.

3. Nhấp vào Tiếp theo, để tiếp tục với Tùy chọn phương tiện .

Tùy chọn mã hóa bị vô hiệu hóa nếu bạn chọn thêm vào tùy chọn bộ sao lưu hiện có trên trang Tùy chọn phương tiện của trình hướng dẫn Cơ sở dữ liệu sao lưu. Chọn sao lưu vào bộ phương tiện mới và xóa tất cả các bộ sao lưu hiện có.
Tạo chứng chỉ / khóa trước khi bắt đầu quá trình. Chứng chỉ hoặc khóa bất đối xứng được tạo trước khi khởi chạy trình hướng dẫn cơ sở dữ liệu sao lưu sẽ được liệt kê trong menu thả xuống.

Chọn tùy chọn Sao lưu vào bộ phương tiện mới và xóa tất cả các bộ sao lưu hiện có tùy chọn để tạo một bản sao lưu mới. Nhập tên vào Tên nhóm phương tiện hộp văn bản và, tùy chọn, mô tả bộ phương tiện trong Mô tả bộ phương tiện hộp văn bản.

4. Nhấp vào Tiếp theo, để tiếp tục với Tùy chọn sao lưu .

Trên trang này, hãy chọn tùy chọn Mã hóa Sao lưu. Chọn Thuật toán và Chứng chỉ hoặc Khóa bất đối xứng. Nhấp vào Sao lưu . Quá trình này mất vài giây trong trường hợp của tôi.

2. Sử dụng câu lệnh Transact-SQL

Chúng tôi sẽ sử dụng B ACKUP DATABASE để tạo bản sao lưu cơ sở dữ liệu và NHẬT KÝ DỰ PHÒNG để tạo tệp sao lưu nhật ký giao dịch.

Sao lưu toàn bộ cơ sở dữ liệu

Đây là loại sao lưu sao lưu toàn bộ cơ sở dữ liệu. Nó bao gồm một phần của nhật ký giao dịch để có thể khôi phục toàn bộ cơ sở dữ liệu sau khi khôi phục bản sao lưu cơ sở dữ liệu đầy đủ.

Đoạn mã sau tạo Cơ sở dữ liệu đầy đủ được mã hóa sao lưu tại vị trí được cung cấp bằng cách sử dụng chứng chỉ và thuật toán mã hóa được chỉ định.

 BACKUP DATABASE AdventureWorks2014TO DISK ='D:\ DBMSSQLX64 \ Backup \ AdventureWorks2014.bak'WITH NAME =N'AdventureWorks2014, Nén, Mã hóa, Đầy đủ', ĐỊNH DẠNG, INIT, SKIP, NOREWIND, NOUNLOAD, STATS =5, COMPRESSION, ENCRYPTION (ALGORITHM =AES_256, SERVER CERTIFICATE =Cert1) ĐI 

Lưu ý, Nếu chứng chỉ được sử dụng để mã hóa chưa bao giờ được sao lưu, cảnh báo sau sẽ xảy ra khi quá trình sao lưu hoàn tất. Đảm bảo bạn tạo một bản sao lưu của chứng chỉ cùng với khóa cá nhân được liên kết với chứng chỉ:

Cảnh báo :Chứng chỉ được sử dụng để mã hóa khóa mã hóa cơ sở dữ liệu chưa được sao lưu. Bạn nên sao lưu ngay chứng chỉ và khóa cá nhân được liên kết với chứng chỉ. Nếu chứng chỉ không khả dụng hoặc nếu bạn phải khôi phục hoặc đính kèm cơ sở dữ liệu trên một máy chủ khác, bạn phải có bản sao lưu của cả chứng chỉ và khóa riêng tư, nếu không bạn sẽ không thể mở cơ sở dữ liệu.

Sao lưu cơ sở dữ liệu khác biệt

Trong khi tạo kiểu sao lưu này, cơ sở dữ liệu hoặc bản sao lưu tệp chỉ bao gồm các phần của cơ sở dữ liệu hoặc tệp đã thay đổi kể từ lần sao lưu đầy đủ cuối cùng. Ngoài ra, loại sao lưu này thường chiếm ít dung lượng hơn so với một bản sao lưu đầy đủ.

Đoạn mã sau tạo cơ sở dữ liệu khác biệt được mã hóa sao lưu tại vị trí được cung cấp bằng cách sử dụng chứng chỉ và thuật toán mã hóa được chỉ định.

 BACKUP DATABASE AdventureWorks2014TO DISK ='D:\ DBMSSQLX64 \ Backup \ AdventureWorks2014_DIFF.bak'WITH NAME =N'AdventureWorks2014, Nén, Mã hóa, Khác biệt', ĐỊNH DẠNG, INIT, SKIP, NOREWIND, NOUNLOAD, STATS =5, KHÁC BIỆT, KÍCH THÍCH (ALGORITHM =AES_256, SERVER CERTIFICATE =Cert1) ĐI 

Sao lưu nhật ký giao dịch cơ sở dữ liệu

Cơ sở dữ liệu SQL Server chứa một hoặc nhiều tệp nhật ký giao dịch, ngoài tệp dữ liệu, ghi lại tất cả các giao dịch và sửa đổi cơ sở dữ liệu được thực hiện bởi mỗi giao dịch. Thông tin giao dịch chỉ được thu thập trong cơ sở dữ liệu nơi chế độ khôi phục cơ sở dữ liệu được đặt thành đầy đủ khôi phục hoặc ghi nhật ký hàng loạt phục hồi.

Đoạn mã sau tạo nhật ký giao dịch cơ sở dữ liệu được mã hóa sao lưu tại vị trí được cung cấp bằng cách sử dụng chứng chỉ và thuật toán mã hóa được chỉ định.

 BACKUP LOG AdventureWorks2014TO DISK ='D:\ DBMSSQLX64 \ Backup \ AdventureWorks2014_LOG.bak'WITH NAME =N'AdventureWorks2014, Nén, Mã hóa, TLog', ĐỊNH DẠNG, INIT, SKIP, STATS =5, COMPRESSION, ENCRYPTION =(THUẬT TOÁN AES_256, SERVER CERTIFICATE =Cert1) ĐI 

3. Sử dụng PowerShell

SQL Server 2014 cho phép bạn sao lưu cơ sở dữ liệu bằng Windows Powershell. Đoạn mã sau tạo các tùy chọn mã hóa và sử dụng nó làm giá trị tham số trong tập lệnh Backup-SqlDatabase:

 $ encodeOption =New-SqlBackupEncryptionOption –Algorithm Aes256 –EncryptorType ServerCertificate –EncryptorName “Cert1” Backup-SqlDatabase –ServerInstance Server_name –Database “AdventureWorks2014” –EncryptorName “Cert1” Backup-SqlDatabase –ServerInstance Server_name –Database “AdventureWorks2014”. $ mã hóaOption 

So sánh các cách tiếp cận được đề cập ở trên, không có nghi ngờ gì rằng việc tạo bản sao lưu cơ sở dữ liệu được mã hóa là một nhiệm vụ khá dễ dàng khi bạn có công cụ phù hợp, chẳng hạn như dbForge Studio cho SQL Server từ Devart.

Đọc thêm

Bạn của tôi, Pinal Dave - người đam mê công nghệ SQL Server, nhà tư vấn độc lập, tác giả của nhiều cuốn sách SQL Server khác nhau và các khóa học Pluralsight, đã viết một bài báo xuất sắc mà tôi muốn đề nghị bạn đọc thêm:SQL SERVER - Sử dụng thực tế mã hóa sao lưu


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào tôi có thể biết khi nào Tổng số chỉ mục văn bản đầy đủ của SQL kết thúc?

  2. Các cách khắc phục lỗi máy chủ SQL phát hiện lỗi I / O dựa trên tính nhất quán logic

  3. Không thể bắt đầu một giao dịch phân tán

  4. Chuyển đổi thời gian thập phân thành giờ và phút

  5. Hiểu kích thước lưu trữ ‘thời gian’ trong SQL Server