Sử dụng tiện ích Delete User Data

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 bất kỳ hoặc tất cả các loại dữ liệu sau đây: Cloud Firestore, Cơ sở dữ liệu theo thời gian thực 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 khoá 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 về tuân thủ. Tuy nhiên, việc sử dụng tiện ích này không đảm bảo việc tuân thủ các quy định của chính phủ và ngành.

Điều kiện tiên quyết

Cài đặt tiện ích

Để cài đặt tiện ích này, 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 làm theo một trong những cách sau:

  • Bảng điều khiển của Firebase: Nhấp vào nút sau:

    Cài đặt tiện ích Delete User Data

  • 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 này, 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 cơ sở dữ liệu của mình. Để được trợ giúp chọn một vị trí, hãy tham khảo hướng dẫn chọn vị trí.

  • Đường dẫn Cloud Firestore:

    Đườ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? Hãy để trống nếu bạn không sử dụng Cloud Firestore. Hãy nhập các đường dẫn đầy đủ, phân tách bằng dấu phẩy. Bạn có thể dùng {UID} để biểu thị Mã nhận dạng người dùng của người dùng đã bị xoá. Ví dụ: nếu bạn có các bộ sưu tập usersadmins, đồng thời mỗi bộ sưu tập đều có các tài liệu với Mã nhận dạng người dùng là mã nhận dạng tài liệu, thì bạn có thể nhập users/{UID},admins/{UID}.

  • Chế độ xoá trong 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 trên Cloud Firestore theo cách nào? Để xoá cả tài liệu trong tập hợp con, hãy đặt thông số này thành recursive.

  • 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 từ phiên bản Cơ sở dữ liệu theo thời gian thực 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 thông số Realtime Database instance.) Bạn muốn xoá dữ liệu người dùng từ vị trí nào trong Cơ sở dữ liệu theo thời gian thực?

  • Đường dẫn của Cơ sở dữ liệu theo thời gian thực:

    Đường dẫn nào trong phiên bản Cơ sở dữ liệu theo thời gian thực của bạn chứa dữ liệu người dùng? Hãy để trống nếu bạn không sử dụng Cơ sở dữ liệu theo thời gian thực. Hãy nhập các đường dẫn đầy đủ, phân tách bằng dấu phẩy. Bạn có thể dùng {UID} để biểu thị Mã nhận dạng người dùng của người dùng đã bị xoá. Ví dụ: users/{UID},admins/{UID}.

  • Đường dẫn của 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 Cloud Storage. Nhập đường dẫn đầy đủ đến các tệp hoặc thư mục trong Bộ chứa lưu trữ, phân tách bằng dấu phẩy. Sử dụng {UID} để biểu thị Mã nhận dạng người dùng của người dùng đã bị xoá và dùng {DEFAULT} để biểu thị Bộ chứa Bộ nhớ mặc định.

    Dưới đây là một loạt ví dụ:

    • Để xoá tất cả tệp trong bộ chứa mặc định bằng lượ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 bộ chứa khác có tên là my-app-logs bằng lượ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}.

Khám phá dữ liệu để xoá

Tiện ích này sử dụng một vài cơ chế để khám phá dữ liệu để xoá. Bạn phải định cấu hình các cơ chế này một cách rõ ràng thì tiện ích mới có thể 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 từng dịch vụ:

  • Cloud Firestore: chế độ mặc định là xoá nông một tài liệu (các bộ sưu tập phụ sẽ không bị xoá). Để xoá định kỳ tất cả các tập hợp con của một tài liệu, hãy đặt tuỳ chọn "Chế độ xoá trên Cloud Firestore" thành "Recursive".
  • Cơ sở dữ liệu theo thời gian thực: tất cả dữ liệu ở nút đã chỉ định sẽ bị xoá.
  • Bộ nhớ: nếu đường dẫn thư mục được chỉ định, tất cả tệp và thư mục con sẽ bị xoá.

Theo đường dẫn

Khi định cấu hình đường dẫn Cloud Firestore, Cơ sở dữ liệu theo thời gian thực và Cloud Storage, bạn có thể xác định biến UID trong các đường dẫn này sẽ được thay thế bằng UID của người dùng đã được xác thực. Khi một người dùng bị xoá, tiện ích này sẽ xoá tất cả dữ liệu đã khoá trên UID đó tại các đường dẫn cụ thể, ví dụ:

  • (Các) đường dẫn trên Cloud Firestore: users/{UID},admins/{UID}
  • (Các) đường dẫn Cơ sở dữ liệu theo thời gian thực: likes/{UID}
  • (Các) đường dẫn đến Cloud Storage: {DEFAULT}/uploads/{UID},{DEFAULT}/avatars/{UID}.jpeg

Tự động khám phá (Cloud Firestore)

Để cho phép tiện ích này tự động khám phá các tài liệu cần xoá trên Firestore, hãy đặt thông số cấu hình "Enable auto discovery" (Bật tính năng tự động khám phá) thành "Yes" (Có).

Tính năng tự động khám phá hoạt động bằng cách tự động truyền tải qua cơ sở dữ liệu để tìm các bộ sưu tập và tài liệu cần phải xoá theo cấu hình của bạn. Tiện ích này xác định các bộ sưu tập và tài liệu đó bằng phương pháp sau:

  1. Trước tiên, tiện ích này sẽ tìm mọi 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ã UID của người dùng, thì toàn bộ bộ sưu tập đó sẽ bị xoá (việc xoá có thể là đệ quy hoặc nông, tuỳ thuộc vào cấu hình của tiện ích cho "chế độ xoá trên Cloud Firestore").
  2. Thứ hai, nếu mã bộ sưu tập không khớp, tiện ích sẽ tìm cách xác định và xoá một tài liệu nếu mã tài liệu đó khớp với mã UID của người dùng.
  3. Cuối cùng, đối với mỗi tài liệu: a. Nếu chiều sâu tìm kiếm hiện tại (xem bên dưới) nhỏ hơn hoặc bằng chiều sâu tìm kiếm đã định cấu hình, thì quá trình này sẽ được lặp lại cho tất cả các tập hợp phụ 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 này sẽ kiểm tra xem các trường đã cung cấp có khớp với UID của người dùng hay không. Nếu 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 lượt tìm kiếm

Tiện ích này cung cấp giá trị độ sâu tìm kiếm có thể định cấu hình (mặc định là 3). Truyền tải 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. Mức độ tìm kiếm hiện tại dựa trên mức độ chuyên sâu của bộ sưu tập hiện tại hoặc bộ sưu tập gốc 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 lưu trữ trong mảng hoặc bản đồ, cũng như sẽ không tìm dữ liệu do mã nhận dạng người dùng khoá được lưu trữ trong các tập hợp con lồng sâu vượt quá độ sâu được chỉ định ở trên.