Aracılığıyla paylaş


ASP.NET Core'da Veri Koruma anahtar yönetimi ve yaşam süresi

Gönderen Rick Anderson

Anahtar yönetimi

Uygulama, işletimsel ortamını algılamaya ve anahtar yapılandırmasını kendi başına işlemeye çalışır.

  1. Uygulama Azure Uygulaması içinde barındırılıyorsa, anahtarlar %HOME%\ASP.NET\DataProtection-Keys klasöründe kalır. Bu klasör, ağ depolaması tarafından desteklenir ve uygulamayı barındıran tüm makineler arasında eşitlenir.

    • Anahtarlar, bekleyenler için korunmaz.
    • DataProtection-Keys klasörü, anahtar halkasını tek bir dağıtım yuvasındaki bir uygulamanın tüm örneklerine sağlar.
    • Hazırlama ve Üretim gibi ayrı dağıtım yuvaları, bir anahtar kademeyi paylaşmaz. Dağıtım yuvaları arasında geçiş yaptığınızda (örneğin Hazırlamayı Üretim ortamına değiştirme veya A/B testi kullanma), Data Protection kullanan herhangi bir uygulama, önceki yuva içindeki anahtar halkasını kullanarak depolanan verilerin şifresini çözemez. Bu, kullanıcıların standart ASP.NET Core cookie kimlik doğrulamasını kullanan bir uygulamada oturumlarının kapatılmasını sağlar. Bu, kullanıcıların kendi kimliklerini korumak için Veri Koruması'nı kullanmasıdır cookie. Yuvadan bağımsız anahtar halkaları istiyorsanız Azure Blob Depolama, Azure Key Vault, SQL deposu veya Redis cache gibi bir dış anahtar halkası sağlayıcısı kullanın.
  2. Kullanıcı profili kullanılabilir durumdaysa, anahtarlar %LOCALAPPDATA%\ASP.NET\DataProtection-Keys klasöründe kalır. İşletim sistemi Windows ise, anahtarlar BEKLEYEN DPAPI kullanılarak şifrelenir.

    Uygulama havuzunun setProfileEnvironment özniteliği de etkinleştirilmelidir. setProfileEnvironment için varsayılan değer true değeridir. Bazı senaryolarda (örneğin Windows işletim sistemi) setProfileEnvironmentfalse olarak ayarlanır. Anahtarlar beklendiği gibi kullanıcı profili dizininde depolanmıyorsa:

    1. %windir%/system32/inetsrv/config klasörüne gidin.
    2. applicationHost.config dosyasını açın.
    3. <system.applicationHost><applicationPools><applicationPoolDefaults><processModel> öğesini bulun.
    4. Varsayılan değeri true olan setProfileEnvironment özniteliğinin mevcut olmadığını veya özniteliğin açıkça true değerine ayarlanmadığını onaylayın.
  3. Uygulama IIS'de barındırılıyorsa, anahtarlar HKLM kayıt defterinde yalnızca çalışan işlem hesabı için ACLed olan özel bir kayıt defteri anahtarında kalıcı hale getirilir. Bekleyen anahtarlar DPAPI kullanılarak şifrelenir.

  4. Bu koşullardan hiçbiri eşleşmiyorsa, anahtarlar geçerli işlemin dışında kalıcı olmaz. İşlem kapatıldığında, oluşturulan tüm anahtarlar kaybolur.

Geliştirici her zaman tam denetimdedir ve anahtarların nasıl ve nerede depolandığını geçersiz kılabilir. Yukarıdaki ilk üç seçenek, ASP.NET <machineKey> otomatik oluşturma yordamlarının geçmişte nasıl çalıştığına benzer çoğu uygulama için iyi varsayılanlar sağlamalıdır. Son, geri dönüş seçeneği, geliştiricinin anahtar kalıcılığı istemesi durumunda yapılandırmayı önceden belirtmesini gerektiren tek senaryodur, ancak bu geri dönüş yalnızca nadir durumlarda gerçekleşir.

Docker kapsayıcısında barındırılırken, anahtarlar Docker birimi olan bir klasörde (paylaşılan birim veya kapsayıcının ömrünü aşan konak bağlı bir birim) ya da Azure Key Vault veya Redis gibi bir dış sağlayıcıda kalıcı olmalıdır. Dış sağlayıcı, uygulamalar paylaşılan bir ağ birimine erişemiyorsa web grubu senaryolarında da yararlıdır (daha fazla bilgi için bkz . PersistKeysToFileSystem ).

Uyarı

Geliştirici yukarıda belirtilen kuralları geçersiz kılar ve Veri Koruma sistemini belirli bir anahtar deposuna işaret ederse bekleyen anahtarların otomatik olarak şifrelenmesi devre dışı bırakılır. Bekleyen koruma, yapılandırma aracılığıyla yeniden etkinleştirilebilir.

Anahtar ömrü

Anahtarların varsayılan olarak 90 günlük ömrü vardır. Bir anahtarın süresi dolduğunda uygulama otomatik olarak yeni bir anahtar oluşturur ve yeni anahtarı etkin anahtar olarak ayarlar. Kullanımdan kaldırılacak anahtarlar sistemde kaldığı sürece, uygulamanız bunlarla korunan tüm verilerin şifresini çözebilir. Daha fazla bilgi için bkz . anahtar yönetimi .

Varsayılan algoritmalar

Kullanılan varsayılan yük koruma algoritması, gizlilik için AES-256-CBC ve kimlik doğrulaması için HMACSHA256. Her 90 günde bir değiştirilen 512 bit ana anahtar, bu algoritmalar için kullanılan iki alt anahtarı yük temelinde türetmek için kullanılır. Daha fazla bilgi için bkz . alt anahtar türetme .

Ek kaynaklar