Sdílet prostřednictvím


Microsoft Information Protection SDK – Ukládání do mezipaměti

Sada MIP SDK implementuje databázi SQLite3 pro správu úložiště mezipaměti SADY SDK. Před verzí 1.3 sady Microsoft Information Protection SDK byly podporovány pouze dva typy úložiště stavu mezipaměti: na disku a v paměti. Oba tyto typy ukládají určitá data, konkrétně licence na chráněný obsah a informace o zásadách, ve formátu prostého textu.

Abychom zlepšili stav zabezpečení sady SDK, přidali jsme podporu pro druhý typ mezipaměti disku, který k ochraně databáze a jejího obsahu používá kryptografická rozhraní API specifická pro platformu.

Aplikace definuje typ mezipaměti při načítání profilu jako součást objektu FileProfileSettings, PolicyProfileSettingsnebo ProtectionProfileSettings objektů. Typ mezipaměti je statický pro životnost profilu. Změna na jiný typ úložiště mezipaměti vyžaduje zničení existujícího profilu a vytvoření nového.

Typy úložiště mezipaměti

Počínaje sadou MIP SDK verze 1.3 jsou k dispozici následující typy mezipaměti úložiště.

Typ Účel
InMemory Udržuje mezipaměť úložiště v paměti v aplikaci.
OnDisk Uloží databázi na disk v adresáři zadaném v objektu nastavení. Databáze je uložena ve formátu prostého textu.
OnDiskEncrypted Uloží databázi na disk v adresáři zadaném v objektu nastavení. Databáze se šifruje pomocí rozhraní API specifických pro operační systém.

Každý modul vygenerovaný aplikací generuje nový šifrovací klíč.

Úložiště mezipaměti se nastavuje prostřednictvím jednoho z objektů nastavení profilu prostřednictvím výčtu mip::CacheStorageType .

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

Kdy použít jednotlivé typy

Úložiště mezipaměti je důležité pro zachování offline přístupu k dříve dešifrovaným informacím a zajištění výkonu operací dešifrování při dřívějším využití dat.

  • V úložišti paměti: Tento typ úložiště použijte pro dlouhodobé procesy, u kterých není vyžadováno zachování informací o zásadách nebo mezipaměti licencí napříč restartováními služby.
  • Na disku: Tento typ úložiště použijte pro aplikace, u kterých se procesy můžou často zastavovat a spouštět, ale musí udržovat zásady, licence a mezipaměť zjišťování služeb napříč restartováními. Tento typ mezipaměti úložiště je prostý text, takže je vhodnější pro úlohy serveru, kde uživatelé nebudou mít přístup k úložišti stavu. Příkladem může být démon systému Windows nebo démon Linuxu běžící na serveru nebo aplikace SaaS, kde by k datům o stavu měli přístup jenom správci služeb.
  • On Disk and Encrypted: Použijte tento typ úložiště pro aplikace, kde se procesy můžou často zastavovat a spouštět, ale musí udržovat zásady, licence a mezipaměť zjišťování služeb po restartování. Tato mezipaměť úložiště je zašifrovaná, takže je vhodnější pro aplikace pracovních stanic, kde uživatel může procházet a zjišťovat stavovou databázi. Šifrování pomáhá zajistit, aby prying uživatelé neměli přístup k obsahu zásad nebo obsahu licence ochrany v prostém textu. Je důležité si uvědomit, že ve všech případech jsou data šifrovaná pomocí klíčů, ke kterým má uživatel přístup. Zkušený nežádoucí osoba dokáže dešifrovat mezipaměť s minimálním úsilím, ale brání to manipulaci a procházení.

Podporované platformy pro šifrování

Platforma Verze Notes
Microsoft Windows Windows 8 a novější Windows 7 podporuje pouze CacheStorageType::OnDisk.
macOS High Sierra a novější
Ubuntu Linux 16.04 a novější Vyžaduje SecretService a LinuxEncryptedCache příznak funkce.
Android Android 7.0 nebo novější
iOS Všechny podporované verze

I když sada MIP SDK podporuje další linuxové distribuce, neotestovali jsme šifrování mezipaměti v systému RedHat Enterprise Linux, CentOS nebo Debian.

Poznámka:

Příznak funkce pro povolení úložiště mezipaměti v Linuxu je nastavený prostřednictvím mip::MipConfiguration::SetFeatureSettings()

Tabulky databáze úložiště mezipaměti

Sada MIP SDK udržuje dvě databáze pro mezipaměť. Jedním z nich je sada SDK ochrany a udržování podrobností o stavu ochrany. Druhým je sada SDK zásad a údržba podrobností o zásadách a informací o službě. Obě jsou uloženy v cestě definované v objektu nastavení v části mip\mip.policies.sqlite3 a mip\mip.protection.sqlite3.

Databáze ochrany

Table Účel Šifrované
AuthInfoStore Ukládá podrobnosti ověřovací výzvy. No
ConsentStore Ukládá výsledky souhlasu pro každý modul. No
DnsInfoStore Ukládá výsledky vyhledávání DNS pro operace ochrany. No
EngineStore Ukládá podrobnosti modulu, přidruženého uživatele a vlastní data klienta. No
Keystore Ukládá symetrické šifrovací klíče pro každý modul. Ano
LicenseStore Ukládá informace o licenci k dříve dešifrovaným datům. Ano
SdInfoStore Ukládá výsledky zjišťování služeb. No

Poznámka:

Mezipaměť LicenseStore vyžaduje, aby byla identita nastavena v modulu ochrany nebo souborovém stroji.

Databáze zásad

Table Účel Šifrované
Keystore Ukládá symetrické šifrovací klíče pro každý modul. Ano
Zásady Ukládá informace o zásadách popisků pro každého uživatele. Ano
PoliciesUrl Ukládá adresu URL služby zásad back-endu pro konkrétního uživatele. No
Citlivost Ukládá pravidla klasifikace pro konkrétní zásady uživatele. Ano
CitlivostIUrls Ukládá adresu URL služby zásad citlivosti back-endu pro konkrétního uživatele. No

Důležité informace o velikosti databáze

Velikost databáze závisí na dvou faktorech: množství modulů přidaných do mezipaměti a množství licencí ochrany, které byly uloženy v mezipaměti. Od sady MIP SDK 1.3 neexistuje žádný mechanismus pro vyčištění mezipaměti licencí, protože vyprší jejich platnost. Pokud se mezipaměť zvětší, bude potřeba externí proces odebrat, než je žádoucí.

Nejvýznamnějším přispěvatelem růstu databáze bude mezipaměť licencí ochrany. Pokud se ukládání do mezipaměti licencování nevyžaduje, protože doby odezvy služby nebudou mít vliv na výkon vaší aplikace nebo může být mezipaměť příliš velká, mezipaměť licencí může být zakázána. Toho lze dosáhnout nastavením CanCacheLicenses objektu FileProfile::Settings na hodnotu false.

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

profileSettings.SetCanCacheLicenses(false);

moduly Ukládání do mezipaměti

V sadě MIP SDK se vytvoří modul pro každého uživatele, který provádí jakoukoli ověřenou operaci. Moduly poskytují rozhraní pro všechny operace prováděné jménem ověřené identity. Jak je popsáno v profilech a modulech konceptů, FileEngine, PolicyEngine nebo ProtectionEngine, každý má dva stavy CREATED a LOADED. Aby mohl provádět operace sady SDK, musí být modul vytvořen a načten. Pokud se modul nepoužívá, sada SDK uloží modul do mezipaměti a zachová ho v CREATED co nejdéle v závislosti na dostupných prostředcích. Každá třída profilu příslušné sady SDK také poskytuje metoduUnloadEngineAsync, jak toho dosáhnout explicitně.

Každý modul má jedinečný identifikátor id , který se používá ve všech operacích správy modulu. Klientská aplikace může explicitně poskytnout ID nebo ji může vygenerovat sada SDK, pokud ji aplikace neposkytuje. Pokud je k dispozici jedinečný identifikátor pomocí objektů nastavení modulu při vytváření modulu a ukládání do mezipaměti je povolené v profilu rozhraní API, jak je popsáno výše, lze stejné moduly použít pokaždé, když uživatel provede operaci se sadou SDK. Postupujte podle fragmentů kódu pro vytvoření znaku [mip::FileEngine](./concept-profile-engine-file-engine-cpp.md#create-file-engine-settings), [mip::PolicyEngine](./concept-profile-engine-policy-engine-cpp.md#implementation-create-policy-engine-settings).

Pokud se nepodaří zadat existující id modulu, dojde k dodatečným cestě služby zaokrouhlení na načtení zásad a načtení licencí, které už byly pro stávající modul uloženy v mezipaměti. Ukládání do mezipaměti ID modulu umožňuje sadě SDK offline přístup k dříve dešifrovaným informacím a obecným vylepšením výkonu.

Další kroky

Dále si přečtěte další informace o konceptech objektů profilu a stroje, abyste pochopili, jak správně nastavit ID modulu MIP tak, aby správně využívala ukládání MIP SDK do mezipaměti.