Documentation
¶
Overview ¶
Package secret seals configuration secrets at rest.
NE YAPAR: veritabanına yazılacak sırları (LDAP servis hesabı parolası gibi) AES-256-GCM ile mühürler. Anahtar AYRI bir dosyada durur.
NE YAPMAZ — ve bunu net söylemek önemli: sunucuyu ele geçiren birine karşı koruma sağlamaz. O kişi hem veritabanını hem anahtar dosyasını okuyabilir. Bu paketin koruduğu senaryo veritabanı KOPYASININ sızmasıdır: yedek, hata ayıklama için alınan döküm, yanlışlıkla paylaşılan dosya. Anahtar o kopyalarda olmadığı için sır da açılmaz.
"Anahtarı nerede saklayacağız" sorusu sonsuza kadar geriye gider (ana anahtarı şifreleyen anahtar...). Zincir bir yerde dosya sistemi izinlerine dayanmak zorunda; biz orada duruyoruz ve iddiayı da o kadar tutuyoruz.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ErrNotSealed = errors.New("secret: value is not sealed or is corrupt")
ErrNotSealed: mühürlü olmayan ya da bozulmuş bir değer açılmaya çalışıldı.
Functions ¶
This section is empty.
Types ¶
type Box ¶
type Box struct {
// contains filtered or unexported fields
}
Box, mühürleme/çözme işlemlerini yapan anahtar sahibi.
func Init ¶
Init, yeni bir ana anahtar üretip path'e yazar ve Box döner.
Dosya O_EXCL ile açılır: var olan anahtarın ÜSTÜNE YAZMAK, o anahtarla mühürlenmiş bütün sırları kalıcı olarak okunamaz yapardı — ca.Init'te verdiğimiz kararın aynısı, aynı sebeple.
func Load ¶
Load, var olan ana anahtarı okur.
İzin kontrolü ca.Load'daki ile aynı: grup ya da diğerleri okuyabiliyorsa anahtar zaten sır değildir. Sessizce düzeltmek yerine REDDEDİYORUZ — operatör neyin yanlış olduğunu bilsin.