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

MIP SDK implementuje databázi SQLite3 pro správu úložiště mezipaměti 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 aplikace.
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ý engine 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 zvědaví uživatelé neměli přístup k obsahu zásad ochrany nebo obsahu licenční 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ý oponent dokáže dešifrovat mezipaměť s minimálním úsilím, ale stále to brání manipulaci a procházení.

Podporované platformy pro šifrování

Platforma Verze Poznámky
Microsoft Windows Windows 11, verze podpory Windows Serveru
macOS High Sierra a novější
Ubuntu Linux 22.04 a novější Vyžaduje příznak funkce SecretService a LinuxEncryptedCache.
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()

Databázové tabulky pro ukládání do mezipaměti

Sada MIP SDK udržuje dvě databáze pro mezipaměť. Jedním z nich je SDK pro ochranu a správu podrobností o stavu ochrany. Druhá část se týká SDK pro zásady a zahrnuje údržbu podrobností o zásadách a informacích o službě. Obě jsou uloženy v cestě definované v objektu nastavení v části mip\mip.policies.sqlite3 a mip\mip.protection.sqlite3.

Poznámka:

Sada MIP SDK nezaručuje kompatibilitu mezi různými verzemi mezipaměti. Před upgradem aplikace na novou verzi sady MIP SDK doporučujeme vymazat všechny soubory v adresáři mip\ nebo jakýkoli alternativní adresář, který se změnil z výchozího nastavení.

Databáze ochrany

Tabulka Účel Šifrované
AuthInfoStore Ukládá podrobnosti ověřovací výzvy. Ne
Úložiště souhlasů Ukládá výsledky udělení souhlasu pro každý stroj. Ne
DnsInfoStore Ukládá výsledky vyhledávání DNS pro operace ochrany. Ne
EngineStore Ukládá podrobnosti modulu, přidruženého uživatele a vlastní data klienta. Ne
Úložiště klíčů Ukládá symetrické šifrovací klíče pro každý modul. Ano
licenční obchod Obchody používají informace o licenci k dříve dešifrovaným datům. Ano
SdInfoStore Ukládá výsledky zjišťování služeb. Ne

Poznámka:

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

Databáze zásad

Tabulka Účel Šifrované
Úložiště klíčů 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. Ne
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. Ne

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. Počínaje MIP SDK 1.18 může být DeleteStoredData() a ProtectionEngine použito k programovému odebrání dat enginu uložených v mezipaměti. U starších verzí může být externí proces nutný k odebrání mezipaměti, pokud roste větší, než je žádoucí.

Nejvýznamnějším přispěvatelem růstu databáze bude mezipaměť licencí ochrany. Pokud není nutné ukládání do mezipaměti licencí, buď proto, že doby odezvy služby neovlivní výkon vaší aplikace, nebo mezipaměť může přerůst do příliš velké velikosti, lze mezipaměť licencí zakázat. 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 pro 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. Enginy poskytují rozhraní pro všechny operace prováděné jménem ověřené identity. Jak je popsáno v Profilech a Enginech konceptů, každý z FileEngine, PolicyEngine nebo ProtectionEngine 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í engineId, dojde k dodatečným cestám služby k načtení zásad a k načtení licencí, které už mohly být pro stávající engine uloženy v mezipaměti. Ukládání ID modulu do mezipaměti 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.