ASP.NET Core Data Protection'a Genel Bakış
ASP.NET Core, anahtar yönetimi ve döndürme dahil olmak üzere verileri korumak için bir şifreleme API'si sağlar.
Web uygulamalarının genellikle hassas verileri depolaması gerekir. Windows veri koruma API'si (DPAPI), web uygulamalarında kullanılmak üzere tasarlanmamıştır.
ASP.NET Core veri koruma yığını şu şekilde tasarlanmıştır:
- Çoğu Web senaryosu için yerleşik bir çözüm sağlayın.
- Önceki şifreleme sisteminin birçok eksikliğini giderin.
- ASP.NET 1.x - 4.x içindeki öğenin yerini
<machineKey>
alır.
Sorun bildirimi
Daha sonra almak için güvenilir bilgileri kalıcı hale getirmem gerekiyor, ancak kalıcılık mekanizmasına güvenmiyorum. Web terimleri açısından bu, güvenilmeyen bir istemci aracılığıyla güvenilir duruma gidiş dönüş ihtiyacım olduğu için yazılabilir.
Orijinallik, bütünlük ve kurcalamaya karşı yazım denetleme bir gereksinimdir. Bunun kurallı örneği bir kimlik doğrulaması cookie veya taşıyıcı belirtecidir. Sunucu bir I Groot oluşturur ve xyz izin belirtecine sahiptir ve istemciye gönderir. İstemci bu belirteci sunucuya geri sunar, ancak sunucunun, istemcinin belirteci sahte yapmadığına dair bir güvenceye ihtiyacı vardır.
Gizlilik bir gereksinimdir. Kalıcı duruma sunucu tarafından güvenildiğinden, bu durum güvenilmeyen bir istemciye açıklanmaması gereken bilgiler içerebilir. Örneğin:
- Dosya yolu.
- İzin.
- Tanıtıcı veya başka bir dolaylı başvuru.
- Sunucuya özgü bazı veriler.
Yalıtım bir gereksinimdir. Modern uygulamalar bileşen haline getirildiğinden, tek tek bileşenler sistemdeki diğer bileşenlere bakılmaksızın bu sistemden yararlanmak ister. Örneğin, bu yığını kullanarak taşıyıcı belirteç bileşenini göz önünde bulundurun. Herhangi bir girişim olmadan, örneğin aynı yığını kullanan bir CSRF önleme mekanizmasından çalışmalıdır.
Bazı yaygın varsayımlar gereksinimlerin kapsamını daraltabilir:
- Şifreleme sistemi içinde çalışan tüm hizmetlere eşit şekilde güvenilir.
- Verilerin doğrudan denetimimiz altındaki hizmetlerin dışında oluşturulması veya tüketilmesi gerekmez.
- Web hizmetine yapılan her istek şifreleme sisteminden bir veya daha fazla kez geçebileceğinden işlemler hızlı olmalıdır. Hız gereksinimi simetrik şifrelemeyi ideal hale getirir. Asimetrik şifreleme gerekli olana kadar kullanılmaz.
Tasarım felsefesi
ASP.NET Temel veri koruması, kullanımı kolay bir veri koruma yığınıdır. Bu, aşağıdaki ilkeleri temel alır:
- Yapılandırma kolaylığı. Sistem sıfır yapılandırma için çaba gösterir. Geliştiricilerin anahtar deposu gibi belirli bir yönü yapılandırması gereken durumlarda, bu belirli yapılandırmalar zor değildir.
- Tüketiciye yönelik temel bir API sunar. API'leri doğru kullanmak için doğrudan ve yanlış kullanmak zordur.
- Geliştiricilerin temel yönetim ilkelerini öğrenmesi gerekmez. Sistem, algoritma seçimini ve anahtar ömrünü geliştirici adına işler. Geliştiricinin ham anahtar malzemesine erişimi yoktur.
- Anahtarlar mümkün olduğunca çok korunur rest . Sistem uygun bir varsayılan koruma mekanizmasını keşfeder ve otomatik olarak uygular.
Veri koruma API'leri öncelikli olarak gizli yüklerin süresiz kalıcılığına yönelik değildir. Windows CNG DPAPI ve Azure Rights Management gibi diğer teknolojiler, süresiz depolama senaryosuna daha uygundur. Bunlara karşılık olarak güçlü anahtar yönetimi özellikleri vardır. Buna göre, ASP.NET Core veri koruma API'leri gizli verilerin uzun süreli korunması için kullanılabilir.
Hedef Kitle
Veri koruma sistemi üç ana hedef kitleyi hedefleyen API'ler sağlar:
Tüketici API'leri uygulama ve çerçeve geliştiricilerini hedefler.
Yığının nasıl çalıştığı veya nasıl yapılandırıldığı hakkında bilgi edinmek istemiyorum. Api'leri başarıyla kullanma olasılığı yüksek olan bazı işlemler yapmak istiyorum.
Yapılandırma API'leri uygulama geliştiricilerini ve sistem yöneticilerini hedefler.
Veri koruma sistemine ortamımın varsayılan olmayan yollar veya ayarlar gerektirdiğini söylemem gerekiyor.
Genişletilebilirlik API'leri, özel ilke uygulamaktan sorumlu geliştiricileri hedefler. Bu API'lerin kullanımı nadir durumlarla ve güvenlik deneyimi olan geliştiricilerle sınırlıdır.
Sistemdeki bir bileşenin tamamını değiştirmem gerekiyor çünkü gerçekten benzersiz davranış gereksinimlerim var. Gereksinimlerimi karşılayan bir eklenti oluşturmak için API yüzeyinin yaygın olarak kullanılan bölümlerini öğrenmeye hazırım.
Paket düzeni
Veri koruma yığını beş paket içerir:
Microsoft.AspNetCore.DataProtection.Abstractions içeriği:
- IDataProtectionProvider ve IDataProtector veri koruma hizmetleri oluşturmak için arabirimler.
- Bu türlerle çalışmak için kullanışlı uzantı yöntemleri. örneğin, IDataProtector.Protect
Veri koruma sistemi başka bir yerde örneği oluşturulursa ve API'yi kullanıyorsanız başvurusuna başvurun
Microsoft.AspNetCore.DataProtection.Abstractions
.Microsoft.AspNetCore.DataProtection , aşağıdakiler dahil olmak üzere veri koruma sisteminin temel uygulamasını içerir:
- Çekirdek şifreleme işlemleri.
- Anahtar yönetimi.
- Yapılandırma ve genişletilebilirlik.
Veri koruma sisteminin örneğini açmak için başvurusuna başvurun
Microsoft.AspNetCore.DataProtection
. Aşağıdaki durumlarda veri koruma sistemine başvurmanız gerekebilir:- öğesine IServiceCollectionekleme.
- Davranışını değiştirme veya genişletme.
Microsoft.AspNetCore.DataProtection.Extensions, geliştiricilerin yararlı bulabileceği ancak çekirdek pakete ait olmayan ek API'ler içerir. Örneğin, bu paket şunları içerir:
- Bağımlılık eklemeden anahtarları dosya sistemindeki bir konumda depolamak için veri koruma sisteminin örneğini oluşturmak için fabrika yöntemleri. Bkz. DataProtectionProvider.
- Korumalı yüklerin ömrünü sınırlamak için uzantı yöntemleri. Bkz. ITimeLimitedDataProtector.
Microsoft.AspNetCore.DataProtection.SystemWeb , işlemlerini yeni ASP.NET Core veri koruma yığınını kullanacak şekilde yeniden yönlendirmek
<machineKey>
için mevcut bir ASP.NET 4.x uygulamasına yüklenebilir. Daha fazla bilgi için bkz . ASP.NET Core'da ASP.NET machineKey'i değiştirme.Microsoft.AspNetCore.Cryptography.KeyDerivation , PBKDF2 parola karma yordamının bir uygulamasını sağlar ve kullanıcı parolalarını güvenli bir şekilde işlemesi gereken sistemler tarafından kullanılabilir. Daha fazla bilgi için bkz . ASP.NET Core'da karma parolalar.
Ek kaynaklar
ASP.NET Core, anahtar yönetimi ve döndürme dahil olmak üzere verileri korumak için bir şifreleme API'si sağlar.
Web uygulamalarının genellikle hassas verileri depolaması gerekir. Windows veri koruma API'si (DPAPI), web uygulamalarında kullanılmak üzere tasarlanmamıştır.
ASP.NET Core veri koruma yığını şu şekilde tasarlanmıştır:
- Çoğu Web senaryosu için yerleşik bir çözüm sağlayın.
- Önceki şifreleme sisteminin birçok eksikliğini giderin.
- ASP.NET 1.x - 4.x içindeki öğenin yerini
<machineKey>
alır.
Sorun bildirimi
Daha sonra almak için güvenilir bilgileri kalıcı hale getirmem gerekiyor, ancak kalıcılık mekanizmasına güvenmiyorum. Web terimleri açısından bu, güvenilmeyen bir istemci aracılığıyla güvenilir duruma gidiş dönüş ihtiyacım olduğu için yazılabilir.
Orijinallik, bütünlük ve kurcalamaya karşı yazım denetleme bir gereksinimdir. Bunun kurallı örneği bir kimlik doğrulaması cookie veya taşıyıcı belirtecidir. Sunucu bir I Groot oluşturur ve xyz izin belirtecine sahiptir ve istemciye gönderir. İstemci bu belirteci sunucuya geri sunar, ancak sunucunun, istemcinin belirteci sahte yapmadığına dair bir güvenceye ihtiyacı vardır.
Gizlilik bir gereksinimdir. Kalıcı duruma sunucu tarafından güvenildiğinden, bu durum güvenilmeyen bir istemciye açıklanmaması gereken bilgiler içerebilir. Örneğin:
- Dosya yolu.
- İzin.
- Tanıtıcı veya başka bir dolaylı başvuru.
- Sunucuya özgü bazı veriler.
Yalıtım bir gereksinimdir. Modern uygulamalar bileşen haline getirildiğinden, tek tek bileşenler sistemdeki diğer bileşenlere bakılmaksızın bu sistemden yararlanmak ister. Örneğin, bu yığını kullanarak taşıyıcı belirteç bileşenini göz önünde bulundurun. Herhangi bir girişim olmadan, örneğin aynı yığını kullanan bir CSRF önleme mekanizmasından çalışmalıdır.
Bazı yaygın varsayımlar gereksinimlerin kapsamını daraltabilir:
- Şifreleme sistemi içinde çalışan tüm hizmetlere eşit şekilde güvenilir.
- Verilerin doğrudan denetimimiz altındaki hizmetlerin dışında oluşturulması veya tüketilmesi gerekmez.
- Web hizmetine yapılan her istek şifreleme sisteminden bir veya daha fazla kez geçebileceğinden işlemler hızlı olmalıdır. Hız gereksinimi simetrik şifrelemeyi ideal hale getirir. Asimetrik şifreleme gerekli olana kadar kullanılmaz.
Tasarım felsefesi
ASP.NET Temel veri koruması, kullanımı kolay bir veri koruma yığınıdır. Bu, aşağıdaki ilkeleri temel alır:
- Yapılandırma kolaylığı. Sistem sıfır yapılandırma için çaba gösterir. Geliştiricilerin anahtar deposu gibi belirli bir yönü yapılandırması gereken durumlarda, bu belirli yapılandırmalar zor değildir.
- Tüketiciye yönelik temel bir API sunar. API'leri doğru kullanmak için doğrudan ve yanlış kullanmak zordur.
- Geliştiricilerin temel yönetim ilkelerini öğrenmesi gerekmez. Sistem, algoritma seçimini ve anahtar ömrünü geliştirici adına işler. Geliştiricinin ham anahtar malzemesine erişimi yoktur.
- Anahtarlar mümkün olduğunca çok korunur rest . Sistem uygun bir varsayılan koruma mekanizmasını keşfeder ve otomatik olarak uygular.
Veri koruma API'leri öncelikli olarak gizli yüklerin süresiz kalıcılığına yönelik değildir. Windows CNG DPAPI ve Azure Rights Management gibi diğer teknolojiler, süresiz depolama senaryosuna daha uygundur. Bunlara karşılık olarak güçlü anahtar yönetimi özellikleri vardır. Buna göre, ASP.NET Core veri koruma API'leri gizli verilerin uzun süreli korunması için kullanılabilir.
Hedef Kitle
Veri koruma sistemi üç ana hedef kitleyi hedefleyen API'ler sağlar:
Tüketici API'leri uygulama ve çerçeve geliştiricilerini hedefler.
Yığının nasıl çalıştığı veya nasıl yapılandırıldığı hakkında bilgi edinmek istemiyorum. Api'leri başarıyla kullanma olasılığı yüksek olan bazı işlemler yapmak istiyorum.
Yapılandırma API'leri uygulama geliştiricilerini ve sistem yöneticilerini hedefler.
Veri koruma sistemine ortamımın varsayılan olmayan yollar veya ayarlar gerektirdiğini söylemem gerekiyor.
Genişletilebilirlik API'leri, özel ilke uygulamaktan sorumlu geliştiricileri hedefler. Bu API'lerin kullanımı nadir durumlarla ve güvenlik deneyimi olan geliştiricilerle sınırlıdır.
Sistemdeki bir bileşenin tamamını değiştirmem gerekiyor çünkü gerçekten benzersiz davranış gereksinimlerim var. Gereksinimlerimi karşılayan bir eklenti oluşturmak için API yüzeyinin yaygın olarak kullanılan bölümlerini öğrenmeye hazırım.
Paket düzeni
Veri koruma yığını beş paket içerir:
Microsoft.AspNetCore.DataProtection.Abstractions içeriği:
- IDataProtectionProvider ve IDataProtector veri koruma hizmetleri oluşturmak için arabirimler.
- Bu türlerle çalışmak için kullanışlı uzantı yöntemleri. örneğin, IDataProtector.Protect
Veri koruma sistemi başka bir yerde örneği oluşturulursa ve API'yi kullanıyorsanız başvurusuna başvurun
Microsoft.AspNetCore.DataProtection.Abstractions
.Microsoft.AspNetCore.DataProtection , aşağıdakiler dahil olmak üzere veri koruma sisteminin temel uygulamasını içerir:
- Çekirdek şifreleme işlemleri.
- Anahtar yönetimi.
- Yapılandırma ve genişletilebilirlik.
Veri koruma sisteminin örneğini açmak için başvurusuna başvurun
Microsoft.AspNetCore.DataProtection
. Aşağıdaki durumlarda veri koruma sistemine başvurmanız gerekebilir:- öğesine IServiceCollectionekleme.
- Davranışını değiştirme veya genişletme.
Microsoft.AspNetCore.DataProtection.Extensions, geliştiricilerin yararlı bulabileceği ancak çekirdek pakete ait olmayan ek API'ler içerir. Örneğin, bu paket şunları içerir:
- Bağımlılık eklemeden anahtarları dosya sistemindeki bir konumda depolamak için veri koruma sisteminin örneğini oluşturmak için fabrika yöntemleri. Bkz. DataProtectionProvider.
- Korumalı yüklerin ömrünü sınırlamak için uzantı yöntemleri. Bkz. ITimeLimitedDataProtector.
Microsoft.AspNetCore.DataProtection.SystemWeb , işlemlerini yeni ASP.NET Core veri koruma yığınını kullanacak şekilde yeniden yönlendirmek
<machineKey>
için mevcut bir ASP.NET 4.x uygulamasına yüklenebilir. Daha fazla bilgi için bkz . ASP.NET Core'da ASP.NET machineKey'i değiştirme.Microsoft.AspNetCore.Cryptography.KeyDerivation , PBKDF2 parola karma yordamının bir uygulamasını sağlar ve kullanıcı parolalarını güvenli bir şekilde işlemesi gereken sistemler tarafından kullanılabilir. Daha fazla bilgi için bkz . ASP.NET Core'da karma parolalar.
Ek kaynaklar
ASP.NET Core