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 tümünden ya da tümünden kullanıcı verilerini silecek şekilde yapılandırabilirsiniz. Verileri silmek için uzantının her tetikleyicisi, kullanıcının UserId ile ilişkilendirilir.

Bu uzantı, kullanıcı gizliliğine saygı göstermek ve uygunluk koşullarını yerine getirmek için 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ükleme

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çmeyle ilgili yardım için konum seçme 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. Tam yolları virgülle ayırarak 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 belge kimlikleri olarak User-ID içeren 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 istiyorsunuz? 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çerir? Realtime Database kullanmıyorsanız bu alanı boş bırakın. Tam yolları virgülle ayırarak girin. Silinen kullanıcının kullanıcı kimliğini {UID} ile temsil edebilirsiniz. Örneğin: users/{UID},admins/{UID}.

  • Cloud Storage yolları:

    Kullanıcı verilerini Google Cloud Storage'da nerede depoluyorsunuz? Cloud Storage kullanmıyorsanız bu alanı 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ğini temsil etmek için {UID}, varsayılan depolama paketinizi temsil etmek için {DEFAULT} kullanın.

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

    • Varsayılan paketinizdeki {UID}-pic.png dosya adlandırma şemasına sahip tüm dosyaları silmek için {DEFAULT}/{UID}-pic.png yazın.
    • my-app-logs adlı başka bir paketteki ve {UID}-logs.txt dosya adlandırma şemasına sahip 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ı, silinecek verileri bulmak için birkaç mekanizma kullanır. Uzantının veri silmesi için bu mekanizmaların açıkça 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ındaki aşağıdaki davranış farklılıklarını göz önünde bulundurun:

  • Cloud Firestore: Varsayılan davranış, bir dokümanı 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 silinir.
  • Depolama alanı: 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 bu UID ile anahtarlanmış 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ı, silinecek Firestore belgelerini otomatik olarak keşfetsin diye "Otomatik keşfi 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 dokümanları aşağıdaki metodolojiyle tanımlar:

  1. Uzatma ilk olarak veritabanındaki tüm kök koleksiyonları bulur. Bir koleksiyonun kimliği, kullanıcının UID'siyle eşleşirse koleksiyonun tamamı silinir (silme işlemi, uzantıları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ı, doküman kimliği kullanıcının UID'siyle eşleşiyorsa bir dokümanı tanımlayıp silmeye çalışır.
  3. Son olarak, her bir belge için: a. Geçerli arama derinliği (aşağıya bakın), yapılandırılan arama derinliğinden azsa veya bu derinliğe 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). Geçiş yalnızca mevcut arama derinliği, yapılandırılmış arama derinliğinden az veya bu derinliğe eşitse yürütülür. Geçerli arama derinliği, geçerli koleksiyonun veya dokümanların üst koleksiyonunun derinliğine bağlı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 derinliğin ötesinde, iç içe çok katmanlı alt koleksiyonlarda depolanan kullanıcı kimliğine göre anahtarlanmış verileri aramaz.