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

Kullanıcı Verilerini Sil uzantısı (delete-user-data), kullanıcı Firebase projenizden silindiğinde kullanıcının verilerini silmenize olanak tanır. Bu uzantıyı, aşağıdakilerden herhangi birinde veya hepsinde kullanıcı verilerini silecek şekilde yapılandırabilirsiniz: Cloud Firestore, Realtime Database veya Cloud Storage. 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ıyı kullanmak, devlet ve sektör yönetmeliklerine 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ı yüklenirken 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 seçersiniz. 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 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 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?

  • Realtime Database konumu:

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

  • Realtime Database 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'ın neresinde depoluyorsunuz? Cloud Storage kullanmıyorsanız bu alanı boş bırakın. Depolama alanı paketlerinizdeki dosya 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 alanı 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.
    • Kullanıcı kimliği etiketli bir dizini ve içindeki tüm dosyaları (ör. media/{UID}) 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 silinecek şekilde 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, yapılandırmanıza göre silinmesi gereken koleksiyonları ve dokümanları bulmak için veritabanını otomatik olarak tarar. 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 yinelenen 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 doküman 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ş işlemi yalnızca mevcut arama derinliği, yapılandırılmış arama derinliğinden az veya ona 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.