Khoá mã hoá do khách hàng quản lý (CMEK)

Theo mặc định, tất cả dữ liệu lưu trữ trong Cloud Firestore đều được mã hoá bằng phương thức mã hoá mặc định của Google. Cloud Firestore sẽ xử lý và quản lý quy trình mã hoá này cho bạn mà bạn không cần làm gì thêm.

Nếu có các yêu cầu cụ thể về việc tuân thủ hoặc quy định liên quan đến các khoá bảo vệ dữ liệu của mình, bạn có thể sử dụng khoá mã hoá do khách hàng quản lý (CMEK) cho Cloud Firestore. Thay vì Google quản lý các khoá mã hoá bảo vệ dữ liệu của bạn, cơ sở dữ liệu Cloud Firestore của bạn được bảo vệ bằng một khoá mà bạn kiểm soát và quản lý trong Cloud Key Management Service (Cloud KMS).

Trang này mô tả CMEK cho Cloud Firestore. Để biết thêm thông tin chung về CMEK, bao gồm cả thời điểm và lý do nên bật CMEK, hãy xem tài liệu sau đây về Cloud KMS:

Để biết hướng dẫn về cách thực hiện các nhiệm vụ liên quan đến CMEK bằng Cloud Firestore, hãy xem bài viết Sử dụng CMEK.

Tính năng

  • Chế độ kiểm soát dữ liệu: CMEK cho phép bạn quản lý khoá KMS. Bạn có thể xoay, tắt và huỷ khoá dùng để mã hoá dữ liệu ở trạng thái lưu trữ trong cơ sở dữ liệu Cloud Firestore.
  • Hiệu suất: CMEK không ảnh hưởng đến Cloud Firestore SLA.
  • Khả năng kiểm tra: Nếu bạn bật tính năng ghi nhật ký kiểm tra cho Cloud KMS, thì tất cả các thao tác trên khoá sẽ được ghi lại và có thể xem được trong Cloud Logging.
  • Các quy tắc ràng buộc của chính sách tổ chức: Bạn có thể sử dụng các quy tắc ràng buộc của chính sách tổ chức CMEK để chỉ định các yêu cầu tuân thủ về mã hoá cho cơ sở dữ liệu Cloud Firestore trong tổ chức của bạn.

Giá

Cloud KMS tính phí cho khoá và mọi thao tác mã hoá được thực hiện bằng khoá đó. Để biết thêm thông tin, hãy xem giá của Cloud KMS.

Bạn sẽ được tính phí cho chi phí vận hành khi Cloud Firestore yêu cầu khoá Cloud KMS thực hiện thao tác mã hoá hoặc giải mã. Thao tác mã hoá/giải mã bằng khoá do khách hàng quản lý diễn ra sau mỗi 5 phút và không được đồng bộ hoá với các yêu cầu về cơ sở dữ liệu. Chi phí thường thấp, dựa trên số lượng thao tác mã hoá dự kiến do Cloud Firestore tạo ra. Chi phí cho Nhật ký kiểm tra trên đám mây là một khoản chi phí bổ sung, nhưng cũng được dự kiến là thấp, dựa trên số lượng hoạt động mã hoá dự kiến.

Bạn không phải trả thêm phí Cloud Firestore khi sử dụng cơ sở dữ liệu được bảo vệ bằng CMEK và mức giá của Cloud Firestore vẫn được áp dụng.

Nếu bạn thu hồi khoá của mình đối với một cơ sở dữ liệu, thì chi phí lưu trữ sẽ được tính dựa trên kích thước của ngày cuối cùng mà khoá đó còn hiệu lực. Bạn sẽ tiếp tục phải chịu chi phí lưu trữ cho kích thước cơ sở dữ liệu đó cho đến khi cơ sở dữ liệu bị xoá hoặc khoá trở lại trạng thái có thể sử dụng.

Những dữ liệu được bảo vệ bằng CMEK

Khi bạn tạo một cơ sở dữ liệu được bảo vệ bằng Cloud Firestore CMEK, khoá Cloud KMS của bạn sẽ được dùng để bảo vệ dữ liệu ở trạng thái lưu trữ. Dữ liệu này bao gồm dữ liệu mà bạn lưu trữ trên ổ đĩa hoặc ổ flash, bao gồm cả chỉ mục và bản sao lưu. Có một số trường hợp ngoại lệ. Các loại dữ liệu sau đây được mã hoá bằng phương thức mã hoá mặc định của Google chứ không phải bằng khoá CMEK:

  • Dữ liệu đang truyền hoặc trong bộ nhớ
  • Siêu dữ liệu cơ sở dữ liệu

Cách xử lý trạng thái khoá không có sẵn

Các thao tác mã hoá và giải mã không được thực hiện trên mọi yêu cầu dữ liệu. Thay vào đó, hệ thống Cloud Firestore sẽ thăm dò Cloud KMS 5 phút một lần để kiểm tra xem khoá có còn hoạt động hay không, sau đó thực hiện các thao tác mã hoá và giải mã nếu khoá còn hoạt động.

Nếu hệ thống phát hiện thấy khoá không hoạt động, thì trong vòng 10 phút, mọi lệnh gọi tiếp theo đến cơ sở dữ liệu Cloud Firestore, bao gồm cả lệnh đọc, ghi và truy vấn, sẽ trả về lỗi FAILED_PRECONDITION kèm theo thông báo The customer-managed encryption key required by the requested resource is not accessible.

Nếu cơ sở dữ liệu có chính sách về thời gian tồn tại (TTL) và nếu có thời gian hết hạn nào bị vượt quá trong khi khoá không hoạt động, thì việc xoá dữ liệu theo TTL sẽ bị trì hoãn cho đến khi khoá được khôi phục. Nếu cơ sở dữ liệu có các thao tác đang chạy trong thời gian dài, thì các thao tác đó sẽ bị ảnh hưởng như sau:

  • Các hoạt động nhập hoặc xuất dữ liệu sẽ ngừng tiến hành và được đánh dấu là Failed. Các thao tác không thành công sẽ không được thử lại nếu khoá được khôi phục.
  • Các thao tác tạo chỉ mục và các thao tác bật chính sách TTL mới sẽ ngừng tiến trình. Các thao tác bị dừng sẽ được thử lại nếu khoá được khôi phục.

Khoá được coi là không có sẵn trong mọi trường hợp cố ý không cho phép Cloud Firestore truy cập vào khoá. Chẳng hạn như:

Nếu khoá được khôi phục, thao tác thăm dò ý kiến sẽ phát hiện thấy khoá đó đã hoạt động trở lại. Quyền truy cập sẽ được bật lại, thường là trong vòng vài phút, nhưng có thể mất đến vài giờ trong một số ít trường hợp. Xin lưu ý rằng một số thao tác đối với khoá Cloud KMS, chẳng hạn như vô hiệu hoá hoặc huỷ khoá, có thể mất đến 3 giờ để áp dụng. Cloud Firestore không phát hiện thấy thay đổi nào cho đến khi thay đổi đó có hiệu lực trong Cloud KMS.

Việc khôi phục khoá bao gồm những việc sau, tuỳ thuộc vào tình huống:

  • Bật lại phiên bản khoá đã bị vô hiệu hoá.
  • Khôi phục phiên bản khoá đã bị huỷ. Trước khi bị huỷ vĩnh viễn, một phiên bản khoá sẽ được lên lịch huỷ. Bạn chỉ có thể khôi phục khoá trong khoảng thời gian mà một phiên bản khoá được lên lịch huỷ. Bạn không thể khôi phục khoá đã bị huỷ vĩnh viễn.
  • Cấp lại quyền truy cập vào khoá cho tác nhân dịch vụ Cloud Firestore.

Những điểm cần lưu ý khi xoay vòng khoá

Khi bạn xoay vòng khoá CMEK, Cloud Firestore sẽ mã hoá lại cơ sở dữ liệu bằng phiên bản chính mới nhất của khoá CMEK. Trong quá trình mã hoá lại, hãy đảm bảo cả phiên bản khoá cũ và mới đều hoạt động. Sau khi quá trình mã hoá lại hoàn tất, việc vô hiệu hoá hoặc xoá các phiên bản cũ của khoá CMEK sẽ không vô hiệu hoá quyền truy cập vào cơ sở dữ liệu vì cơ sở dữ liệu này được mã hoá bằng phiên bản khoá chính mới.

Bạn cũng có thể xem các phiên bản khoá đang được dùng để bảo vệ cơ sở dữ liệu. Để biết thêm thông tin, hãy xem phần Xem khoá đang được sử dụng.

Những điểm chính cần xem xét về khoá bên ngoài

Khi bạn sử dụng khoá Cloud EKM, Google không kiểm soát được khả năng sử dụng của khoá do bạn quản lý bên ngoài trong hệ thống của đối tác quản lý khoá bên ngoài.

Nếu không có khoá được quản lý bên ngoài, Cloud Firestore sẽ tiếp tục hỗ trợ các thao tác đầy đủ trên cơ sở dữ liệu trong khả năng tốt nhất có thể trong tối đa một giờ.

Sau một giờ, nếu Cloud Firestore vẫn không thể kết nối với Cloud KMS, thì Cloud Firestore sẽ bắt đầu chuyển cơ sở dữ liệu sang chế độ ngoại tuyến để bảo vệ. Các lệnh gọi đến cơ sở dữ liệu sẽ không thành công và trả về lỗi FAILED_PRECONDITION kèm theo thông tin chi tiết bổ sung.

Hãy xem tài liệu về Cloud External Key Manager để biết thêm thông tin về cách sử dụng khoá bên ngoài.

Sao lưu và khôi phục

Bản sao lưu sử dụng cùng một cơ chế mã hoá với cơ sở dữ liệu mà bạn đã tạo bản sao lưu. Khi một cơ sở dữ liệu Cloud Firestore được bảo vệ bằng CMEK tạo bản sao lưu, cơ sở dữ liệu đó sẽ mã hoá bản sao lưu bằng phiên bản khoá chính được dùng tại thời điểm tạo bản sao lưu.

Cloud Firestore sẽ tạo bản sao lưu đầu tiên của cơ sở dữ liệu CMEK sau 24 giờ kể từ thời điểm bạn bật lịch sao lưu.

Để biết thêm thông tin về bản sao lưu Cloud Firestore, hãy xem bài viết Sao lưu và khôi phục dữ liệu.

Theo mặc định, cơ sở dữ liệu được khôi phục từ bản sao lưu sẽ sử dụng cùng một cơ chế mã hoá như bản sao lưu. Khi khôi phục cơ sở dữ liệu, bạn có thể chỉ định một loại mã hoá khác theo một trong những cách sau:

  • Khôi phục về cơ sở dữ liệu CMEK bằng khoá mới được chỉ định.
  • Khôi phục về cơ sở dữ liệu không phải CMEK sử dụng phương thức mã hoá mặc định của Google.
  • Khôi phục vào một cơ sở dữ liệu sử dụng cùng phương thức mã hoá với bản sao lưu.

Để biết thêm thông tin về cách khôi phục cơ sở dữ liệu Cloud Firestore từ một bản sao lưu, hãy xem bài viết Khôi phục dữ liệu từ bản sao lưu cơ sở dữ liệu. Để biết thêm thông tin về cách khôi phục cơ sở dữ liệu Cloud Firestore được bảo vệ bằng CMEK từ bản sao lưu, hãy xem bài viết Khôi phục cơ sở dữ liệu được bảo vệ bằng CMEK.

Sao chép

Theo mặc định, cơ sở dữ liệu được sao chép từ một cơ sở dữ liệu khác sẽ sử dụng cùng một cơ chế mã hoá như cơ sở dữ liệu nguồn. Khi sao chép cơ sở dữ liệu, bạn có thể chỉ định một loại mã hoá khác theo một trong những cách sau:

  • Sao chép sang cơ sở dữ liệu CMEK bằng khoá mới được chỉ định.
  • Sao chép sang một cơ sở dữ liệu không phải CMEK sử dụng phương thức mã hoá mặc định của Google.
  • (Mặc định) Sao chép sang một cơ sở dữ liệu sử dụng cùng phương thức mã hoá với cơ sở dữ liệu nguồn.

Để biết thêm thông tin về cách sao chép cơ sở dữ liệu Cloud Firestore, hãy xem bài viết Sao chép cơ sở dữ liệu. Để biết thêm thông tin về cách sao chép cơ sở dữ liệu Cloud Firestore được bảo vệ bằng CMEK, hãy xem bài viết Sao chép cơ sở dữ liệu được bảo vệ bằng CMEK.

Theo dõi khoá

Bạn có thể sử dụng tính năng theo dõi khoá để xem các tài nguyên (ví dụ: cơ sở dữ liệu Cloud Firestore) mà khoá bảo vệ. Để biết thêm thông tin về việc theo dõi khoá, hãy xem phần Xem mức sử dụng khoá.

CMEK và khả năng sử dụng khoá

Khi khoá không hoạt động hoặc bị vô hiệu hoá, hãy lưu ý những hành vi sau có thể xảy ra trong cơ sở dữ liệu đã bật CMEK:

  • Bạn có thể thay đổi chế độ cài đặt khôi phục về thời điểm cụ thể (PITR) của Cloud Firestore trên một cơ sở dữ liệu đã bật CMEK ngay cả khi khoá không hoạt động, vì chế độ cài đặt PITR là siêu dữ liệu của cơ sở dữ liệu và không được CMEK mã hoá.
  • Bạn có thể xoá cơ sở dữ liệu CMEK có khoá không dùng được.
  • Khi bạn tạo cơ sở dữ liệu có bật CMEK, các khoá bị vô hiệu hoá sẽ không xuất hiện trong danh sách khoá có sẵn trên Google Cloud Console. Nếu bạn nhập khoá bị vô hiệu hoá theo cách thủ công, thì quá trình tạo cơ sở dữ liệu sẽ không thành công và xuất hiện lỗi FAILED_PRECONDITION 400.

Hạn chế

  • Bạn không thể thay đổi khoá cho cơ sở dữ liệu được bảo vệ bằng CMEK. Bạn có thể xoay vòng, bật và tắt khoá.
  • Cơ sở dữ liệu được bảo vệ bằng CMEK chỉ hỗ trợ Trình hiển thị khoá cho dữ liệu thực thể và tài liệu, chứ không hỗ trợ cho dữ liệu chỉ mục.
  • Bạn không thể bật CMEK trên cơ sở dữ liệu hiện có. Bạn chỉ có thể bật CMEK trên cơ sở dữ liệu mới và phải bật CMEK khi tạo cơ sở dữ liệu. Để di chuyển dữ liệu trong cơ sở dữ liệu hiện có không phải CMEK sang cơ sở dữ liệu được CMEK bảo vệ, hãy xuất dữ liệu của bạn rồi nhập dữ liệu vào cơ sở dữ liệu mới được CMEK bảo vệ. Bạn cũng có thể khôi phục hoặc sao chép dữ liệu từ cơ sở dữ liệu không phải CMEK sang cơ sở dữ liệu CMEK.
  • Cloud Firestore hỗ trợ một số lượng giới hạn cơ sở dữ liệu được bảo vệ bằng CMEK.
  • Chúng tôi không hỗ trợ tính năng bảo vệ bằng CMEK khi tích hợp với Cloud Functions (thế hệ thứ 1). Nếu bạn muốn được bảo vệ bằng CMEK, hãy sử dụng Cloud Run Trình kích hoạt Firestore (thế hệ thứ 2).

Cách dữ liệu có thể rời khỏi cơ sở dữ liệu được bảo vệ bằng CMEK

  • Người dùng có thể lưu trữ dữ liệu do ứng dụng của bạn sao chép theo nhiều cách tuỳ ý. Mọi ứng dụng truy cập vào dữ liệu của Cloud Firestore đều phải có các biện pháp kiểm soát bảo mật thích hợp để đảm bảo rằng chỉ những người được uỷ quyền mới có thể truy cập vào dữ liệu đó. Hãy xem quy tắc bảo mật và IAM để biết thêm thông tin chi tiết.

  • Bạn có thể di chuyển dữ liệu từ cơ sở dữ liệu được bảo vệ bằng CMEK sang cơ sở dữ liệu không được bảo vệ bằng CMEK bằng cách sử dụng tính năng Sao lưu và khôi phục, Sao chép hoặc Nhập và Xuất. Sử dụng các chế độ kiểm soát IAM thích hợp để chỉ cấp quyền thực hiện các hành động này cho người dùng được uỷ quyền. Ngoài ra, bạn có thể sử dụng các quy tắc ràng buộc của chính sách tổ chức CMEK để yêu cầu mọi cơ sở dữ liệu được tạo bằng cách khôi phục hoặc sao chép và mọi bộ chứa Cloud Storage dùng cho tính năng Nhập đều được bảo vệ bằng CMEK.

Bước tiếp theo