Theo mặc định, tất cả dữ liệu khi lưu trữ trong Cloud Firestore có khả năng tương thích với MongoDB đều được mã hoá bằng phương thức mã hoá mặc định của Google. Cloud Firestore có khả năng tương thích với MongoDB sẽ xử lý và quản lý việc 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, bạn có thể sử dụng khoá mã hoá do khách hàng quản lý (CMEK) cho Cloud Firestore có khả năng tương thích với MongoDB. 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 tương thích với MongoDB sẽ đượ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 có khả năng tương thích với MongoDB. Để biết thêm thông tin về CMEK nói chung, 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 của Cloud KMS:
Để biết hướng dẫn về cách thực hiện các tác vụ liên quan đến CMEK bằng Cloud Firestore có khả năng tương thích với MongoDB, hãy xem phần Sử dụng CMEK.
Tính năng
- Kiểm soát dữ liệu: CMEK cho phép bạn quản lý khoá KMS. Bạn có thể xoay vòng, vô hiệu hoá và huỷ khoá dùng để mã hoá dữ liệu không hoạt động trong Cloud Firestore có cơ sở dữ liệu tương thích với MongoDB.
- 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, tất cả các thao tác trên khoá sẽ được ghi nhật ký và có thể xem trong Cloud Logging.
- Các quy định hạn chế về chính sách tổ chức: Bạn có thể sử dụng các quy định hạn chế về chính sách tổ chức CMEK để chỉ định các yêu cầu tuân thủ về hoạt động mã hoá cho Cloud Firestore bằng cơ sở dữ liệu tương thích với MongoDB trong tổ chức của mình.
Giá
Cloud KMS tính phí cho chi phí của 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 bài viết Giá của Cloud KMS.
Bạn sẽ bị tính phí cho chi phí hoạt động khi Cloud Firestore có khả năng tương thích với MongoDB yêu cầu khoá Cloud KMS thực hiện một thao tác mã hoá hoặc giải mã. Hoạt động mã hoá hoặc giải mã bằng khoá do khách hàng quản lý diễn ra 5 phút một lần và không đồ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 có khả năng tương thích với MongoDB. Chi phí cho Nhật ký kiểm tra Cloud là một khoản chi phí bổ sung, nhưng cũng được dự kiến là thường 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 chi phí nào khi sử dụng Cloud Firestore có khả năng tương thích với MongoDB cho cơ sở dữ liệu được bảo vệ bằng CMEK và bảng giá Cloud Firestore có khả năng tương thích với MongoDB vẫn được áp dụng.
Nếu bạn thu hồi khoá đố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ó hiệu lực. Bạn sẽ tiếp tục phải trả phí lưu trữ ở kích thước cơ sở dữ liệu đó cho đến khi cơ sở dữ liệu bị xoá hoặc khoá có sẵn trở lại.
Nội dung được bảo vệ bằng CMEK
Khi bạn tạo một Cloud Firestore có cơ sở dữ liệu được bảo vệ bằng CMEK tương thích với MongoDB, khoá Cloud KMS sẽ được dùng để bảo vệ dữ liệu tĩnh. Trong đó bao gồm dữ liệu mà bạn lưu trữ trên ổ đĩa hoặc ổ đĩa 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 đượ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 dùng được
Các thao tác mã hoá và giải mã không được phát hành trên mọi yêu cầu dữ liệu. Thay vào đó, hệ thống Cloud Firestore tương thích với MongoDB sẽ thăm dò Cloud KMS 5 phút một lần để kiểm tra xem khoá có còn hay không, sau đó thực hiện các thao tác mã hoá và giải mã nếu khoá còn.
Nếu hệ thống phát hiện thấy khoá không dùng được, thì trong vòng 10 phút, mọi lệnh gọi tiếp theo đến Cloud Firestore bằng cơ sở dữ liệu tương thích với MongoDB, bao gồm cả các thao tác đọc, ghi và truy vấn, sẽ trả về lỗi INVALID_ARGUMENT
kèm theo thông báo sau:
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 thời gian tồn tại (TTL) và nếu bất kỳ 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 đang có các thao tác diễn ra trong thời gian dài, thì các thao tác đó sẽ bị ảnh hưởng như sau:
- Các thao tác tạo chỉ mục và các thao tác cho phép các chính sách TTL mới sẽ ngừng tiến hà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 có khả năng tương thích với MongoDB truy cập vào khoá. Chẳng hạn như:
- Tắt hoặc huỷ phiên bản khoá đang dùng. Hãy cẩn thận khi huỷ một phiên bản khoá, vì thao tác này có thể gây mất dữ liệu không thể khôi phục.
- Xoá quyền truy cập vào khoá từ tài khoản dịch vụ Cloud Firestore có khả năng tương thích với MongoDB.
Nếu khoá được khôi phục, thao tác thăm dò sẽ phát hiện thấy khoá đã có sẵn 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 trong một số ít trường hợp có thể mất đến vài giờ. Xin lưu ý rằng một số thao tác trên khoá Cloud KMS (chẳng hạn như vô hiệu hoá hoặc huỷ khoá) có thể mất đến 3 giờ để truyền tải. Cloud Firestore có khả năng tương thích với MongoDB sẽ không phát hiện thấy bất kỳ thay đổi nào cho đến khi các thay đổi đó có hiệu lực trong Cloud KMS.
Việc khôi phục một khoá bao gồm những việc sau, tuỳ thuộc vào tình huống:
- Bật lại một phiên bản khoá đã tắt.
- Khôi phục một 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 một khoá đã bị huỷ vĩnh viễn.
- Cấp lại quyền cho tác nhân dịch vụ Cloud Firestore để truy cập vào khoá.
Những điểm cần cân nhắc khi xoay vòng khoá
Khi bạn xoay khoá CMEK, Cloud Firestore có khả năng tương thích với MongoDB 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 giữ cả phiên bản khoá cũ và khoá mới. Sau khi quá trình mã hoá lại hoàn tất, việc tắt hoặc xoá các phiên bản trướ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 đượ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 dùng.
Những điểm cần cân nhắc về khoá bên ngoài
Khi bạn sử dụng khoá Cloud EKM, Google không kiểm soát được tính sẵn có của khoá do bên ngoài quản lý trong hệ thống đối tác quản lý khoá bên ngoài.
Nếu không có khoá do bên ngoài quản lý, Cloud Firestore có khả năng tương thích với MongoDB sẽ tiếp tục hỗ trợ các thao tác đầy đủ trên cơ sở dữ liệu bằng cách sử dụng phiên bản khoá được lưu vào bộ nhớ đệm trong tối đa một giờ.
Sau một giờ, nếu Cloud Firestore có khả năng tương thích với MongoDB vẫn không thể kết nối với Cloud KMS, thì Cloud Firestore có khả năng tương thích với MongoDB sẽ bắt đầu chuyển cơ sở dữ liệu sang chế độ ngoại tuyến như một biện pháp bảo vệ. Các lệnh gọi đến cơ sở dữ liệu sẽ không thành công với lỗi INVALID_ARGUMENT
bao gồm thông tin chi tiết bổ sung.
Hãy xem tài liệu về Cloud External Key Manager để biết thêm các điểm cần cân nhắc khi 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á như cơ sở dữ liệu mà bạn đã tạo bản sao lưu đó. Khi tạo bản sao lưu, Cloud Firestore được bảo vệ bằng CMEK có cơ sở dữ liệu tương thích với MongoDB 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 có khả năng tương thích với MongoDB 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ề Cloud Firestore có khả năng tương thích với bản sao lưu MongoDB, hãy xem phần 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ào cơ sở dữ liệu CMEK bằng một khoá mới được chỉ định.
- Khôi phục về một cơ sở dữ liệu không phải CMEK sử dụng quy trình 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 Cloud Firestore bằng cơ sở dữ liệu tương thích với MongoDB từ bản sao lưu, hãy xem phần 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ó khả năng tương thích với MongoDB được bảo vệ bằng CMEK từ bản sao lưu, hãy xem phần 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 cơ chế mã hoá với 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 vào cơ sở dữ liệu CMEK bằng một khoá mới được chỉ định.
- Sao chép vào một cơ sở dữ liệu không phải CMEK sử dụng quy trình mã hoá mặc định của Google.
- (Mặc định) Sao chép vào 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 một cơ sở dữ liệu Cloud Firestore có khả năng tương thích với MongoDB, hãy xem phần Sao chép cơ sở dữ liệu. Để biết thêm thông tin về cách sao chép một Cloud Firestore được bảo vệ bằng CMEK với cơ sở dữ liệu tương thích với MongoDB, hãy xem phần Sao chép cơ sở dữ liệu được bảo vệ bằng CMEK.
Theo dõi khoá
Bạn có thể dùng tính năng theo dõi khoá để xem các tài nguyên mà một khoá bảo vệ, chẳng hạn như cơ sở dữ liệu Cloud Firestore có khả năng tương thích với MongoDB. Để biết thêm thông tin về tính năng theo dõi khoá, hãy xem phần Xem mức sử dụng khoá.
CMEK và tính sẵn có của khoá
Khi khoá không có sẵn hoặc bị vô hiệu hoá, hãy lưu ý đến những hành vi sau đây có thể xảy ra trong cơ sở dữ liệu có bật CMEK:
Bạn có thể xoá cơ sở dữ liệu CMEK có các khoá không dùng được.
Khi bạn tạo một 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 các khoá có sẵn trong 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à gặp lỗi
INVALID_ARGUMENT
400.
Các điểm 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, bật và tắt các khoá.
Bạn không thể bật CMEK trên các cơ sở dữ liệu hiện có. Bạn chỉ có thể bật CMEK trên các 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 một cơ sở dữ liệu hiện có không phải là cơ sở dữ liệu được bảo vệ bằng CMEK sang một cơ sở dữ liệu được bảo vệ bằng CMEK, hãy xuất dữ liệu rồi nhập dữ liệu vào một cơ sở dữ liệu mới được bảo vệ bằng CMEK. 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 chỉ hỗ trợ một số ít cơ sở dữ liệu được bảo vệ bằng CMEK.