Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De MIP SDK implementeert een SQLite3-database voor het onderhouden van SDK-cacheopslag. Vóór versie 1.3 van de Microsoft Information Protection SDK werden slechts twee typen cachestatusopslag ondersteund: op schijf en in het geheugen. Beide typen hebben bepaalde gegevens, met name licenties voor beveiligde inhoud en beleidsinformatie, opgeslagen in tekst zonder opmaak.
Ter verbetering van de beveiligingspostuur van de SDK hebben we ondersteuning toegevoegd voor een tweede type on-diskcache die platformspecifieke cryptografische API's gebruikt om de database en de inhoud ervan te beveiligen.
De toepassing definieert het cachetype bij het laden van het profiel als onderdeel van de FileProfileSettings, PolicyProfileSettingsof ProtectionProfileSettings objecten. Het cachetype is statisch voor de levensduur van het profiel. Als u over een ander type cacheopslagtype gaat, moet u het bestaande profiel vernietigen en een nieuw profiel maken.
Cacheopslagtypen
Vanaf MIP SDK-release 1.3 zijn de volgende typen opslagcache beschikbaar.
| Type | Doel |
|---|---|
| InMemory | Onderhoudt de opslagcache in het geheugen in de toepassing. |
| OnDisk | Slaat de database op schijf op in de map die is opgegeven in het instellingenobject. De database wordt opgeslagen in tekst zonder opmaak. |
| OnDiskEncrypted | Slaat de database op schijf op in de map die is opgegeven in het instellingenobject. De database wordt versleuteld met behulp van OS-specifieke API's. |
Elke engine die door de toepassing wordt gegenereerd, genereert een nieuwe versleutelingssleutel.
U stelt cacheopslag in een van de profielinstellingenobjecten in via de mip::CacheStorageType enum.
FileProfile::Settings profileSettings(mMipContext,
mip::CacheStorageType::OnDiskEncrypted, // Define the storage type to use.
mAuthDelegate,
std::make_shared<sample::consent::ConsentDelegateImpl>(),
std::make_shared<FileProfileObserver>());
Wanneer elk type te gebruiken
Cacheopslag is belangrijk voor het onderhouden van offlinetoegang tot eerder ontsleutelde informatie en het garanderen van prestaties voor ontsleutelingsbewerkingen wanneer gegevens eerder werden gebruikt.
- In Geheugenopslag: Gebruik dit opslagtype voor langdurige processen waarbij het niet nodig is om de beleids- of licentiecachegegevens te behouden tijdens het opnieuw opstarten van de service.
- Op schijf: gebruik dit opslagtype voor toepassingen waarbij processen vaak stoppen en starten, maar het beleid, de licentie en de servicedetectiecache moeten behouden tijdens het opnieuw opstarten. Dit type opslagcache is tekst zonder opmaak, dus is beter geschikt voor serverworkloads waar gebruikers geen toegang hebben tot de statusopslag. Voorbeelden hiervan zijn een Windows-service of Linux-daemon die wordt uitgevoerd op een server of een SaaS-toepassing waarbij alleen servicebeheerders toegang hebben tot de statusgegevens.
- Op schijf en versleuteld: gebruik dit opslagtype voor toepassingen waarbij processen mogelijk vaak stoppen en starten, maar het beleid, de licentie en de servicedetectiecache moeten behouden tijdens het opnieuw opstarten. Deze opslagcache is versleuteld, dus is beter geschikt voor werkstationtoepassingen waar een gebruiker de statusdatabase kan doorzoeken en detecteren. De versleuteling helpt ervoor te zorgen dat nieuwsgierige gebruikers geen toegang hebben tot de beleidsinhoud of de inhoud van de beveiligingslicentie als platte tekst. In alle gevallen worden de gegevens versleuteld met sleutels waartoe de gebruiker toegang heeft. Een ervaren aanvaller kan de cache met minimale inspanning ontsleutelen, maar dit voorkomt manipulatie en browsen.
Ondersteunde platforms voor versleuteling
| Platform | Versie | Opmerkingen |
|---|---|---|
| Microsoft Windows | Windows 11, ondersteuningsversie van Windows Server | |
| macOS | High Sierra en later | |
| Ubuntu Linux | 22.04 en hoger | Vereist SecretService en LinuxEncryptedCache functievlag. |
| Android | Android 7.0 of hoger | |
| iOS | Alle ondersteunde versies |
Hoewel de MIP SDK ondersteuning biedt voor andere Linux-distributies, hebben we de cacheversleuteling niet getest op RedHat Enterprise Linux, CentOS of Debian.
Notitie
U stelt de functievlag in om cacheopslag op Linux in te schakelen met mip::MipConfiguration::SetFeatureSettings()
Cache-opslagdatabasetabellen
De MIP SDK onderhoudt twee databases voor cache. Een daarvan is voor de beveiligings-SDK's en het onderhouden van beveiligingsstatusdetails. De andere is voor de beleids-SDK's en het onderhouden van beleidsdetails en servicegegevens. Beide worden opgeslagen in het pad dat is gedefinieerd in het instellingenobject, onder mip\mip.policies.sqlite3 en mip\mip.protection.sqlite3.
Notitie
De MIP SDK garandeert geen compatibiliteit in verschillende versies van de cache. Wis alle bestanden in de map mip\ of in een andere map die afwijkt van de standaardinstelling, voordat u de toepassing bijwerkt naar een nieuwe versie van de MIP SDK.
Beveiligingsdatabase
| Tabel | Doel | Versleuteld |
|---|---|---|
| AuthInfoStore | Slaat details van verificatievraag op. | Nee |
| ConsentStore | Slaat toestemmingsresultaten op voor elke engine. | Nee |
| DnsInfoStore | Slaat DNS-opzoekresultaten op voor beveiligingsbewerkingen | Nee |
| EngineStore | Slaat enginegegevens, gekoppelde gebruikers en aangepaste clientgegevens op | Nee |
| KeyStore | Slaat symmetrische versleutelingssleutels voor elke engine op. | Ja |
| LicenseStore | Gebruikslicentiegegevens worden gebruikt voor eerder ontsleutelde gegevens. | Ja |
| SdInfoStore | Slaat de resultaten van servicedetectie op. | Nee |
Notitie
Voor de LicenseStore-cache moet een identiteit worden ingesteld op de beveiligingsengine of bestandsengine.
Beleidsdatabase
| Tabel | Doel | Versleuteld |
|---|---|---|
| KeyStore | Slaat symmetrische versleutelingssleutels voor elke engine op. | Ja |
| Beleid | Slaat labelbeleidsgegevens op voor elke gebruiker. | Ja |
| BeleidUrl | Slaat de URL van de back-endbeleidsservice op voor specifieke gebruiker. | Nee |
| Gevoeligheid | Slaat classificatieregels op voor een specifiek gebruikersbeleid. | Ja |
| Gevoeligheids-URLs | Slaat de URL van de dienst voor het backend-gevoeligheidsbeleid op voor een specifieke gebruiker. | Nee |
Overwegingen voor databasegrootte
De databasegrootte is afhankelijk van twee factoren: het aantal engines dat wordt toegevoegd aan de cache en de hoeveelheid beveiligingslicenties die in de cache zijn opgeslagen. Vanaf MIP SDK 1.18 kunt u DeleteStoredData() op ProtectionEngine gebruiken om programmatisch in de cache opgeslagen enginegegevens te verwijderen. Voor eerdere versies kan een extern proces nodig zijn om de cache te verwijderen als deze groter wordt dan gewenst is.
De belangrijkste bijdrager aan databasegroei is de cache voor beveiligingslicenties. Als het cachen van licenties niet nodig is, hetzij omdat extra heen-en-weeraanroepen naar de service geen nadelige invloed hebben op de prestaties van uw toepassing, hetzij omdat de cache te groot zou kunnen worden, kunt u de licentiecache uitschakelen. Hiervoor stelt u CanCacheLicenses op het object FileProfile::Settings in op false.
FileProfile::Settings profileSettings(mMipContext,
mip::CacheStorageType::OnDiskEncrypted,
mAuthDelegate,
std::make_shared<sample::consent::ConsentDelegateImpl>(),
std::make_shared<FileProfileObserver>());
profileSettings.SetCanCacheLicenses(false);
Cache-engines
In de MIP SDK wordt een engine gemaakt voor elke gebruiker die een geverifieerde bewerking uitvoert. Engines bieden een interface voor alle bewerkingen die worden uitgevoerd namens een geverifieerde identiteit. Zoals besproken in de concepten Profielen en Engines, hebben FileEngine, PolicyEngine of ProtectionEngine elk twee toestanden CREATED en LOADED. Er moet een engine worden gemaakt en geladen om SDK-bewerkingen uit te kunnen voeren. Als een engine niet in gebruik is, zet de SDK de engine in de cache en behoudt deze in CREATED zo lang mogelijk, afhankelijk van de beschikbare middelen. De profielklasse van elke respectieve SDK biedt ook een methode UnloadEngineAsync om dit expliciet te bereiken.
Elke engine heeft een unieke id id die wordt gebruikt in alle enginebeheerbewerkingen. De clienttoepassing kan expliciet een id opgeven of de SDK kan er een genereren als deze niet wordt geleverd door de toepassing. Als er een unieke id wordt opgegeven met behulp van engine-instellingenobjecten op het moment van het maken van de engine en caching is ingeschakeld in het API-profiel, zoals hierboven beschreven, kunnen dezelfde engines worden gebruikt telkens wanneer de gebruiker een bewerking uitvoert met de SDK. Volg de codefragmenten voor het maken van een [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).
Als u geen bestaande engineId opgeeft, leidt dat tot extra aanvragen aan de service om het beleid op te halen en worden licenties opgehaald die voor de bestaande engine mogelijk al in de cache staan. Door de engine-id in de cache op te cachen, heeft de SDK offline toegang tot eerder ontsleutelde informatie en algemene prestatieverbeteringen.
Volgende stappen
Hierna vindt u meer informatie over de concepten van profiel- en engineobjecten om te begrijpen hoe u MIP-engine-id's op de juiste manier instelt om de MIP SDK-caching correct te gebruiken.