Trong SQL Server 2016, sự khác biệt giữa Mã hóa dữ liệu luôn được mã hóa và trong suốt là gì?


40

Khi tôi viết bài này, tôi vẫn đang chờ bản phát hành chính thức của SQL Server 2016 để chúng tôi có thể khám phá tính hữu ích của tính năng "Luôn được mã hóa" của nó.

Tôi chỉ muốn biết sự khác biệt cụ thể giữa Luôn được mã hóa & Mã hóa dữ liệu trong suốt hiện có trong SQL Server 2016 để chúng tôi có thể đưa ra quyết định chính xác cho các dự án trong tương lai.


Với Luôn được mã hóa, trình điều khiển máy khách mã hóa / giải mã dữ liệu trước khi truy cập SQL Server trong khi TDE chạy trên chính SQL Server. IMHO TDE hầu như vô dụng trong các kịch bản trung tâm dữ liệu đám mây / bảo mật (cuộn đến "TDE không hữu ích trong đám mây"). Nếu bạn quan tâm đến bảo mật dữ liệu nâng cao, hãy kiểm tra Crypteron . Tiết lộ đầy đủ: Tôi làm việc ở đó
DeepSpace101

Câu trả lời:


48

Nhược điểm của mã hóa dữ liệu trong suốt so với luôn được mã hóa:

  • Chỉ bảo vệ dữ liệu khi nghỉ ngơi - sao lưu và tệp dữ liệu là "an toàn" nhưng dữ liệu chuyển động hoặc trong bộ nhớ dễ bị tổn thương
  • Toàn bộ cơ sở dữ liệu
  • Tất cả dữ liệu được mã hóa theo cùng một cách
  • Nén sao lưu có thể mất nhiều thời gian hơn và phản tác dụng

    • Thực tế, có một số cải tiến ở đây trong SQL Server 2016 đã thách thức những gì chúng ta thường biết về việc cố gắng nén dữ liệu được mã hóa - nó tốt hơn nhiều so với các phiên bản trước, nhưng có lẽ vẫn tệ hơn là chỉ mã hóa một số cột (chưa được kiểm tra)
  • tempdb cũng kế thừa mã hóa - duy trì ngay cả sau khi tắt TDE
  • Yêu cầu phiên bản doanh nghiệp
  • Dữ liệu luôn có thể truy cập vào sysadmin

Luôn được mã hóa giải quyết tất cả các vấn đề này một phần hoặc toàn bộ:

  • Dữ liệu được bảo vệ khi nghỉ ngơi, trong chuyển động và trong bộ nhớ - kiểm soát nhiều hơn đối với certs, khóa và chính xác ai có thể giải mã dữ liệu
  • Có thể chỉ là một cột duy nhất
  • Loại mã hóa là một lựa chọn:
    • Có thể sử dụng mã hóa xác định để hỗ trợ các chỉ mục và tra cứu điểm (giả sử, SSN)
    • Có thể sử dụng mã hóa ngẫu nhiên để bảo vệ cao hơn (giả sử số thẻ tín dụng)
  • Vì nó không phải là toàn bộ cơ sở dữ liệu, nên việc nén sao lưu không nhất thiết bị ảnh hưởng - tất nhiên bạn càng mã hóa nhiều cột, bạn càng gặp nhiều may mắn
  • tempdb chưa được giải quyết
  • Kể từ SQL Server 2016 Gói dịch vụ 1, Luôn được mã hóa hiện hoạt động trong tất cả các phiên bản
  • Dữ liệu có thể được bảo vệ khỏi sysadmin (nhưng không phải sysadmin VÀ quản trị viên bảo mật / cert / key của Windows, nói cách khác, bạn có thể tách rời trách nhiệm miễn là hai nhóm đó không thông đồng)

Tuy nhiên, có một hạn chế và đó là không phải tất cả các trình điều khiển và ứng dụng có thể xử lý trực tiếp dữ liệu được mã hóa, do đó, trong một số trường hợp, điều này sẽ yêu cầu cập nhật / thay đổi trình điều khiển và / hoặc sửa đổi mã.


Bạn có thể vui lòng giải thích cho tôi, làm thế nào Luôn mã hóa dữ liệu mã hóa trong bộ nhớ? Tôi đã cố gắng tìm thông tin này trong MSDN, nhưng nó chỉ nói về dữ liệu ở phần còn lại và dữ liệu trong mã hóa chuyển động. Cảm ơn bạn :)
Victoria Malaya

1
@Victoria dữ liệu được mã hóa bởi nhà cung cấp trước khi SQL Server nhìn thấy nó. Vì vậy, SQL Server nhận được một giá trị được mã hóa, đặt giá trị được mã hóa đó vào đĩa và tải giá trị được mã hóa vào bộ nhớ khi trang đó nằm trong bộ nhớ. Mã hóa không xảy ra trong bộ nhớ theo cách bạn nghĩ và việc giải mã chỉ xảy ra khi khách hàng sở hữu chứng chỉ có khả năng giải mã ...
Aaron Bertrand

2
Theo tôi biết, một trong những khác biệt lớn nhất là khi truy vấn dữ liệu. Với TDE, bạn có thể chạy bất kỳ truy vấn nào như bình thường, với AE bạn rất hạn chế khi truy vấn các cột được mã hóa, tức là bạn chỉ có thể thực hiện so sánh bằng (và yêu cầu chọn mã hóa xác định). Không có phạm vi ngày kiểm tra, không có truy vấn THÍCH, v.v.
musefan

3

Nói một cách đơn giản, TDE là dữ liệu được mã hóa ở phần còn lại (Trên đĩa) và AE cũng là dữ liệu được mã hóa trên dây.


Tôi nghĩ rằng bạn có thể có điều đó ngược, không?
zwerdlds

Không nên: TDE là dữ liệu được mã hóa ở phần còn lại trong khi AE là dữ liệu được mã hóa trên dây, ở phần còn lại & trong bộ nhớ?
RoastBeast

AFAIK: Bạn có thể kết hợp TDEMã hóa giao thức bắt buộc trên máy chủ MS SQL để mã hóa trên dây.
TiloBunt
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.