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

Kullanıcı Verilerini Silme uzantısı (delete-user-data), kullanıcının Firebase projenizden silinmesi durumunda kullanıcının verilerini silmenize olanak tanır. Bu uzantıyı, kullanıcı verilerini Cloud Firestore, Realtime Database veya Cloud Storage'ın herhangi birinden ya da tümünden silecek şekilde yapılandırabilirsiniz. Uzantının verileri silmek için her tetikleyicisi, kullanıcının UserId ile anahtarlanır.

Bu uzantı, kullanıcı gizliliğine saygı duymak ve uygunluk koşullarını karşılamak için kullanışlıdır. Ancak bu uzantının kullanılması, devlet ve sektör düzenlemelerine uyulacağını 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. Özetle, 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ç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 kullanıcı kimliğinin bulunduğu belgeler varsa users/{UID},admins/{UID} 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:

    Hangi Realtime Database örneğinden kullanıcı verilerini silmek istiyorsunuz?

  • Realtime Database konumu:

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

  • Realtime Database yolları:

    Realtime Database örneğinizdeki hangi yollar kullanıcı verilerini içeriyor? Realtime Database 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/{UID},admins/{UID}.

  • Cloud Storage yolları:

    Kullanıcı verilerini Google Cloud Storage'da nerede depoluyorsunuz? Cloud Storage kullanmıyorsanız boş bırakın. Depolama 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 paketinizi temsil etmek için {DEFAULT} kullanın.

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

    • Varsayılan paketinize {UID}-pic.png dosya adlandırma şemasıyla yüklenen tüm dosyaları silmek için {DEFAULT}/{UID}-pic.png girin.
    • Dosya adlandırma şeması {UID}-logs.txt olan my-app-logs adlı başka bir paketteki tüm dosyaları da silmek için {DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt girin.
    • Kullanıcı kimliği etiketli bir dizini ve tüm dosyalarını (ör. media/{UID}) da silmek için {DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt,{DEFAULT}/media/{UID} girin.

Silinecek verileri keşfetme

Bu uzantının silinecek verileri bulmak için kullandığı birkaç mekanizma vardır. Uzantının verileri silebilmesi 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ına dikkat edin:

  • Cloud Firestore: Varsayılan davranış, 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.
  • Realtime Database: Belirtilen düğümdeki tüm veriler silinir.
  • 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 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ının silinecek Firestore belgelerini otomatik olarak bulmasını sağlamak için "Enable auto discovery" (Otomatik bulmayı etkinleştir) yapılandırma parametresini "Yes" (Evet) olarak ayarlayın.

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

  1. Öncelikle uzantı, veritabanındaki tüm kök koleksiyonları bulur. Bir koleksiyonun kimliği, kullanıcının UID'siyle eşleşiyorsa koleksiyonun tamamı silinir (silme işlemi, "Cloud Firestore silme modu" için uzantının 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şen bir dokümanı tanımlamaya ve silmeye çalışır.
  3. Son olarak, her belge için: a. Geçerli arama derinliği (aşağıya bakın) yapılandırılmış arama derinliğinden küçükse veya bu değere 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 (varsayılan olarak 3) sunar. 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 göre belirlenir. Ö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 silmez ve yukarıda belirtilen derinliğin ötesinde, iç içe yerleştirilmiş alt koleksiyonlarda depolanan kullanıcı kimliğine göre anahtarlanmış verileri aramaz.