Một bản sao lưu cơ sở dữ liệu không tiết lộ điều gì.

Dữ liệu cá nhân của mọi người dùng được mã hóa khi lưu trữ bằng các khóa riêng cho từng tenant, không bao giờ chạm vào cơ sở dữ liệu. Một thông tin xác thực lưu trữ bị rò rỉ hoặc một bản sao lưu bị đánh cắp chỉ cho ra dữ liệu đã mã hóa — không phải email, không phải tên, không phải số điện thoại.

Cách thức hoạt động

  • Việc mã hóa diễn ra bên ngoài cơ sở dữ liệu. Các giá trị được mã hóa và giải mã thông qua HashiCorp Vault Transit — ứng dụng không bao giờ giữ vật liệu khóa, và cơ sở dữ liệu không bao giờ thấy khóa.
  • Mỗi tenant có khóa riêng của mình. Xóa một tenant sẽ hủy khóa (crypto-shred) của tenant đó, khiến toàn bộ dữ liệu của tenant này vĩnh viễn không thể khôi phục — không cần xóa từng dòng dữ liệu.
  • AES-256-GCM ngẫu nhiên hóa bảo vệ từng giá trị, để các đầu vào giống nhau không bao giờ tạo ra cùng một dữ liệu mã hóa.

Đã mã hóa, nhưng vẫn có thể tìm kiếm

Mã hóa thường đồng nghĩa với việc phải từ bỏ khả năng tìm kiếm. Nhưng ở đây thì không. Bên cạnh mỗi giá trị đã mã hóa, chúng tôi lưu trữ các token "blind index" dạng keyed-HMAC — nhờ đó đăng nhập bằng email, quản trị viên tìm kiếm theo tên, và "tất cả mọi người tại acme.com" đều hoạt động như các tra cứu chính xác và theo tiền tố trên dữ liệu chưa bao giờ được lưu ở dạng rõ. Các khóa chỉ mục cũng là HMAC: một bản sao lưu của các bảng chỉ mục cũng không tiết lộ điều gì.

Những gì được bảo vệ

Địa chỉ email, họ và tên, số điện thoại, tên công ty, và bất kỳ thuộc tính tùy chỉnh nào bạn lưu trữ — tất cả đều được mã hóa khi lưu trữ. Mật khẩu chưa bao giờ được lưu trữ theo cách có thể đảo ngược (chúng được băm một chiều bằng một KDF hiện đại). Việc gán vai trò, các ID không mang ý nghĩa, và dấu thời gian không phải là dữ liệu cá nhân nên được giữ ở dạng rõ để hệ thống duy trì khả năng vận hành.

Mối đe dọa mà chúng tôi thiết kế để chống lại

Kịch bản ở đây là một thông tin xác thực lưu trữ bị rò rỉ hoặc một bản sao lưu bị lộ — ai đó có được một bản sao thô của các bảng dữ liệu. Mã hóa cấp đĩa minh bạch (dùng khóa do khách hàng quản lý) không giúp ích gì trong trường hợp này: nó tự động giải mã cho bất kỳ thứ gì có thể đọc được kho lưu trữ, nên một bản sao lưu sẽ ra dạng văn bản rõ. Mã hóa ở cấp ứng dụng thì có ích — các khóa nằm trong Vault, tách biệt khỏi dữ liệu, nên một bản sao của các bảng dữ liệu chỉ là một bản sao của dữ liệu đã mã hóa.

Cả khi truyền tải

Dữ liệu được mã hóa khi truyền tải (TLS 1.2+) cũng như khi lưu trữ. Chúng tôi sẵn lòng trình bày chi tiết các biện pháp kiểm soát bảo mật của mình cho khách hàng doanh nghiệp theo thỏa thuận NDA.

Báo cáo lỗ hổng bảo mật

Bạn phát hiện điều gì đó? Hãy gửi email đến [email protected]. Thông tin liên hệ dạng máy có thể đọc được của chúng tôi được công bố tại /.well-known/security.txt.