dotenv'ten dotenvx'e - Yeni nesil config yöneticisi
(dotenvx.com)- dotenv'in ilk commit'inden Temmuz 2013'te sonra, 11 yıl içinde dünya genelinde en çok bağımlılık duyulan paketlerden biri haline geldi
- TypeScript ve ESLint gibi vazgeçilmez yazılımlarla benzer bir konuma ulaştı
dotenv'in sorunları
.envdosyalarının sızma riski- Çoklu ortamları yönetmek zor
- Platformlar arası tutarlılık eksik
Çözüm: dotenvx
- Tüm platformlarda aynı şekilde çalışır
- Çoklu ortam desteği
- Ortam değişkeni dosyaları için şifreleme
Her yerde çalıştırılabilir
- Tüm dillerde, framework'lerde ve platformlarda aynı şekilde çalışır
dotenvx run -- your-cmdile çalışma anında ortam değişkenleri enjekte edilebilir.envayrıştırma motoru, değişken genişletme, komut ikamesi gibi özellikler aynı şekilde çalışır- npm, brew, curl, docker, windows gibi çeşitli yollarla kurulabilir
$ echo "HELLO=World" > .env $ echo "console.log('Hello ' + process.env.HELLO)" > index.js $ node index.js # dotenvx olmadan Hello undefined $ dotenvx run -- node index.js # dotenvx ile Hello World
Çoklu ortam desteği
.env.productiondosyası oluşturduktan sonra-fseçeneğiyle yüklenebilir- Birden fazla
-fbayrağı kullanılarak çoklu ortam yapılandırması yapılabilir$ echo "HELLO=production" > .env.production $ dotenvx run -f .env.production -- node index.js [dotenvx][info] loading env (1) from .env.production Hello production
Şifreleme
.envdosyasınadotenvx encryptkomutuyla şifreleme eklenebilir- Açık anahtarlı şifreleme yöntemi kullanır
.envdosyası sızsa bileDOTENV_PRIVATE_KEYolmadan çözülemez- Açık kaynak projelerde önceki sırları çözmeden yeni yapılandırmalar eklenebilir
$ dotenvx encrypt ✔ encrypted (.env)
1.0.0 sürümü yayımlandı
- dotenvx 1.0.0 sürümünün yayımlandığı duyuruldu
- Yeni nesil yapılandırma yönetim aracı olarak pek çok geliştirici tarafından kullanılabilir
GN⁺ görüşü
dotenvx, güvenlik ve kullanım kolaylığını aynı anda sunuyor- Birden fazla ortamı kolayca yönetebildiği için geliştiriciler için faydalı
- Şifreleme özelliği, güvenliğe duyarlı projelerde özellikle yararlı
dotenvx'in özellikleri, farklı dil ve platformlarda tutarlılık sağlayarak geliştirme verimliliğini artırıyor
2 yorum
Programın içinde ürün modu ile geliştirme modunu ayırmadan, doğrudan çalıştırma betiğinde tanımlanabiliyormuş.
Hacker News görüşleri
Gizli bilgileri ortam değişkenleriyle aktarmamak daha iyi. Ortam değişkenleri kolayca sızabilir. Bunun yerine, gizli bilgileri süreç içinde vault'tan veya dosya sisteminden okumak daha iyi.
.envdosyalarının kullanılma nedeni basit ve açık olmaları. Daha güvenli ve güçlü bir yapılandırma yöntemi kullanmak istiyorsanız dokümantasyonu okumanız gerekir.İşlerde Mise kullanmaya başladım. Henüz çok fazla kullanmadım ama umut verici görünüyor. Yerel test veritabanını başlatma, linting betiklerini çalıştırma gibi işleri yapıyor; ayrıca ortam değişkenlerini ve sanal ortamları da yönetiyor.
Gizli bilgi sızıntısı büyük bir sorun olduğu için, dotenvx kullanırken gizli bilgileri şifrelemek akıllıca. Şifrelenmemiş gizli bilgileri desteklemeyen araçlar daha güvenli.
Sops'a benziyor ama varsayılan olarak şifreli bir özelliği yok. Sops, AWS ve mevcut anahtar yönetimi çözümleriyle kolayca entegre oluyor ve iki farklı iş yerinde 5 yıl boyunca kullanmış biri olarak çok iyi olduğunu söyleyebilirim.
Gizli bilgileri şifreleyip commit etmek kullanışlı, ancak şifreleme anahtarına erişim sağlanırsa tüm gizli bilgiler açığa çıkabilir. Bunları bulut ortamındaki bir secret manager'a koyup bir daha dokunmamak daha güvenli.
Ortam değişkenleri gereğinden fazla paylaşılıyor ve dosyalar yerel izinlere bağımlı. Süreçler arasında gizli bilgi aktarmanın yeni bir yoluna ihtiyaç var. Örneğin, Unix soketi üzerinden yalnızca bir kez okunabilecek şekilde gizli bilgi iletmek.
.envdosyalarını vault'a doğru şekilde koymaya dair dokümantasyona ihtiyaç var. Eğer vault bir parola ile korunuyorsa, uygulamanın vault parolasını okuyabilmesi için bunun düz metin olarak yazılması gibi bir sorun ortaya çıkıyor.Tüm ortam değişkenlerini tek bir dosyada TOML biçiminde yönetmek istiyorum. Bu şekilde güncellemek, karşılaştırmak ve paylaşmak kolay olurdu. Ancak ortam adlarında tutarlılığı korumak zor. Bu çoğu zaman hızlı kararlar veya zorunluluklar nedeniyle ortaya çıkıyor ve sonradan düzeltmeye çekiniliyor.