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
, PolicyProfileSettings
nebo 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.
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
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 |
Úložiště klíčů | 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é |
---|---|---|
Ú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. | 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 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. 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í 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.