Nasıl benim gizli anahtarları kaydedebilirsiniz ve güvenli bir sürüm kontrol sisteminde şifre?
Ana gibi önemli ayarları ve sürüm kontrol sisteminde geliştirme ve üretim sunucuları port duruyorum. Ama biliyorum bunukötü uygulamatutmak içinsırları(özel anahtarları ve veritabanı şifre gibi) VCS bir depo.
Ama parolaları başka bir ayar gibi sürüm bilgisi olması gerektiği gibi görünüyor. Ne yanişifre kontrollü sürümü tutmak için doğru yolu?
Bu tutman tahmin ediyorumsırları"sırlar ayarları" ve sahip dosya . kendi içinde ^em>budosya şifreli ve sürüm kontrollü. Ama ne teknolojiler? Ve bunu nasıl düzgün yapmak için? Daha iyi bir yolu tamamen bu konuda gitmek var mı?
Soruyu genel olarak soruyorum, ama benim belirli bir örneği için gizli anahtarları ve şifreleri saklamak istiyorum/Python Djangositesini kullanarakgitvegithub.
Ayrıca, biridealçözüm için bir parola sorar ve yerine şifresini çözen varsa şifreli parolalar bir komut çalıştırmak, dosya değişirse--örneğin, git bakalım/bastığımda sihirli bir şey yapmaz.
EDİT: açıklık, benamkaydedileceği yeri soruyorüretimsırları.
CEVAP
Hala sürüm kontrol dosyası korurken hassas ayarlar dosyanızı şifrelemek istediğiniz tam olarak haklısın. Olarak söz, en iyi çözüm olacak bir Git edecek şeffaf bir şekilde şifrelemek bazı hassas dosyaları itersin onları yerel olarak (yani herhangi bir makine olan sertifikanızı) kullanabilirsiniz ayarları dosyası, ama Git ya da Dropbox veya kim olduğunu saklamak dosyalarınızın altında VC yok yeteneği okuma bilgileri düz metin.
Şeffaf Şifreleme öğretici İtme/Çekme sırasında şifre Çözme/
Bu özü https://gist.github.com/873637 şeffaf itti dosyaları şifrelemek için openssl ile Gıt bu leke/temiz filtre sürücüsünü kullanmak için nasıl bir öğretici gösterir. Sadece bazı ilk kurulum yapmak gerekiyor.
Nasıl Çalışır Özet
Temelde .gitencrypt
3 klasör içeren bir bash komut dosyaları oluşturmak olacak
clean_filter_openssl
smudge_filter_openssl
diff_filter_openssl
şifre çözme, şifreleme, ve Git diff destekleme Gıt tarafından kullanılan. Bir ana parola ve tuz (sabit!) bu komut dosyaları içinde tanımlanır ve emin olmalısınız .gitencrypt aslında hiç itilir.
Örnek clean_filter_openssl
kod:
#!/bin/bash
SALT_FIXED=<your-salt> # 24 or less hex characters
PASS_FIXED=<your-passphrase>
openssl enc -base64 -aes-256-ecb -S $SALT_FIXED -k $PASS_FIXED
smudge_filter_open_ssl
diff_filter_oepnssl
benzer. Özü Görmek.
Hassas bilgileri ile bir repo var .gitattribute hangi dosya (ve repo şifresiz dahil).yerel makine üzerinde mevcut olan gitencrypt dizine Git/şifrelemek için gereken her şeyi proje şeffaf şifresini içerir).
* *10 içindekiler:
* filter=openssl diff=openssl
[merge]
renormalize = true
Son olarak, .git/config
dosyanıza aşağıdaki içeriği eklemeniz gerekir
[filter "openssl"]
smudge = ~/.gitencrypt/smudge_filter_openssl
clean = ~/.gitencrypt/clean_filter_openssl
[diff "openssl"]
textconv = ~/.gitencrypt/diff_filter_openssl
Depoyu uzak bir depo için hassas bilgileri içeren bastığınızda, şeffaf dosyalar şifreli olacak. Bu yerel bir makineden çıkarmak .gitencrypt dizin (şifrenizi içeren) dosyaları şeffaf bir şekilde deşifre edilecek.
Notlar
Bu öğretici sadece hassas ayar dosyasını şifrelemek için bir yol açıklanmayan dikkat etmelisiniz. Bu şeffaf VC uzak ana bilgisayara atıp, tüm depoyu şifrelemek ve tamamen yerel olarak deşifre böylece tüm depo şifresini çözmek olacaktır. İstediğiniz davranışı elde etmek için, bir sensitive_settings_repo veya birçok proje için hassas dosyaları yerleştirmek. Eğer gerçekten hassas dosyaları aynı depo içinde olması gerekiyorsa bu şeffaf şifreleme tekniği Gıt alt modüller http://git-scm.com/book/en/Git-Tools-Submodules ile nasıl çalıştığını araştırabilirsiniz.
Sabit bir parola kullanımını teorik olarak ise saldırganların şifreli repo/dosya erişimi olsaydı brute-force güvenlik açıkları neden olabilir. IMO, bu olasılık çok düşük. Bu yazının en altında bir not, sabit bir parola farklı makineler değişiklikler meydana gelmiş her zaman gösteren bir repo yerel sürümleri neden olmaz kullanarak bahseder gibi 'git status'.
Nasıl benim komut dosyası çalıştıran n...
Nasıl benim Subversion bulmak için ser...
Nasıl Android sistemi sürüm kontrol ed...
Nasıl benim iphone uygulama kendi sürü...
Nasıl gıt (sürüm kontrol) altında bir ...