Bir uygulama için gerekli olan kimlik bilgileri nasıl saklanır?


13

Herkes sürüm denetiminde (git) kimlik bilgilerinin depolanmasının kötü bir şey olduğunu söylüyor. Bu nedenle, çok daha iyi kimlik bilgilerini depolamanın başka yolları olmalıdır.

Bir uygulamanın bağlı olduğu hizmetleri kullanmak için bir yerden kimlik bilgileri alması gerekir. Bu kimlik bilgileri genellikle yapılandırma dosyalarında saklanır. Bu dosyayı oluşturmak için her sunucuyu el ile girmek söz konusu değildir, çünkü sunucular insan müdahalesi olmadan gelir ve gider.

Bir uygulamanın kimlik bilgileri nasıl yönetilir?


4
Ayrıca bu muhtemelen bir kitabın boyutu olmayan tek bir cevap için çok geniştir.
coderanger

1
@coderanger Sunumunuzu izlerken, farklı sır türlerini kategorize etmeniz harika. Ve nasıl bir kitap olduğunu düşündüğünüzü görebiliyorum ... ama yukarıdaki soru bir sınıflandırma istemiyor, sadece belirli bir probleme bir çözüm (ler) soruyor.
Evgeny

2
Belirli bir durumunuz varsa lütfen soruyu, kullanılan gizli tür (veritabanı şifresi, TLS anahtarları vb.) Gibi daha fazla ayrıntı içerecek şekilde düzenleyin.
coderanger

1
Bu çok geniş. Özel komut dosyaları veya şablonlar dahil olmak üzere bunu yapmak için en az 14 araç vardır: gist.github.com/maxvt/bb49a6c7243163b8120625fc8ae3f3cd Ek ayrıntılar gereklidir (CLI gereklidir, bulut yerel çözümü veya büyük monolitik uygulamalar, vb.)
Alexandre

1
@Alexandre Hah, bunu açtım ve "yay iyi bir derleme listesi" düşündüm ve sonra kendimi aşağıda gösterdi :)
coderanger

Yanıtlar:


5

Bir uygulamanın sırlarının doğru yönetimi her zaman zor olmuştur. Bulutun benimsenmesiyle yeni zorluklar ortaya çıktı. Orada bir var büyük bir OWASP sunum gerçeklik hakkında ve bulut içinde sırlarını saklamak meydan okuyor.

Sırları kaynak koduna kaydetmenin sunulan çözümlerden (veya "mimariden") biri olduğunu duymak sizi şaşırtabilir. Çünkü şu anda mükemmel bir mimari ya da bunu yapmanın bir yolu yok. Sonunda, sırlarınız şifrelenmiş olabilir ... ama şifreleme anahtarını koruyan nedir? "Kaplumbağalar sonuna kadar" dediler.

Her tür gizli yönetimin güçlü ve zayıf yönleri vardır ve sunum zaten bunu kapsamaktadır. Bunun yerine, gizli (kimlik bilgisi) bir yönetim çözümünde aradığınız bazı özellikleri gözden geçirmeye çalışacağım:

  • Erişim kontrolü: yöneticilere yazma erişimi ve uygulamalara okuma erişimi verebilir misiniz? Hangi uygulamaların okuyabileceğini sınırlayabilir misiniz (A uygulaması yalnızca bu sırlara erişebilir)?
  • Denetim günlükleri: birçok uyumluluk raporu için gereklidir ve bir şeyin ters olup olmadığını anlamak için iyi bir yol
  • Sırların güvenli bir şekilde saklanması: çözüm sırları nasıl saklıyor? Şifreli DB? Şifreli FS? Varsa şifreleme anahtarını kim / ne tutar? Bu anahtar nasıl kullanılır - başlangıçta bir kez ve sonra güvenli bir şekilde atılır?
  • Anahtarlar / parolalar döndürme veya yenileme: bir sır tehlikeye atılırsa, onu iptal edebilir ve uygulamalara güncellenmiş bir sır gönderebilir misiniz? Uygulamalar gizli yönetim hizmetini bir araya getirebilir mi / etmelidir mi?
  • Uyumluluk: Bu çözümlerden bazıları belirli diller veya çerçevelerle sıkı entegrasyon sunar. Bazıları REST API'sini sunar. Bununla ilgileniyor musunuz?

Bu öğelere, sizin için ne kadar önemli olduklarına ve çözüm tarafından nasıl uygulandıklarına bakarak, orada gizli yönetim hizmetlerinden birini seçebilirsiniz .


3

Tamamen EC2 tabanlı bir ortam için en kolay çözüm AWS IAM rolleri ve S3 grup politikalarını kullanmaktır. Bu modelin bazı formülasyonları şifreleme için KMS ve depolama için S3 yerine DynamoDB içerir, ancak ikisini de kullanmak için çok zorlayıcı bir neden bulamadım. Https://github.com/poise/citadel adresine göz atın , özellikle Şef kullanıcılarına yöneliktir, ancak temel desen herhangi bir şey için çalışır, S3'ten gerçek indirmeyi yapmak için kendi yardımcısını yapmanız gerekebilir.


1
Gelecek için, bu sorunun daha önceki ve daha spesifik bir versiyonunu cevaplar.
coderanger

2
AWS artık KMS üzerinden şifreleme dahil anahtar / değer depolama için özel bir hizmet sunmaktadır: aws.amazon.com/ec2/systems-manager/parameter-store .
bnzmnzhnz
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.