Factorizer/Cluster ERP WikiCluster ERP English
Ana sayfa / Kimlik ve erişim

Açıklama

Gizlilik ve ilgili kişi başvuruları

Privacy modülünün ilgili kişi başvurularını nasıl kaydettiği, bir kişinin verisini her modülden nasıl topladığı, anonimleştirdiği ve geri yüklemeden sonra silmeleri nasıl yeniden uyguladığı.

Bir ilgili kişi başvurusu (SubjectRequest), bir kişinin kişisel verisini görme, düzeltme, silme veya işlenmesine itiraz etme başvurusunu kaydeder. privacy modülü kaydı, kimlik denetimini, süreyi ve sonucu tutar. Başka bir modülün tablolarını asla okumaz: iki EventBus olayı yayar ve kişisel veri tutan her modül kendi privacy_handlers.py dosyasında kendi tablolarından sorumlu olur. Bir silme ayrıca veritabanı dışındaki bir deftere yazılır; böylece geri yüklenen bir yedek veriyi fark edilmeden geri getiremez. Modül özeti privacy modülü sayfasındadır.

Kısaca

  • Dört başvuru türü vardır: access, rectification, erasure, objection (src/cluster_erp/modules/privacy/requests/models.py:13-18).
  • Dört durum vardır: received, verified, completed, rejected; her geçiş bir aksiyondur (src/cluster_erp/modules/privacy/requests/models.py:32-36, src/cluster_erp/modules/privacy/requests/services.py:196-527).
  • Son tarih, alınış tarihi artı privacy_response_days ayarıdır (src/cluster_erp/modules/privacy/requests/models.py:61-62, src/cluster_erp/modules/privacy/requests/services.py:157-170, src/cluster_erp/config/settings.py:733).
  • CollectSubjectData bir kopya toplar, AnonymiseSubject anonimleştirerek siler; dokuz modül ikisine de abonedir (src/cluster_erp/core/contracts.py:2385-2438).
  • Tamamlanan bir silme, düğüm yerel bir deftere eklenir; yedek anahtarı varsa mühürlenir ve her açılışta yeniden oynatılır (src/cluster_erp/core/erasure_ledger.py:1-16, src/cluster_erp/server/app.py:255-311).

Nasıl çalışır

Başvuru yaşam döngüsü

Durum şeması durumları ve onları değiştiren aksiyonları gösterir.

stateDiagram-v2
    [*] --> received: create
    received --> verified: verify
    verified --> verified: export
    verified --> completed: anonymise, yalnız erasure
    verified --> completed: complete
    received --> rejected: reject
    verified --> rejected: reject
    completed --> [*]
    rejected --> [*]

Düz anlatımla:

  1. create başvuruya yıllık bir iş anahtarı verir, due_at değerini koyar ve received ile başlar (src/cluster_erp/modules/privacy/requests/services.py:157-172).
  2. verify kimlik yöntemini kaydeder ve received durumunu verified yapar (src/cluster_erp/modules/privacy/requests/services.py:198-207).
  3. Yalnızca verified iken izinli olan prepare_export veriyi toplar ve tek bir JSON dosyasını başvuruya ek olarak saklar (src/cluster_erp/modules/privacy/requests/services.py:247-272). export_file onu döndürür (src/cluster_erp/modules/privacy/requests/services.py:274-295).
  4. Yalnızca verified durumdaki bir erasure başvurusu için izinli olan anonymise, operatörün başvuru kodunu yazmasını ister, sonra siler ve başvuruyu tamamlar (src/cluster_erp/modules/privacy/requests/services.py:297-327).
  5. complete doğrulanmış bir başvuruyu bir sonuç notuyla kapatır; reject alınmış veya doğrulanmış bir başvuruyu bir gerekçeyle kapatır (src/cluster_erp/modules/privacy/requests/services.py:507-527).
  6. Tamamlanmış veya reddedilmiş bir başvuru düzenlenemez (src/cluster_erp/modules/privacy/requests/services.py:174-186).

Kopya toplama

collect, ilgili kişinin e-posta adreslerini GetPartyContactValues ile alır, taraf kimliği, isteğe bağlı kullanıcı kimliği ve bu adreslerle CollectSubjectData yayar ve bölümü olan her yanıtı tutar (src/cluster_erp/modules/privacy/requests/services.py:209-245). Her yanıt {"module", "sections": [{"key", "label", "rows"}]} biçimindedir ve parola özetleri veya belirteçler gibi gizli değerler içermemelidir (src/cluster_erp/core/contracts.py:2385-2401).

Anonimleştirme

_apply_erasure tüm modülleri tek bir işlemde çalıştırır (src/cluster_erp/modules/privacy/requests/services.py:329-424):

  1. privacy_anonymised_marker ayarından gelen işaret, bir gerekçe ve üç operatör kararıyla AnonymiseSubject yayar: include_employment_records, include_correspondence ve include_documents (src/cluster_erp/modules/privacy/requests/services.py:345-357, src/cluster_erp/modules/privacy/requests/schemas.py:70-73).
  2. Her işleyici tanımlayıcı alanların üzerine yazar, satırları pasifleştirir ve etkilenen kayıt kimliklerini döndürür (src/cluster_erp/core/contracts.py:2410-2425).
  3. Servis kişinin taraf kaydına dosyalanmış ekleri ekler, bildirilen dosyaları depodan kaldırır ve satırlarını emekliye ayırır (src/cluster_erp/modules/privacy/requests/services.py:358-395).
  4. Etkilenen her kaydın değişiklik geçmişi değerlerini, başvuruyu adlandıran bir işaretle değiştirir (src/cluster_erp/modules/privacy/requests/services.py:396-406).
  5. Modül başına bir özet saklar, başvuruyu tamamlar ve defter satırını yazar (src/cluster_erp/modules/privacy/requests/services.py:407-424).

Yanıt veren modüller

Dokuz modül iki olaya da abonedir; module.py dosyalarında CollectSubjectData için grep ile bulundu:

Modül İşleyici dosyası Abonelik
auth src/cluster_erp/modules/auth/privacy_handlers.py src/cluster_erp/modules/auth/module.py:101-108
crm src/cluster_erp/modules/crm/privacy_handlers.py src/cluster_erp/modules/crm/module.py:110-113
documents src/cluster_erp/modules/documents/privacy_handlers.py src/cluster_erp/modules/documents/module.py:89-96
intranet src/cluster_erp/modules/intranet/privacy_handlers.py src/cluster_erp/modules/intranet/module.py:216-223
logs src/cluster_erp/modules/logs/privacy_handlers.py src/cluster_erp/modules/logs/module.py:55-62
mail src/cluster_erp/modules/mail/privacy_handlers.py src/cluster_erp/modules/mail/module.py:63-70
owned_organisations src/cluster_erp/modules/owned_organisations/privacy_handlers.py src/cluster_erp/modules/owned_organisations/module.py:81-88
parties src/cluster_erp/modules/parties/privacy_handlers.py src/cluster_erp/modules/parties/module.py:159-166
procurement src/cluster_erp/modules/procurement/privacy_handlers.py src/cluster_erp/modules/procurement/module.py:136-137

Örnek olarak auth işleyicisi giriş hesabını parola özeti olmadan döndürür; silmede kullanıcı adının ve e-postanın üzerine yazar, çalışan bağını koparır, hesabı pasifleştirir ve her belirtecin reddedilmesi için last_logout_at damgasını basar (src/cluster_erp/modules/auth/privacy_handlers.py:1-104).

Silme defteri

erasure_ledger.append, tamamlanan her silme için backup_dir ayarı altındaki bir klasörde veritabanı başına bir dosyaya bir satır yazar; satır başvuru kodunu, taraf kimliğini, kullanıcı kimliğini, kişinin e-posta adreslerini, üç kararı ve zamanı tutar (src/cluster_erp/core/erasure_ledger.py:38-74, src/cluster_erp/modules/privacy/requests/services.py:426-457). backup_encryption_key ayarlıysa her satır mühürlenir; değilse satır düz JSON olur (src/cluster_erp/core/erasure_ledger.py:42-53). Açılışta _replay_erasure_ledger düğümün hizmet verdiği her veritabanının defterini okur, veritabanının artık tamamlanmış göstermediği her silmeyi yeniden uygular ve ardından saklama temizliğini çalıştırır (src/cluster_erp/server/app.py:255-311, src/cluster_erp/modules/privacy/requests/services.py:459-505). tests/test_erasure_ledger.py (4 test) mühürlemeyi sabitler.

Neden böyle kurulmuştur

  • Modül açıklaması privacy modülünün başka hiçbir modülü içe aktarmadığını; kişisel veri tutan modüllerin kendi tablolarından sorumlu olduğunu söyler (src/cluster_erp/modules/privacy/module.py:16-24).
  • Başvuru satırı tamamlandıktan sonra, başvurunun zamanında yanıtlandığının kanıtı olarak kalır ve asla fiziksel olarak silinmez (src/cluster_erp/modules/privacy/requests/models.py:40-46).
  • Anonimleştirme işleyicileri istek oturumuna katılmalıdır; böylece herhangi bir yerdeki hata her modülü geri alır (src/cluster_erp/core/contracts.py:2411-2425).
  • İstihdam kayıtları, yazışmalar ve belgeler varsayılan olarak kalır, çünkü çoğu zaman yasal bir saklama yükümlülüğü altındadır (src/cluster_erp/core/contracts.py:2421-2433).
  • Defter veritabanı dışında durur; böylece bir geri yükleme bir silmeyi sessizce geri alamaz (src/cluster_erp/core/erasure_ledger.py:3-10).

Kurallar ve sınırlar

  • Her uç bir subject_request.* kodu ister: read, create, update, delete, verify, export, anonymise, complete veya reject (src/cluster_erp/modules/privacy/requests/routes.py:39-215).
  • Kimlik bilgisi ve özel nitelikli değerler değişiklik geçmişinde her durumda gizlenir; bkz. değişiklik geçmişi.

Diğer parçalarla etkileşim

Sınırlar ve açık noktalar

  • Bir defter yazma hatası günlüğe yazılır ve silmeyi geri almaz (src/cluster_erp/modules/privacy/requests/services.py:433-457).
  • Düzeltmenin otomatik bir adımı yoktur; complete ve bir sonuç notuyla kapatılır (src/cluster_erp/modules/privacy/requests/services.py:507-516).

Tanıtılan terimler

Terim Kod tanımlayıcısı Tanım Türkçe terim Kaynak
data-subject request SubjectRequest Bir kişinin kişisel verisiyle ilgili kayıtlı başvurusu. İlgili Kişi Başvurusu src/cluster_erp/modules/privacy/requests/models.py:39
anonymisation AnonymiseSubject Tanımlayıcı alanların üzerine bir işaret yazılarak ve satırlar pasifleştirilerek yapılan silme. anonimleştirme src/cluster_erp/core/contracts.py:2411
subject data collection CollectSubjectData Her modülün bir kişi hakkında tuttuğunu döndürdüğü dağıtım. ilgili kişi verisi toplama src/cluster_erp/core/contracts.py:2385
erasure ledger erasure_ledger Tamamlanan silmelerin veritabanı dışında tutulan ve bir geri yüklemeden sonra yeniden oynatılan, yalnız eklenen kaydı. silme defteri src/cluster_erp/core/erasure_ledger.py:1

İlgili sayfalar


92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.

Doğrulanan commit 92f8051 · 2026-11-13