Kullanıcı Verilerini Sil uzantısını kullanma

Kullanıcı Verilerini Sil uzantısı (delete-user-data), Firebase projenizden silinen bir kullanıcının verilerini silmenize olanak tanır. Bu uzantıyı Cloud Firestore, Realtime Database veya Cloud Storage'ın herhangi birinden veya tümünden kullanıcı verilerini silecek şekilde yapılandırabilirsiniz. Verileri silecek uzantının her bir tetikleyicisi, kullanıcının UserId parametresine bağlanır.

Bu uzantı, kullanıcı gizliliğine saygı göstermek ve uygunluk koşullarını yerine getirmek açısından kullanışlıdır. Ancak bu uzantının kullanılması, resmi ve sektördeki düzenlemelere uygunluğu garanti etmez.

Ön koşullar

Uzantıyı yükle

Uzantıyı yüklemek için Firebase Uzantısını Yükleme sayfasındaki adımları uygulayın. Özet olarak, aşağıdakilerden birini yapın:

Uzantının yüklenmesi sırasında bir dizi yapılandırma parametresi belirtmeniz istenir:

  • Cloud Functions konumu:

    Bu uzantı için oluşturulan işlevleri dağıtmak istediğiniz konumu seçin. Genellikle veritabanınıza yakın bir konum istersiniz. Konum seçme konusunda yardım almak için konum seçimi kılavuzuna bakın.

  • Cloud Firestore yolları:

    Cloud Firestore örneğinizdeki hangi yollar kullanıcı verilerini içeriyor? Cloud Firestore kullanmıyorsanız boş bırakın. Virgülle ayırarak tam yolları girin. Silinen kullanıcının kullanıcı kimliğini {UID} ile temsil edebilirsiniz. Örneğin, users ve admins koleksiyonlarınız varsa ve her koleksiyonda doküman kimliği olarak Kullanıcı Kimliğine sahip dokümanlar varsa users/{UID},admins/{UID} değerini girebilirsiniz.

  • Cloud Firestore silme modu:

    (Yalnızca Cloud Firestore paths parametresini kullanıyorsanız geçerlidir.) Cloud Firestore belgelerini nasıl silmek istersiniz? Alt koleksiyonlardaki dokümanları da silmek için bu parametreyi recursive olarak ayarlayın.

  • Realtime Database örneği:

    Kullanıcı verilerini hangi Realtime Database örneğinden silmek istiyorsunuz?

  • Gerçek Zamanlı Veritabanı konumu:

    (Yalnızca Realtime Database instance parametresini sağladıysanız geçerlidir.) Kullanıcı verilerini hangi Realtime Database konumundan silmek istiyorsunuz?

  • Gerçek Zamanlı Veritabanı yolları:

    Realtime Database örneğinizdeki hangi yollar kullanıcı verilerini içeriyor? Realtime Database kullanmıyorsanız boş bırakın. Virgülle ayırarak tam yolları girin. Silinen kullanıcının kullanıcı kimliğini {UID} ile temsil edebilirsiniz. Örnek: users/{UID},admins/{UID}.

  • Cloud Storage yolları:

    Kullanıcı verilerini Google Cloud Storage'da nerede depoluyorsunuz? Cloud Storage kullanmıyorsanız boş bırakın. Storage paketlerinizdeki dosyaların veya dizinlerin tam yollarını virgülle ayırarak girin. Silinen kullanıcının Kullanıcı Kimliği'ni temsil etmek için {UID} değerini, varsayılan Storage paketinizi temsil etmesi için ise {DEFAULT} değerini kullanın.

    Aşağıda bir dizi örnek verilmiştir:

    • Varsayılan paketinizde {UID}-pic.png dosya adlandırma şemasına sahip tüm dosyaları silmek için {DEFAULT}/{UID}-pic.png değerini girin.
    • {UID}-logs.txt dosya adlandırma şemasına sahip my-app-logs adlı başka bir pakette bulunan tüm dosyaları da silmek için {DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt değerini girin.
    • User ID etiketli bir dizini ve tüm dosyalarını (media/{UID} gibi) ayrıca silmek için {DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt,{DEFAULT}/media/{UID} değerini girin.

Silinecek verileri keşfetme

Bu uzantının silinecek verileri keşfetmek için kullandığı birkaç mekanizma vardır. Uzantının verileri silebilmesi için bu mekanizmaların açık bir şekilde yapılandırılması gerekir. Uzantı yalnızca sağlanan mekanizmalara göre silinmek üzere açıkça yapılandırılmış verileri siler.

Her hizmet arasında aşağıdaki davranış farklılıklarına dikkat edin:

  • Cloud Firestore: Varsayılan davranış, belgeyi yüzeysel olarak silmektir (alt koleksiyonlar silinmez). Bir belgenin tüm alt koleksiyonlarını yinelemeli olarak silmek için "Cloud Firestore silme modu" seçeneğini "Yinelemeli" olarak ayarlayın.
  • Gerçek Zamanlı Veritabanı: Belirtilen düğümdeki tüm veriler silinecek.
  • Depolama: Bir dizin yolu belirtilirse tüm dosyalar ve alt dizinler silinir.

Yola göre

Cloud Firestore, Realtime Database ve Cloud Storage yollarını yapılandırırken yollarda, kimliği doğrulanmış kullanıcının UID'siyle değiştirilecek bir UID değişkeni tanımlayabilirsiniz. Bir kullanıcı silindiğinde uzantı, belirtilen yollarda ilgili UID'de girilen tüm verileri siler. Örneğin:

  • Cloud Firestore yolları: users/{UID},admins/{UID}
  • Realtime Database yolları: likes/{UID}
  • Cloud Storage yolları: {DEFAULT}/uploads/{UID},{DEFAULT}/avatars/{UID}.jpeg

Otomatik Keşif (Cloud Firestore)

Uzantının silinecek Firestore dokümanlarını otomatik olarak keşfetmesini etkinleştirmek için "Otomatik bulmayı etkinleştir" yapılandırma parametresini "Evet" olarak ayarlayın.

Otomatik keşif özelliği, yapılandırmanıza göre silinmesi gereken koleksiyonları ve dokümanları bulmak için veritabanında otomatik olarak gezinerek çalışır. Uzantı, bu koleksiyonları ve belgeleri aşağıdaki yöntemle tanımlar:

  1. İlk olarak uzantı, veritabanındaki tüm kök koleksiyonlarını bulur. Bir koleksiyonun kimliği, kullanıcının UID'siyle eşleşirse koleksiyonun tamamı silinir (silme işlemi, uzantının "Cloud Firestore silme modu" yapılandırmasına bağlı olarak yinelemeli veya yüzeyseldir).
  2. İkinci olarak, koleksiyon kimliği eşleşmezse uzantı, bir dokümanın doküman kimliğinin kullanıcının UID'siyle eşleşmesi durumunda dokümanı tanımlamaya ve silmeye çalışır.
  3. Son olarak, her bir belge için: a. Mevcut arama derinliği (aşağıya bakın) yapılandırılmış arama derinliğinden az veya ona eşitse işlem, geçerli dokümanın tüm alt koleksiyonları için tekrarlanır. b. Arama alanları yapılandırılmışsa uzantı, sağlanan alanların kullanıcının UID'siyle eşleşip eşleşmediğini kontrol eder. Eşleşme bulunursa doküman silinir.

Arama Derinliği

Uzantı, yapılandırılabilir bir arama derinliği değeri sunar (varsayılan olarak 3'tür). Geçiş yalnızca geçerli arama derinliği, yapılandırılan arama derinliğinden az veya ona eşitse yürütülür. Geçerli arama derinliği, geçerli koleksiyonun veya doküman üst koleksiyonunun derinliğine dayalıdır. Örneğin,

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

Bu uzantı, dizilerde veya haritalarda depolanan UID'leri otomatik olarak SİLMEZ ve yukarıda belirtilen derinlikten daha sonra derinlemesine iç içe yerleştirilmiş alt koleksiyonlarda depolanan, kullanıcı kimliğiyle oluşturulan verileri aramaz.