İçeriğe geç
Geliştirme dokümantasyonu
Bu belgeler Keydra'nın geliştirilmekte olan hâlini anlatır; yayımlanmış bir sürüm değildir. Anlatılanlar bir sürüm çıkana kadar değişebilir.

Güvenliğe genel bakış

Keydra yönettiği bütün sunucuların kimlik bilgilerini tutar. Bunun şifreleme, oturumlar, dış istekler ve her şeyi koruyan anahtar açısından anlamı.

Keydra neyi, nasıl korur#

Keydra yönettiği bütün sunucuların kimlik bilgilerini tutar. Bu onu doğrudan bir hedef hâline getirir; aşağıdaki önlemler de bunu ciddiye almanın sonucudur.

Kimlik bilgileri şifreli saklanır

Örnek anahtarıyla AES-256-GCM kullanılır ve hiçbir API bunları geri döndürmez. Bkz. Keydra neyi saklar, neyi korur.

Parolalar özetlenir

Argon2id kullanılır ve doğrulama bir işçi iş parçacığında yapılır.

Oturum yalnızca çerez değil, bir kayıttır

Oturumu sonlandırmak bir sonraki istekte etkili olur; parola değiştirmek de o ana kadar açılmış bütün oturumları kapatır. Bkz. Oturumlarınız.

İzinler her istekte yeniden hesaplanır

Erişimi geri almak için kullanıcının çıkış yapmasını beklemek gerekmez.

Tarayıcıya uygulatılan başlıklar

İçerik güvenliği politikası, X-Content-Type-Options: nosniff ve diğerleri varsayılmaz, başlık olarak gönderilir. Politika bir yapılandırma değeridir; varlıkları başka bir sunucudan sunan bir kurulum, başlığı kapatmak yerine yalnızca ihtiyaç duyduğu yönergeyi genişletir.

Çerezler

Oturum çerezi HttpOnly işaretlidir; hiçbir betik onu okuyamaz. SameSite=Lax işaretlidir; başka bir site onu kullanamaz. Üretimde ayrıca Secure olur.

Dış adresler çağrılmadan önce denetlenir

Webhook’lar, sağlayıcı keşfi ve nesne deposu uç noktaları aynı denetimden geçer. Link-local adresler reddedilir ve bunu açan bir ayar yoktur: 169.254.169.254 adresi makinenin bulut kimlik bilgilerini döndürür, uyarı tanımlamak ise yönetici değil operatör işidir. Denetim hem adres kaydedilirken hem de istek atılmadan önce çalışır; kayıt, denetimden eski olabilir.

Yayınlar hangi hedefe ait olduklarını belirtir

Tek bir hedefe ait bildirim, yalnızca sahibinin o hedefi görebildiği soketlere ulaşır. Tek bir sunucuda yetkisi olan bir kullanıcı, diğerleri hakkında hiçbir şey duymaz.

Sırlar günlüğe yazılmaz

Ne hedef parolaları, ne belirteçler, ne anahtar parolaları. Komut izleyici de sırları motordan çıkmadan önce maskeler.

Anahtar uzayını boşaltan işlemler bekletilebilir

Bir hedef, kendi adı yazılmadıkça ya da isteği açandan başka biri onaylamadıkça boşaltılmayı reddedebilir. İkisi de bir yetki olmadığı için, açmak kimseyi dışarıda bırakmaz — bkz. İkinci bir kişiyi bekleyen işlemler.

Örnek anahtarını değiştirme#

KEYDRA_SECRET_KEY, saklanan bütün kimlik bilgilerini şifreler. Değiştirilemeyen bir anahtar, kimsenin değiştirmediği anahtardır; bu da ilk ayrılan çalışandan sonra anahtarın hiç olmaması kadar risklidir.

Şifreli her değer, kendisini yazan anahtarı belirtir; böylece aynı anda birden fazla anahtar okunabilir. Anahtar değişimini kesintiden ayıran özellik budur.

Ön koşullar
  • crypto:rotate izniniz olmalı. Yalnızca yöneticilerde bulunur: değişim, kurulumdaki bütün kimlik bilgilerini yeniden yazar.

Prosedür
  1. Yeni anahtarı üretin:

    bash
    openssl rand -base64 32
  2. Yeni anahtar yazacak, eski anahtar hâlâ okuyacak biçimde dağıtın:

    properties
    KEYDRA_SECRET_KEY=<yeni anahtar>
    KEYDRA_PREVIOUS_SECRET_KEYS=<eski anahtar>

    Bu dağıtım, hiçbir veri yeniden şifrelenmeden de çalışır. Mevcut değerler kendilerini yazan anahtarla çözülmeye devam eder.

  3. Arayüzden yeniden şifrelemeyi başlatın. İşlem şifreli bütün sütunları — hedef parolaları, tünel kimlik bilgileri, sağlayıcı istemci sırları, yedek hedefi kimlik bilgileri — yeni anahtara taşır ve kaç kaydı taşıdığını bildirir.

  4. KEYDRA_PREVIOUS_SECRET_KEYS satırını kaldırıp yeniden dağıtın.

Doğrulama

Kurulum açılır, bütün hedefler bağlanır ve bütün tüneller çalışır. Yeni açılışın eski anahtara ihtiyaç duymaması, değişimin tamamlandığının kanıtıdır.

Önemli:Önemli

Yeniden şifreleme bütün kayıtları taşıdığını bildirmeden eski anahtarı kaldırmayın. Eski anahtarı silinmiş, yarım kalmış bir değişim, hiçbir şeyin okunamadığı bir veritabanı demektir.

Bu sayfayı düzenle