Tiện ích Xoá dữ liệu người dùng (delete-user-data
) cho phép bạn xoá dữ liệu của người dùng khi người dùng đó bị xoá khỏi dự án Firebase của bạn. Bạn có thể định cấu hình tiện ích này để xoá dữ liệu người dùng khỏi một hoặc tất cả các dịch vụ sau: Cloud Firestore, Realtime Database hoặc Cloud Storage. Mỗi điều kiện kích hoạt của tiện ích để xoá dữ liệu đều được liên kết với UserId
của người dùng.
Tiện ích này hữu ích trong việc tôn trọng quyền riêng tư của người dùng và đáp ứng các yêu cầu tuân thủ. Tuy nhiên, việc sử dụng tiện ích này không đảm bảo rằng bạn sẽ tuân thủ các quy định của chính phủ và ngành.
Điều kiện tiên quyết
Bạn phải sử dụng Xác thực Firebase để quản lý người dùng.
Tiện ích này chỉ xoá dữ liệu khỏi Cloud Firestore, Cơ sở dữ liệu theo thời gian thực và Cloud Storage. Nếu lưu trữ dữ liệu người dùng ở nơi khác, bạn cũng nên xoá dữ liệu người dùng khỏi những nguồn đó khi xoá người dùng.
Cài đặt tiện ích
Để cài đặt tiện ích, hãy làm theo các bước trên trang Cài đặt tiện ích Firebase. Tóm lại, hãy thực hiện một trong những thao tác sau:
Bảng điều khiển của Firebase: Nhấp vào nút sau:
CLI: Chạy lệnh sau:
firebase ext:install firebase/delete-user-data --project=projectId-or-alias
Trong quá trình cài đặt tiện ích, bạn sẽ được nhắc chỉ định một số tham số cấu hình:
Vị trí của Cloud Functions:
Chọn vị trí mà bạn muốn triển khai các hàm được tạo cho tiện ích này. Bạn thường muốn có một vị trí gần với cơ sở dữ liệu của mình. Để được trợ giúp chọn vị trí, hãy tham khảo hướng dẫn chọn vị trí.
Đường dẫn Cloud Firestore:
Những đường dẫn nào trong phiên bản Cloud Firestore của bạn chứa dữ liệu người dùng? Để trống nếu bạn không dùng Cloud Firestore. Nhập đường dẫn đầy đủ, phân tách bằng dấu phẩy. Bạn có thể biểu thị Mã nhận dạng người dùng của người dùng đã bị xoá bằng
{UID}
. Ví dụ: nếu có các bộ sưu tậpusers
vàadmins
, đồng thời mỗi bộ sưu tập có các tài liệu với Mã nhận dạng người dùng làm mã nhận dạng tài liệu, thì bạn có thể nhậpusers/{UID},admins/{UID}
.Chế độ xoá Cloud Firestore:
(Chỉ áp dụng nếu bạn sử dụng tham số
Cloud Firestore paths
.) Bạn muốn xoá tài liệu Cloud Firestore như thế nào? Để xoá cả các tài liệu trong các bộ sưu tập con, hãy đặt tham số này thànhrecursive
.Phiên bản Cơ sở dữ liệu theo thời gian thực:
Bạn muốn xoá dữ liệu người dùng khỏi phiên bản Realtime Database nào?
Vị trí của Cơ sở dữ liệu theo thời gian thực:
(Chỉ áp dụng nếu bạn cung cấp tham số
Realtime Database instance
.) Bạn muốn xoá dữ liệu người dùng ở vị trí nào trong Cơ sở dữ liệu theo thời gian thực?Đường dẫn Cơ sở dữ liệu theo thời gian thực:
Những đường dẫn nào trong phiên bản Realtime Database của bạn chứa dữ liệu người dùng? Để trống nếu bạn không sử dụng Cơ sở dữ liệu theo thời gian thực. Nhập đường dẫn đầy đủ, phân tách bằng dấu phẩy. Bạn có thể biểu thị Mã nhận dạng người dùng của người dùng đã bị xoá bằng
{UID}
. Ví dụ:users/{UID},admins/{UID}
.Đường dẫn Cloud Storage:
Bạn lưu trữ dữ liệu người dùng ở đâu trong Google Cloud Storage? Để trống nếu bạn không sử dụng Bộ nhớ đám mây. Nhập đường dẫn đầy đủ đến các tệp hoặc thư mục trong Nhóm lưu trữ, phân tách bằng dấu phẩy. Sử dụng
{UID}
để biểu thị User ID của người dùng đã bị xoá và sử dụng{DEFAULT}
để biểu thị Thùng lưu trữ mặc định của bạn.Sau đây là một loạt ví dụ:
- Để xoá tất cả các tệp trong nhóm mặc định của bạn bằng quy tắc đặt tên tệp
{UID}-pic.png
, hãy nhập{DEFAULT}/{UID}-pic.png
. - Để xoá tất cả các tệp trong một nhóm khác có tên là
my-app-logs
theo quy tắc đặt tên tệp{UID}-logs.txt
, hãy nhập{DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt
. - Để cũng xoá một thư mục được gắn nhãn Mã nhận dạng người dùng và tất cả các tệp trong thư mục đó (chẳng hạn như
media/{UID}
), hãy nhập{DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt,{DEFAULT}/media/{UID}
.
- Để xoá tất cả các tệp trong nhóm mặc định của bạn bằng quy tắc đặt tên tệp
Phát hiện dữ liệu cần xoá
Tiện ích này sử dụng một số cơ chế để phát hiện dữ liệu cần xoá. Bạn phải định cấu hình rõ ràng các cơ chế này để tiện ích xoá dữ liệu. Tiện ích này sẽ chỉ xoá dữ liệu được định cấu hình rõ ràng để xoá dựa trên các cơ chế được cung cấp.
Hãy lưu ý những điểm khác biệt sau đây về hành vi giữa mỗi dịch vụ:
- Cloud Firestore: hành vi mặc định là xoá nông một tài liệu (các bộ sưu tập con sẽ không bị xoá). Để xoá đệ quy tất cả các bộ sưu tập con của một tài liệu, hãy đặt lựa chọn "Chế độ xoá Cloud Firestore" thành "Đệ quy".
- Realtime Database: tất cả dữ liệu tại nút được chỉ định sẽ bị xoá.
- Bộ nhớ: nếu bạn chỉ định một đường dẫn thư mục, thì tất cả các tệp và thư mục con sẽ bị xoá.
Theo đường dẫn
Khi định cấu hình các đường dẫn Cloud Firestore, Realtime Database và Cloud Storage, bạn có thể xác định một biến UID
trong các đường dẫn sẽ được thay thế bằng UID của người dùng đã xác thực. Khi một người dùng bị xoá, tiện ích sẽ xoá tất cả dữ liệu được khoá bằng UID đó tại các đường dẫn đã cho, ví dụ:
- Đường dẫn Cloud Firestore:
users/{UID},admins/{UID}
- Đường dẫn đến Cơ sở dữ liệu theo thời gian thực:
likes/{UID}
- Đường dẫn đến Cloud Storage:
{DEFAULT}/uploads/{UID},{DEFAULT}/avatars/{UID}.jpeg
Tự động phát hiện (Cloud Firestore)
Để cho phép tiện ích tự động phát hiện các tài liệu Firestore cần xoá, hãy đặt thông số cấu hình "Bật tính năng tự động phát hiện" thành "Có".
Tính năng tự động phát hiện hoạt động bằng cách tự động duyệt qua cơ sở dữ liệu để tìm các bộ sưu tập và tài liệu cần xoá theo cấu hình của bạn. Tiện ích xác định những bộ sưu tập và tài liệu đó bằng phương pháp sau:
- Trước tiên, tiện ích sẽ tìm tất cả các tập hợp gốc trong cơ sở dữ liệu. Nếu mã nhận dạng của một bộ sưu tập khớp với mã nhận dạng người dùng (UID), thì toàn bộ bộ sưu tập sẽ bị xoá (việc xoá là đệ quy hoặc nông, tuỳ thuộc vào cấu hình của tiện ích cho "Chế độ xoá Cloud Firestore").
- Thứ hai, nếu mã nhận dạng bộ sưu tập không khớp, tiện ích sẽ cố gắng xác định và xoá một tài liệu nếu mã nhận dạng tài liệu của tài liệu đó khớp với mã nhận dạng người dùng (UID) của người dùng.
- Cuối cùng, đối với mỗi tài liệu: a. Nếu độ sâu tìm kiếm hiện tại (xem bên dưới) nhỏ hơn hoặc bằng độ sâu tìm kiếm đã định cấu hình, thì quy trình này sẽ được lặp lại cho tất cả các bộ sưu tập con của tài liệu hiện tại. b. Nếu bạn đã định cấu hình các trường tìm kiếm, thì tiện ích sẽ kiểm tra xem các trường được cung cấp có khớp với UID của người dùng hay không. Nếu tìm thấy nội dung trùng khớp, tài liệu sẽ bị xoá.
Số trang trung bình được xem sau mỗi tìm kiếm
Tiện ích này cung cấp một giá trị độ sâu tìm kiếm có thể định cấu hình (mặc định là 3). Quá trình duyệt qua sẽ chỉ được thực thi nếu độ sâu tìm kiếm hiện tại nhỏ hơn hoặc bằng độ sâu tìm kiếm đã định cấu hình. Độ sâu tìm kiếm hiện tại dựa trên độ sâu của bộ sưu tập hiện tại hoặc bộ sưu tập mẹ của tài liệu, ví dụ:
/users = 1
/users/<document-id> = 1
/users/<document-id>/comments = 2
/users/<document-id>/comments/<document-id> = 2
Tiện ích này sẽ KHÔNG tự động xoá UID được lưu trữ trong các mảng hoặc bản đồ, đồng thời sẽ không tìm kiếm dữ liệu được khoá bằng mã nhận dạng người dùng được lưu trữ trong các bộ sưu tập con lồng nhau sâu quá độ sâu được chỉ định ở trên.