Cluster ERP'nin src/cluster_erp/core/ içinde üç küçük kriptografi yardımcısı vardır. core/totp.py operatör konsolu için zamana dayalı tek kullanımlık parolaları hesaplar. core/secret_box.py geri okunması gereken küçük kontrol düzlemi gizli değerlerini, örneğin operatörlerin doğrulayıcı tohumlarını mühürler. core/crypto_at_rest.py saklanan dosyaları ve veritabanı dökümlerini şifreler. Bu sayfa her birinin neyi koruduğunu ve anahtarını hangi ayarın verdiğini anlatır. Anahtar değerlerini asla göstermez; değişken adları için ayarlar başvurusu sayfasına bakın.
Kısaca¶
- İkinci adım altı haneli, 30 saniyelik adımlı standart bir zamana dayalı tek kullanımlık paroladır; her iki yönde bir adım toleransla doğrulanır (
src/cluster_erp/core/totp.py:1-4,src/cluster_erp/core/totp.py:16-17,src/cluster_erp/core/totp.py:42-55). - Bu commit'teki kodda
verify_totpyalnızcaserver/operators.pyiçindeki operatör girişinden çağrılır (src/cluster_erp/server/operators.py:129-168). - Operatör tohumları
enc:önekiyle mühürlü saklanır; anahtarcontrol_encryption_keyayarından, bu ayar boşsasecret_keyayarından gelir (src/cluster_erp/core/secret_box.py:1-9,src/cluster_erp/core/secret_box.py:33-37). - Dosyalar ve yedekler, 64 onaltılık karakterle verilen 256 bitlik bir anahtarla kimliği doğrulanmış şifreleme kullanır (
src/cluster_erp/core/crypto_at_rest.py:1-16,src/cluster_erp/core/crypto_at_rest.py:34-40). - Çok kiracılı kipte ayar doğrulayıcısı
storage_encryption_key,backup_encryption_keyvemail_encryption_keyolmadan açılmayı reddeder (src/cluster_erp/config/settings.py:805-821).
Nasıl çalışır¶
Operatörün ikinci doğrulama adımı¶
generate_secret base32 biçiminde rastgele 160 bitlik bir tohum üretir (src/cluster_erp/core/totp.py:20-22). otpauth_uri bir doğrulayıcı uygulamanın okuduğu kayıt bağlantısını kurar (src/cluster_erp/core/totp.py:58-63). verify_totp yalnızca rakamları tutar, altı rakam ister ve geçerli adımla komşularına karşı sabit zamanlı karşılaştırma yapar (src/cluster_erp/core/totp.py:42-55).
Operatör hesabı akışı server/operators.py içindedir:
enroll_totpbir tohum verir veya değiştirir, mühürlü saklar,totp_enrolled_atdamgasını basar ve tohumu ve bağlantıyı bir kez döndürür (src/cluster_erp/server/operators.py:178-195).python -m cluster_erp.server.operators totp-enrollkomutu bunu çalıştırır (src/cluster_erp/server/operators.py:352-353).authenticateönce parolayı, sonra kodu denetler. Yanlış kod hatalı deneme sayılır.vendor_require_totpaçıkken tohumu olmayan bir operatör giriş yapamaz (src/cluster_erp/server/operators.py:114-175,src/cluster_erp/config/settings.py:131).- Mühürleme var olmadan önce saklanmış bir tohum, bir sonraki başarılı kullanımda mühürlenir (
src/cluster_erp/server/operators.py:165-167).
Operatör girişinin tamamı operatör konsolu sayfasında anlatılır.
Mühürlü kontrol düzlemi gizli değerleri¶
secret_box, cryptography paketindeki Fernet'i kullanır. Fernet anahtarı yapılandırılan malzemenin SHA-256 özetidir (src/cluster_erp/core/secret_box.py:27-37). seal değeri enc: artı belirteç olarak döndürür; open_secret mühürlü veya eski mühürsüz bir kaydın düz değerini döndürür (src/cluster_erp/core/secret_box.py:40-61). Anahtar değişirse open_secret ValueError fırlatır (src/cluster_erp/core/secret_box.py:58-61). control_operators.totp_secret sütunu mühürlü biçim için yeterince geniştir (src/cluster_erp/core/tenancy.py:147-148).
Mail modülü sağlayıcı gizli değerlerini mail_encryption_key ile anahtarlanan ayrı bir yardımcıyla mühürler (src/cluster_erp/modules/mail/crypto.py:1-10). Bunu mail modülü sayfası anlatır.
Durağan dosyalar ve yedekler¶
crypto_at_rest iki kap tanımlar (src/cluster_erp/core/crypto_at_rest.py:1-16):
| Kap | Kullanım | Anahtar ayarı | Kaynak |
|---|---|---|---|
| Blob | Bellekte, taze rastgele bir nonce ile şifrelenen tek bir saklı ek | storage_encryption_key |
src/cluster_erp/core/crypto_at_rest.py:50-66, src/cluster_erp/core/storage.py:138-166 |
| Akış | Her boyutta bir veritabanı dökümü; parçalar atlanamaz, yinelenemez veya yeniden sıralanamaz | backup_encryption_key |
src/cluster_erp/core/crypto_at_rest.py:70-140, src/cluster_erp/server/backup_tenants.py:241-320 |
EncryptedStorageBackend her depolama arka ucunu sarar ve depolama anahtarını ek veri olarak verir; böylece başka bir anahtara kopyalanan şifreli metin çözülmez (src/cluster_erp/core/storage.py:138-160). Anahtar var olmadan yazılmış dosyalar başlıklarının yokluğundan tanınır ve düz veri olarak okunur (src/cluster_erp/core/crypto_at_rest.py:14-15). parse_key 32 baytlık onaltılık olmayan her anahtarı reddeder (src/cluster_erp/core/crypto_at_rest.py:34-40); ayar doğrulayıcısı bunu açılışta uygular (src/cluster_erp/config/settings.py:822-827). Silme defteri de her satırı yedek anahtarıyla mühürler; bkz. gizlilik ve ilgili kişi başvuruları.
Neden böyle kurulmuştur¶
secret_boxvardır, çünkü bir doğrulayıcı tohumu kodu doğrulamak için geri okunmalıdır; bu yüzden parola gibi özetlenemez (src/cluster_erp/core/secret_box.py:1-9).crypto_at_rest, değiştirilmiş bir baytın yanlış veri üretmek yerine çözülememesi için kimliği doğrulanmış şifreleme kullanır ve anahtarı depodan değil ayarlardan alır (src/cluster_erp/core/crypto_at_rest.py:3-5).parse_keykısa anahtarları reddeder, çünkü sessizce kabul edilen kısa bir anahtar anahtarsızlıktan daha zayıf olurdu (src/cluster_erp/core/crypto_at_rest.py:35-36).- Ayar doğrulayıcısı çok kiracılı kipte ayrı bir mail anahtarı ister: bir anahtar, bir amaç (
src/cluster_erp/config/settings.py:815-821).
Kurallar ve sınırlar¶
- Gizli değerler değişiklik geçmişinde görünmez: adında
totpgeçen sütunlarcore/sensitive_fields.pykimlik bilgisi listesindedir (src/cluster_erp/core/sensitive_fields.py:36). Bkz. değişiklik geçmişi. - Kayıttan sonra
control_encryption_keyveyasecret_keydeğiştirilirse mühürlü tohumlar okunamaz olur (src/cluster_erp/core/secret_box.py:58-61).totp-enrollile yeniden kayıt yeni bir tohum verir (src/cluster_erp/server/operators.py:178-195). - Kontrol düzlemi saklama geçişi, son girişi
control_actions_retention_yearsyıldan eski olan pasif bir operatör hesabını anonimleştirir ve parola özetini ve tohumunu siler (src/cluster_erp/server/control_retention.py:147-159).
Diğer parçalarla etkileşim¶
- Operatör konsolu
totpvesecret_boxkullanır. - Ekler, notlar ve depolama blob kabını
EncryptedStorageBackendüzerinden kullanır. - Yedekler ve geri yükleme akış kabını kullanır.
Sınırlar ve açık noktalar¶
- Kiracı kullanıcılarının ikinci doğrulama adımı yoktur:
src/cluster_erpüzerindeverify_totpvetotparaması yalnızcaserver/operators.py,core/tenancy.py,server/control_retention.pyve ayar yorumunda kullanım bulur (src/cluster_erp/config/settings.py:130-131). storage_encryption_keyiçin anahtar döndürme aracı, eski düz verininre-encryptaracıyla taşınabileceğini söyleyen modül notu dışında koddan belirlenemedi (src/cluster_erp/core/crypto_at_rest.py:14-15).
Tanıtılan terimler¶
| Terim | Kod tanımlayıcısı | Tanım | Türkçe terim | Kaynak |
|---|---|---|---|---|
| time-based one-time password | verify_totp |
Paylaşılan bir tohumdan ve geçerli 30 saniyelik adımdan türetilen altı haneli kod. | zamana dayalı tek kullanımlık parola | src/cluster_erp/core/totp.py:42 |
| sealed secret | secret_box.seal |
Küçük bir gizli değerin enc: önekiyle işaretlenmiş, geri çözülebilir şifreli biçimi. |
mühürlü gizli değer | src/cluster_erp/core/secret_box.py:44 |
| encryption at rest | encrypt_blob |
Saklanan bir dosyanın veya dökümün diske ya da kovaya ulaşmadan önce kimliği doğrulanmış şifrelenmesi. | durağan şifreleme | src/cluster_erp/core/crypto_at_rest.py:50 |
İlgili sayfalar¶
- Kimlik, erişim, kiracılık, gizlilik ve lisans
- Kimlik doğrulama ve oturumlar
- Operatör konsolu
- Ayarlar başvurusu
92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.