18 puan yazan GN⁺ 2024-06-26 | 2 yorum | WhatsApp'ta paylaş
  • 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ı

  • .env dosyaları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-cmd ile çalışma anında ortam değişkenleri enjekte edilebilir
  • .env ayrış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.production dosyası oluşturduktan sonra -f seçeneğiyle yüklenebilir
  • Birden fazla -f bayrağı 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

  • .env dosyasına dotenvx encrypt komutuyla şifreleme eklenebilir
  • Açık anahtarlı şifreleme yöntemi kullanır
  • .env dosyası sızsa bile DOTENV_PRIVATE_KEY olmadan çö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

 
yangeok 2024-07-05

Programın içinde ürün modu ile geliştirme modunu ayırmadan, doğrudan çalıştırma betiğinde tanımlanabiliyormuş.

 
GN⁺ 2024-06-26
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.

  • .env dosyaları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.

  • .env dosyaları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.