Sử dụng tiện ích mở rộng Xóa dữ liệu người dùng

Tiện ích mở rộng Xóa dữ liệu người dùng ( delete-user-data ) cho phép bạn xóa dữ liệu của người dùng khi người dùng đó bị xóa khỏi dự án Firebase của bạn. Bạn có thể định cấu hình tiện ích mở rộng này để xóa dữ liệu người dùng khỏi bất kỳ hoặc tất cả các mục sau: Cloud Firestore, Cơ sở dữ liệu thời gian thực hoặc Cloud Storage. Mỗi trình kích hoạt tiện ích mở rộng để xóa dữ liệu đều được khóa theo UserId của người dùng.

Tiện ích mở rộng 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 mở rộng 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 mở rộng

Để cài đặt tiện ích mở rộng, hãy làm theo các bước trên trang Cài đặt tiện ích mở rộng Firebase . Tóm lại, hãy thực hiện một trong các thao tác sau:

Trong quá trình cài đặt tiện ích mở rộng, bạn sẽ được nhắc chỉ định một số tham số cấu hình:

  • Vị trí chức năng đám mây:

    Chọn vị trí bạn muốn triển khai các chức năng được tạo cho tiện ích mở rộng này. Bạn thường muốn một vị trí gần cơ sở dữ liệu của bạn. Để đượ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:

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

  • Chế độ xóa Cloud Firestore:

    (Chỉ áp dụng nếu bạn sử dụng tham số Cloud Firestore paths .) Bạn muốn xóa tài liệu Cloud Firestore như thế nào? Để xóa tài liệu trong bộ sưu tập con, hãy đặt tham số này thành recursive .

  • Ví dụ cơ sở dữ liệu thời gian thực:

    Bạn muốn xóa dữ liệu người dùng từ phiên bản Cơ sở dữ liệu thời gian thực nào?

  • Vị trí cơ sở dữ liệu 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 xóa dữ liệu người dùng từ vị trí Cơ sở dữ liệu thời gian thực nào?

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

    Đường dẫn nào trong phiên bản Cơ sở dữ liệu thời gian thực 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 thời gian thực. Nhập các đường dẫn đầy đủ, cách nhau bằng dấu phẩy. Bạn có thể biểu thị ID người dùng của người dùng đã xóa bằng {UID} . Ví dụ: users/{UID},admins/{UID} .

  • Đường dẫn lưu trữ đám mây:

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

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

    • Để xóa tất cả các tệp trong nhóm mặc định của bạn bằng sơ đồ đặt tên tệp {UID}-pic.png , hãy nhập {DEFAULT}/{UID}-pic.png .
    • Để xóa tất cả các tệp trong một nhóm khác có tên my-app-logs với sơ đồ đặt tên tệp {UID}-logs.txt , hãy nhập {DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt .
    • Để xóa thư mục được gắn nhãn ID người dùng và tất cả các tệp trong đó (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 để xóa

Có một số cơ chế mà tiện ích mở rộng này sử dụng để khám phá dữ liệu cần xóa. Các cơ chế này phải được cấu hình rõ ràng để tiện ích xóa dữ liệu. Tiện ích mở rộng sẽ chỉ xóa dữ liệu được định cấu hình rõ ràng để xóa dựa trên các cơ chế được cung cấp.

Hãy lưu ý những khác biệt về hành vi sau đây giữa mỗi dịch vụ:

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

Theo đường dẫn

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

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

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

Để bật tiện ích mở rộng tự động khám phá các tài liệu Firestore cần xóa, hãy đặt tham số cấu hình "Bật tự động khám phá" 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 xóa theo cấu hình của bạn. Phần mở rộng xác định các bộ sưu tập và tài liệu đó bằng phương pháp sau:

  1. Đầu tiên, tiện ích mở rộng tìm thấy tất cả các bộ sưu tập gốc trong cơ sở dữ liệu. Nếu ID của bộ sưu tập khớp với UID của người dùng thì toàn bộ bộ sưu tập sẽ bị xóa (xóa là đệ quy hoặc nông, tùy thuộc vào cấu hình của tiện ích mở rộng cho "Chế độ xóa Cloud Firestore").
  2. Thứ hai, nếu ID bộ sưu tập không khớp, tiện ích mở rộng sẽ cố gắng xác định và xóa tài liệu nếu ID tài liệu của nó khớp với UID của người dùng.
  3. 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 được định cấu hình thì quy trình sẽ được lặp lại cho tất cả các bộ sưu tập phụ của tài liệu hiện tại. b. Nếu các trường tìm kiếm đã được định cấu hình, tiện ích mở rộng 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 kết quả trùng khớp, tài liệu sẽ bị xóa.

Độ sâu tìm kiếm

Tiện ích mở rộng 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 hiện 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 được đị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 tài liệu gốc, ví dụ:

/users = 1
/users/<document-id> = 1
/users/<document-id>/comments = 2
/users/<document-id>/comments/<document-id> = 2

Tiện ích mở rộng này sẽ KHÔNG tự động xóa các UID được lưu trữ trong mảng hoặc bản đồ và nó sẽ không tìm kiếm dữ liệu được khóa theo ID người dùng được lưu trữ trong các bộ sưu tập con lồng nhau sâu vượt quá độ sâu được chỉ định ở trên.