Microsoft Information Protection SDK - Önbellek depolama

MIP SDK, SDK önbellek depolamasını korumak için bir SQLite3 veritabanı uygular. Microsoft Information Protection SDK'sının 1.3 sürümünden önce yalnızca iki tür önbellek durumu depolaması destekleniyordu: Diskte ve bellekte. Bu türlerin her ikisi de belirli verileri, özellikle korumalı içerik ve ilke bilgilerinin lisanslarını düz metin olarak depoladı.

SDK'nın güvenlik duruşunu geliştirmek için, veritabanını ve içeriğini korumak için platforma özgü şifreleme API'lerini kullanan ikinci bir disk önbelleği türü için destek ekledik.

Uygulama, profili , FileProfileSettingsveya PolicyProfileSettings nesnelerinin bir parçası ProtectionProfileSettingsolarak yüklerken önbellek türünü tanımlar. Önbellek türü profilin ömrü için statiktir. Farklı bir önbellek depolama türüne geçmek için mevcut profili yok etmek ve yeni bir profil oluşturmak gerekir.

Önbellek Depolama Türleri

MIP SDK 1.3 sürümünden itibaren aşağıdaki depolama önbelleği türleri kullanılabilir.

Tür Amaç
InMemory Uygulamadaki bellekte depolama önbelleğini korur.
OnDisk Veritabanını, ayarlar nesnesinde sağlanan dizinde diskte depolar. Veritabanı düz metin olarak depolanır.
OnDiskEncrypted Veritabanını, ayarlar nesnesinde sağlanan dizinde diskte depolar. Veritabanı işletim sistemine özgü API'ler kullanılarak şifrelenir.

Uygulama tarafından oluşturulan her altyapı yeni bir şifreleme anahtarı oluşturur.

Önbellek depolama, sabit liste mip::CacheStorageType aracılığıyla, profil ayarları nesnelerinden biri aracılığıyla ayarlanır.

FileProfile::Settings profileSettings(mMipContext,
    mip::CacheStorageType::OnDiskEncrypted, // Define the storage type to use.
    mAuthDelegate,
    std::make_shared<sample::consent::ConsentDelegateImpl>(),
    std::make_shared<FileProfileObserver>());

Her tür ne zaman kullanılır?

Önbellek depolama, daha önce şifresi çözülmüş bilgilere çevrimdışı erişimi korumak ve veriler daha önce kullanıldığında şifre çözme işlemleri için performans sağlamak için önemlidir.

  • Bellek Depolama alanında: İlke veya lisans önbelleği bilgilerinin hizmet yeniden başlatmalarında kalıcı hale alınmasının gerekmediği uzun süreli işlemler için bu depolama türünü kullanın.
  • Diskte: İşlemlerin sık sık durdurulup başlatıldığı ancak yeniden başlatmalarda ilke, lisans ve hizmet bulma önbelleğini koruması gereken uygulamalar için bu depolama türünü kullanın. Bu depolama önbelleği türü düz metin olduğundan, kullanıcıların durum depolamasına erişmeyeceği sunucu iş yükleri için daha uygundur. Buna örnek olarak bir sunucuda çalışan bir Windows hizmeti veya Linux daemon'ı ya da yalnızca hizmet yöneticilerinin durum verilerine erişebilecekleri bir SaaS uygulaması verilebilir.
  • Diskte ve Şifrelenmiş: İşlemlerin sık sık durabileceği ve başlatıldığı, ancak yeniden başlatmalarda ilke, lisans ve hizmet bulma önbelleğini koruması gereken uygulamalar için bu depolama türünü kullanın. Bu depolama önbelleği şifrelenir, bu nedenle kullanıcının durum veritabanına göz atabileceği ve veritabanını keşfedebileceği iş istasyonu uygulamaları için daha uygundur. Şifreleme, meraklı kullanıcıların ilke içeriği veya koruma lisansı içeriği aracılığıyla düz metin olarak erişim sağlayamayacaklarını sağlamaya yardımcı olur. Her durumda verilerin kullanıcının erişebileceği anahtarlarla şifrelendiğini unutmayın. Becerikli bir saldırgan önbelleğin şifresini en az çabayla çözebilir, ancak bu işlem kurcalamayı ve göz atmayı önler.

Şifreleme için Desteklenen Platformlar

Platform Sürüm Notlar
Microsoft Windows Windows 11, Windows Server'ın Destek sürümü
macOS High Sierra ve üzeri
Ubuntu Linux 22.04 ve üzeri SecretService ve LinuxEncryptedCache özellik bayrağı gerektirir.
Android Android 7.0 veya üzeri
iOS Desteklenen tüm sürümler

MIP SDK'sı diğer Linux dağıtımlarını desteklese de önbellek şifrelemesini RedHat Enterprise Linux, CentOS veya Debian üzerinde test etmedik.

Not

Linux'ta önbellek depolamayı etkinleştirmek için özellik bayrağı mip::MipConfiguration::SetFeatureSettings() ile ayarlanır.

Önbellek depolama veritabanı tabloları

MIP SDK'sı önbellek için iki veritabanı tutar. Bunlardan biri Koruma SDK'ları ve koruma durumu ayrıntılarını korumak içindir. Diğeri, İlke SDK'larına yöneliktir ve ilke ayrıntılarını ve hizmet bilgilerini korur. Her ikisi de ayarlar nesnesinde tanımlanan yolda, mip\mip.policies.sqlite3 ve mip\mip.protection.sqlite3 altında depolanır.

Not

MIP SDK'sı, önbelleğinin farklı sürümleri arasında uyumluluğu garanti etmez. Uygulamayı MIP SDK'sının yeni bir sürümüne yükseltmeden önce mip\ dizinindeki tüm dosyaların veya varsayılan ayardan değiştirilen herhangi bir alternatif dizinin temizlenmesi önerilir.

Koruma Veritabanı

Tablo Amaç Şifreli
AuthInfoStore Kimlik doğrulaması sınaması ayrıntılarını depolar. Hayır
ConsentStore Her motor için onay sonuçlarını depolar. Hayır
DnsInfoStore Koruma işlemleri için DNS arama sonuçlarını depolar Hayır
EngineStore Altyapı ayrıntılarını, ilişkili kullanıcıyı ve özel istemci verilerini depolar Hayır
Anahtar Deposu Her işlemci için simetrik şifreleme anahtarlarını depolar. Yes
Lisans Mağazası Depolar, daha önce şifresi çözülmüş veriler için lisans bilgilerini kullanır. Yes
SdInfoStore Hizmet bulma sonuçlarını depolar. Hayır

Not

LicenseStore önbelleği, koruma altyapısında veya dosya altyapısında bir kimlik ayarlanmasını gerektirir.

İlke Veritabanı

Tablo Amaç Şifreli
KeyStore Her motor için simetrik şifreleme anahtarlarını depolar. Yes
İlkeler Her kullanıcı için etiket ilkesi bilgilerini depolar. Yes
İlkelerUrl Belirli bir kullanıcı için arka plan ilke hizmeti URL'sini depolar. Hayır
Duyarlılık Belirli bir kullanıcı ilkesi için sınıflandırma kurallarını depolar. Yes
HassasiyetURL'leri Belirli bir kullanıcı için arka uç duyarlılık ilkesi hizmet URL'sini depolar. Hayır

Veritabanı boyutuyla ilgili dikkat edilmesi gerekenler

Veritabanı boyutu iki faktöre bağlıdır: Önbelleğe eklenen altyapıların miktarı ve önbelleğe alınmış koruma lisanslarının miktarı. MIP SDK 1.18'den başlayarak, DeleteStoredData() üzerinde ProtectionEngine önbelleğe alınmış motor verilerini program aracılığıyla kaldırmak için kullanılabilir. Önceki sürümlerde, istenenden daha fazla büyürse önbelleği kaldırmak için bir dış işlem gerekebilir.

Veritabanı büyümesine en önemli katkıda bulunan koruma lisansı önbelleği olacaktır. Hizmet gidiş dönüşleri uygulama performansınızı etkilemeyebileceği veya önbellek çok büyük olabileceğinden lisans önbelleği gerekli değilse lisans önbelleği devre dışı bırakılabilir. Bu, FileProfile::Settings nesnesinde CanCacheLicenses 'ün false olarak ayarlanmasıyla gerçekleştirilir.

FileProfile::Settings profileSettings(mMipContext,
    mip::CacheStorageType::OnDiskEncrypted,
    mAuthDelegate,
    std::make_shared<sample::consent::ConsentDelegateImpl>(),
    std::make_shared<FileProfileObserver>());

profileSettings.SetCanCacheLicenses(false);

Önbelleğe Alma Motorları

MIP SDK'sında, kimliği doğrulanmış işlemleri gerçekleştiren her kullanıcı için bir altyapı oluşturulur. Motorlar, kimliği doğrulanmış bir kimlik adına gerçekleştirilen tüm işlemler için bir arabirim sağlar. Profiler ve Motorlar kavramlarında açıklandığı gibi, FileEngine, PolicyEngine veya ProtectionEngine'in her birininCREATED iki durumu LOADED vardır. SDK işlemlerini gerçekleştirebilmesi için bir altyapı oluşturulup yüklenmesi gerekir. Bir altyapı kullanımda değilse SDK, altyapıyı önbelleğe alır ve kullanılabilir kaynaklara bağlı olarak mümkün olduğunca uzun süre durumda tutar CREATED . Her ilgili SDK'nın profil sınıfı, bunu açıkça başarmak için bir yöntem UnloadEngineAsync de sağlar.

Her altyapı, tüm altyapı yönetimi işlemlerinde kullanılan benzersiz bir tanımlayıcıya id sahiptir. İstemci uygulaması açıkça bir kimlik sağlayabilir veya uygulama tarafından sağlanmadıysa SDK bir kimlik oluşturabilir. Altyapı oluşturma sırasında altyapı ayarları nesneleri kullanılarak benzersiz bir tanımlayıcı sağlanırsa ve önbelleğe alma yukarıda açıklandığı gibi API profilinde etkinleştirilirse, kullanıcı SDK ile her işlem gerçekleştirişinde aynı altyapılar kullanılabilir. [mip::FileEngine](./concept-profile-engine-file-engine-cpp.md#create-file-engine-settings) ve [mip::PolicyEngine](./concept-profile-engine-policy-engine-cpp.md#implementation-create-policy-engine-settings) oluşturmak için kod parçacıklarını izleyin.

Mevcut bir engineId sağlanmaması, ilkeleri getirmek için ek hizmet gidiş dönüşlerine neden olur ve mevcut motor için önceden önbelleğe alınmış olabilecek lisansları getirir. Altyapı kimliğini önbelleğe almak, SDK'nın daha önce şifresi çözülmüş bilgilere çevrimdışı erişimine ve genel performans iyileştirmelerine olanak tanır.

Sonraki Adımlar

Ardından, MIP altyapısı kimliklerini MIP SDK önbelleğini düzgün kullanacak şekilde ayarlamayı anlamak için Profil ve Altyapı nesne kavramları hakkında daha fazla bilgi edinin.