Theo mặc định, tất cả dữ liệu ở trạng thái tĩnh trong Cloud Firestore đều được mã hoá bằng quy trình mã hoá mặc định của Google. Cloud Firestore sẽ xử lý và quản lý quá 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 tuân thủ hoặc quy định cụ thể liên quan đến các khoá bảo vệ dữ liệu của bạn, 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 sẽ được bảo vệ bằng một khoá mà bạn kiểm soát và quản lý trong Dịch vụ quản lý khoá trên đám mây (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 bật tính năng này, 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 tác vụ liên quan đến CMEK bằng Cloud Firestore, 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ô hiệu hoá và huỷ khoá dùng để mã hoá dữ liệu tĩnh trong cơ sở dữ liệu Cloud Firestore.
- Hiệu suất: CMEK không ảnh hưởng đến SLA Cloud Firestore.
- 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 trong Cloud Logging.
- Hạn chế theo chính sách của tổ chức: Bạn có thể sử dụng các hạn chế theo chính sách của tổ chức về CMEK để chỉ định các yêu cầu tuân thủ về việc 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 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 các chi phí hoạt động khi Cloud Firestore yêu cầu khoá KMS trên đám mây thực hiện một 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 5 phút một lần và không được đồng bộ hoá với các yêu cầu 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 dự kiến sẽ ở mức 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á 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í bộ nhớ sẽ được tính dựa trên kích thước của ngày cuối cùng mà khoá đó có sẵn. Bạn sẽ tiếp tục phải trả phí lưu trữ theo 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 cơ sở dữ liệu Cloud Firestore được bảo vệ bằng CMEK, khoá Cloud KMS sẽ được dùng để bảo vệ dữ liệu ở trạng thái tĩnh. Dữ liệu này 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ố 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 thăm dò ý kiến Cloud KMS mỗi 5 phút để 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ó sẵn.
Nếu hệ thống phát hiện khoá không có sẵn, 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ả cá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 thời gian tồn tại (TTL) và nếu thời gian hết hạn bị vượt quá trong khi khoá không có sẵn, 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 nhập hoặc xuất dữ liệu sẽ ngừng tiến triển 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à thao tác bật chính sách TTL mới sẽ ngừng tiến triển. 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ố tình không cho phép Cloud Firestore truy cập vào khoá. Chẳng hạn như:
- Tắt hoặc huỷ bỏ phiên bản khoá đang sử dụng. Hãy cẩn thận khi huỷ bỏ một phiên bản khoá, vì thao tác này có thể khiến dữ liệu bị mất mà không thể khôi phục được.
- Xoá quyền truy cập vào khoá từ tài khoản dịch vụ Cloud Firestore.
Nếu khoá được khôi phục, thao tác thăm dò sẽ phát hiện 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ư tắt hoặc huỷ khoá, có thể mất tới 3 giờ để truyền tải. Cloud Firestore không phát hiện 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 khoá sẽ bao gồm những bước sau, tuỳ thuộc vào trường hợp:
- Bật lại phiên bản khoá đã tắt.
- Khôi phục phiên bản khoá đã bị huỷ. Trước khi bị huỷ vĩnh viễn, 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à phiên bản khoá được lên lịch huỷ bỏ. Bạn không thể khôi phục khoá đã bị huỷ bỏ 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 cân nhắc khi xoay vòng khoá
Khi bạn xoay 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 giữ cả phiên bản khoá cũ và 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 cũ của khoá CMEK sẽ không tắt 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 sử 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 có quyền kiểm soát trạng thái có sẵn 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 sẽ tiếp tục hỗ trợ các hoạt động cơ sở dữ liệu đầy đủ 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, 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ới lỗi FAILED_PRECONDITION
chứa 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 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 này sẽ mã hoá bản sao lưu bằng phiên bản khoá chính được sử dụng tại thời điểm tạo bản sao lưu.
Cloud Firestore 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 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 khoá mới chỉ định.
- Khôi phục vào 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 cơ sở dữ liệu sử dụng cùng một 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ừ 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 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.
Theo dõi phím
Bạn có thể sử dụng tính năng theo dõi khoá để xem các tài nguyên, chẳng hạn như cơ sở dữ liệu Cloud Firestore mà khoá bảo vệ. Để 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 trạng sẵn có của khoá
Khi không có khoá hoặc khoá bị tắt, hãy lưu ý những hành vi sau đây có thể xảy ra trong cơ sở dữ liệu hỗ trợ CMEK:
- Bạn có thể thay đổi chế độ cài đặt khôi phục tại một thời điểm (PITR) Cloud Firestore trên cơ sở dữ liệu hỗ trợ CMEK ngay cả khi không có khoá vì chế độ cài đặt PITR là siêu dữ liệu cơ sở dữ liệu và không được CMEK mã hoá.
- 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 cơ sở dữ liệu hỗ trợ CMEK, các khoá đã tắt sẽ không xuất hiện trong danh sách khoá có sẵn trong Google Cloud Console. Nếu bạn nhập khoá bị tắt theo cách thủ công, quá trình tạo cơ sở dữ liệu sẽ không thành công với lỗi
FAILED_PRECONDITION
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 phím.
- Cơ sở dữ liệu được bảo vệ bằng CMEK chỉ hỗ trợ Trình trực quan hoá khoá cho dữ liệu thực thể và tài liệu, chứ không hỗ trợ dữ liệu chỉ mục.
- 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ơ sở dữ liệu mới và phải bật tính năng này khi tạo cơ sở dữ liệu. Để di chuyển dữ liệu trong cơ sở dữ liệu không phải CMEK hiện có sang 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 cơ sở dữ liệu mới được bảo vệ bằng CMEK. Bạn cũng có thể khôi phục 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 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ệ 1). Nếu bạn muốn có tính năng bảo vệ CMEK, hãy sử dụng các hàm Cloud Run của Trình kích hoạt Firestore (thế hệ 2).