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 , PolicyProfileSettingsveya ProtectionProfileSettings nesnelerinin bir parçası FileProfileSettingsolarak 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 Purpose
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, profil ayarları nesnelerinden biri aracılığıyla, sabit listesi aracılığıyla mip::CacheStorageType 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: İ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 8 ve daha yenisi Windows 7 yalnızca Cache Depolama Type::OnDisk'i destekler
macOS High Sierra ve üzeri
Ubuntu Linux 16.04 ve üzeri ve LinuxEncryptedCache özellik bayrağı gerektirirSecretService.
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()

Ö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.

Koruma Veritabanı

Tablo Purpose Şifreli
AuthInfoStore Kimlik doğrulaması sınaması ayrıntılarını depolar. Hayır
ConsentStore Her altyapı 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
Depo -sunun Her altyapı için simetrik şifreleme anahtarlarını depolar. Yes
LicenseStore 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 Purpose Şifreli
Depo -sunun Her altyapı 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 uç ilkesi hizmet URL'sini depolar. Hayır
Duyarlılık Belirli bir kullanıcı ilkesi için sınıflandırma kurallarını depolar. Yes
SensitivityUrls 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.3 itibarıyla, süresi dolduğunda lisans önbelleğini temizlemeye ilişkin bir mekanizma yoktur. Önbelleğin istenenden daha büyük olması durumunda önbelleği kaldırmak için bir dış işlem olması gerekir.

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, nesne üzerinde FileProfile::Settings false olarak ayarlanarak CanCacheLicenses 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 Altyapıları

MIP SDK'sında, kimliği doğrulanmış işlemleri gerçekleştiren her kullanıcı için bir altyapı oluşturulur. Altyapılar, kimliği doğrulanmış bir kimlik adına gerçekleştirilen tüm işlemler için bir arabirim sağlar. Profiller ve Motorlar kavramları, FileEngine, PolicyEngine veya ProtectionEngine'de açıklandığı gibi her birinin ve LOADEDiki durumu CREATED 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::PolicyEngine](./concept-profile-engine-policy-engine-cpp.md#implementation-create-policy-engine-settings)oluşturmak [mip::FileEngine](./concept-profile-engine-file-engine-cpp.md#create-file-engine-settings)için kod parçacıklarını izleyin.

Mevcut bir engineId sağlanamaması, ilkeyi getirmek için fazladan hizmet gidiş dönüşlerine neden olur ve mevcut altyapı için önceden önbelleğe alınmış olabilecek lisansları getirir. Altyapı kimliğini Önbelleğe Alma, SDK'nın daha önce şifresi çözülmüş bilgilere çevrimdışı erişimine ve genel performans geliş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.