Recall DLP Provider API

Recall (előzetes verzió) lehetővé teszi a felhasználók számára, hogy természetes nyelv használatával helyileg mentett és elemezett pillanatképeket keressenek a képernyőjükön. Recall integrálható adatveszteség-megelőzési (DLP) szolgáltatókkal, hogy megakadályozza a bizalmas tartalmak tárolását a szervezeti szabályzatok alapján. Ez a cikk azt a nyilvános API-t ismerteti, amely bármely RecallDLP eszközzel használható.

Rendszerarchitektúra

Az alábbi ábra bemutatja, hogyan kommunikál a Windows Recall a DLP szolgáltatóval:

┌─────────────────────────────────────────────────────────────┐
│ Windows Recall                                              │
│ - Captures screenshots and app content                      │
│ - Queries DLP provider before capturing                     │
└─────────────────────┬───────────────────────────────────────┘
                      │ Query: Should we capture this window?
                      │ Context: Process, Window, File, Labels
                      ▼
┌─────────────────────────────────────────────────────────────┐
│ AIContext.exe Process                                       │
│                                                             │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Your DLP Provider DLL (loaded in-process)               │ │
│ │ - Evaluates organizational policies                     │ │
│ │ - Returns capture restrictions                          │ │
│ │ - Provides sensitivity label information                │ │
│ └─────────────────────────────────────────────────────────┘ │
└─────────────────────┬───────────────────────────────────────┘
                      │ Response: Allow/Block/Warn/Audit
                      │ Labels: Sensitivity information
                      ▼
┌─────────────────────────────────────────────────────────────┐
│ Windows Recall                                              │
│ - Enforces returned restrictions                            │
│ - Displays sensitivity labels to user                       │
│ - Logs audit events as required                             │
└─────────────────────────────────────────────────────────────┘

Nyilvános API

Alapvető struktúrák

RestrictionEnforcement Enumeration

Egy adott korlátozás kényszerítési szintjét határozza meg.

enum RestrictionEnforcement
{
    RestrictionEnforcement_Allow = 0,
    RestrictionEnforcement_AuditAndAllow = 1,
    RestrictionEnforcement_Warn = 2,
    RestrictionEnforcement_Block = 3,
};

Értékrend:

  • RestrictionEnforcement_Allow (0): A művelet korlátozás nélkül engedélyezett.
  • RestrictionEnforcement_AuditAndAllow (1): A művelet engedélyezett, de naplózás céljából naplózni kell.
  • RestrictionEnforcement_Warn (2): A művelet figyelmeztetést kér a felhasználótól a folytatás előtt.
  • RestrictionEnforcement_Block (3): A művelet teljes mértékben le van tiltva.

Korlátozások struktúrája

Meghatározza a különböző műveletek kényszerítési szintjét.

struct Restrictions
{
    RestrictionEnforcement CopyToClipboard;
    RestrictionEnforcement CaptureInRecall;
};

Tagok:

  • CopyToClipboard: A tartalom vágólapra másolásának kényszerítési szintje.
  • CaptureInRecall: A pillanatképekben lévő Recall tartalom rögzítésének kényszerítési szintje.

SensitivityLabelDescription Structure

Információt nyújt a felhasználó számára megjelenítendő bizalmassági címkéről.

struct SensitivityLabelDescription
{
    LPCWSTR Name;
    LPCWSTR Color;
    LPCWSTR TooltipText;
    uint32_t Sensitivity;
};

Tagok:

  • Név: A bizalmassági címke megjelenítendő neve (például "Bizalmas").
  • Szín: Hexa színkód vizuális ábrázoláshoz (például "#FF0000").
  • Elemleírásszöveg: Leíró szöveg jelenik meg, amikor a felhasználó rámutat a címkére.
  • Érzékenység: Numerikus érzékenységi szint (a magasabb értékek nagyobb érzékenységet jeleznek).

EnterpriseContextQuery-struktúra

Információkat tartalmaz a rögzítési kérelemről és a szolgáltató válaszáról DLP .

struct EnterpriseContextQuery
{
    uint32_t ProcessId;
    uint64_t WindowHandle;
    LPCWSTR FileName;
    LPCWSTR SensitivityLabelId;
    LPCWSTR OrganizationId;
    SensitivityLabelDescription SensitivityLabelDescription;
    Restrictions Restrictions;
};

Tagok:

  • ProcessId: A rögzíteni kívánt alkalmazás folyamatazonosítója.
  • WindowHandle: A rögzített ablak kezelése.
  • FileName: Az alkalmazásban megnyitott fájl teljes elérési útja (ha van).
  • SensitivityLabelId: Bármely meglévő bizalmassági címke azonosítója.
  • OrganizationId: Szervezeti azonosító az aktuális felhasználói környezetből.
  • SensitivityLabelDescription: A megjelenítendő bizalmassági címke információi (szolgáltató által kitöltve).
  • Korlátozások: A kikényszerítendő (szolgáltató által kitöltött) korlátozások rögzítése.

Megjegyzés:

Az alkalmazások az API-val UserActivity.ContentInfo bizalmassági címkeadatokat adhatnak meg. Az alkalmazások formázásával és megadásával kapcsolatos részletekért lásd: Bizalmassági címkék megadása a Recall UserActivity ContentInfo-hoz.

Szükséges DLL-exportálások

A DLP szolgáltató DLL-jének exportálnia kell ezeket a függvényeket az alábbi pontos névvel:

EnterpriseContextProvider_QueryEnterpriseContext

Recall meghívja ezt a függvényt a rögzítési kérések kiértékeléséhez.

HRESULT STDMETHODCALLTYPE EnterpriseContextProvider_QueryEnterpriseContext(
    _In_ ULONG totalQuerySizeBytes,
    _Inout_updates_all_(totalQuerySizeBytes / sizeof(EnterpriseContextQuery)) EnterpriseContextQuery* queryBuffer);

Paraméterek:

  • totalQuerySizeBytes: A lekérdezési puffer teljes mérete bájtban.
  • queryBuffer: Mutató egy struktúratömbre EnterpriseContextQuery . A szolgáltatónak a szervezeti szabályzatok alapján frissítenie kell a mezőket és Restrictions a SensitivityLabelDescription mezőket.

Visszatérési érték:

  • Sikert ad S_OK vissza, vagy a hiba megfelelő HRESULT hibakódját adja vissza.

Megjegyzések:

A Windows egyszerre több lekérdezést is küldhet a hatékonyság érdekében. A megvalósításnak a pufferben lévő összes lekérdezést fel kell dolgoznia, és a visszatérés előtt frissítenie kell a megfelelő mezőket.

EnterpriseContextProvider_FlushEnterpriseContext

Recall rendszeres időközönként meghívja ezt a függvényt, hogy a szolgáltató szabadíthassa fel a gyorsítótárazott sztringeket vagy erőforrásokat.

VOID STDMETHODCALLTYPE EnterpriseContextProvider_FlushEnterpriseContext();

Megjegyzések:

Recall meghívja ezt a függvényt, miután megvizsgálta vagy átmásolja az adatokat egy korábbi lekérdezési válaszból. Ezzel a függvénnyel felszabadíthatja az erőforrásokat, kiürítheti a gyorsítótárakat, vagy karbantartási műveleteket hajthat végre.

Szolgáltató regisztrációja

Beállításjegyzék beállítása (szolgáltató)

A DLP szolgáltató telepítése létrehoz egy beállításjegyzék-bejegyzést, amely tartalmazza a DLL elérési útját:

HKEY_LOCAL_MACHINE\SOFTWARE\YourCompany\DLP
    InstallPath    REG_SZ    C:\Program Files\YourCompany\DLP

Biztonsági szempontok:

A beállításkulcs megkeményítése a jogosulatlan módosítás megakadályozása érdekében. Állítsa be a megfelelő ACL-eket, hogy csak a rendszergazdák írási hozzáférését korlátozza.

Csoportházirend konfigurálása (rendszergazda)

A rendszergazdák az adatveszteség-megelőzési szolgáltató csoportházirendjének használatával konfigurálják a szolgáltatót:

  • Házirend neve: SetDataLossPreventionProvider
  • Házirend helye: Számítógép konfigurációjának > felügyeleti sablonjai > Windows-összetevők > Windows AI
  • Szabályzatérték formátuma: key:<REGISTRY_PATH>; value:<VALUE_NAME>; binary:<DLL_NAME>

Fontos: A value mező a beállításjegyzék-érték nevére hivatkozik a megadott beállításkulcs keyalatt.

Példakonfiguráció:

Ha egy beállításjegyzék-bejegyzést a következő használatával gyűr le:

reg add HKLM\Software\YourCompany\DLP -v InstallPath -t REG_SZ -d "C:\Program Files\YourCompany\DLP"

A DLL neve YourCompanyDLP.dllpedig a következő:

key:HKLM\software\YourCompany\DLP; value:InstallPath; binary:YourCompanyDLP.dll

Nem kötelező verzióellenőrzés:

Megadhat egy minimálisan szükséges verziót a DLP szolgáltató számára:

key:HKLM\software\YourCompany\DLP; value:InstallPath; binary:YourCompanyDLP.dll; minversion:1.2.0.0

Ha megad egy minversionfájlt, csak akkor tölti be a bináris fájlt, Recall ha annak verziója egyenlő vagy nagyobb, mint a megadott verzió.

Lekérdezésfeldolgozási folyamat

Tipikus interakciós sorrend

  1. Windows Recall előkészíti a tartalom rögzítését egy alkalmazásablakból.

  2. Recall olyan lekérdezéseket hoz létre , amelyek a következőket tartalmazzák:

    • A célalkalmazás folyamatazonosítója és ablakleírója
    • Fájl elérési útja (ha az alkalmazás rendelkezik megnyitott dokumentumokkal)
    • Bármilyen meglévő bizalmassági címke információja
    • Szervezeti azonosító az aktuális felhasználói környezetből
  3. A DLP A Szolgáltató az egyes lekérdezéseket a szervezeti szabályzatok alapján értékeli ki :

    • Ellenőrizze, hogy az alkalmazást rögzíteni kell-e
    • Fájlszintű korlátozások ellenőrzése
    • Bizalmassági címkék kiértékelése
    • Felhasználó-/csoportspecifikus szabályzatok alkalmazása
  4. A szolgáltató a frissített lekérdezési struktúrákat a következőkkel adja vissza :

    • Restrictions.CaptureInRecall: A rögzítés engedélyezése, figyelmeztetése, naplózása vagy blokkolása
    • SensitivityLabelDescription: Címkenév, szín és elemleírás a megjelenítéshez
    • Minden egyéb vonatkozó korlátozási információ
  5. A Windows Recall kikényszeríti a visszaadott korlátozásokat:

    • Engedélyezés: A rögzítések általában
    • AuditAndAllow: Rögzíti és naplózza a műveletet
    • Figyelmeztetés: A rögzítés előtt kéri a felhasználót
    • Blokk: Megakadályozza a teljes rögzítést

1. példa lekérdezési forgatókönyv: "Bizalmas" címkével ellátott Word-dokumentum

Bemenet:

  • Folyamat: winword.exe
  • Fájl: SecretProject.docx
  • Címke: Confidential

Az Ön feldolgozása:

Ellenőrizze a dokumentumbesorolási szabályzatot a szervezeti szabályokon.

kimenet:

  • CaptureInRecall: RestrictionEnforcement_Block
  • SensitivityLabelDescription.Name: "Bizalmas – Ne rögzítse"

2. példa lekérdezési forgatókönyv: Webböngésző nyilvános webhelyen

Bemenet:

  • Folyamat: msedge.exe
  • Ablak: news.example.com

Az Ön feldolgozása:

Ellenőrizze a tartományt a jóváhagyott listán.

kimenet:

  • CaptureInRecall: RestrictionEnforcement_Allow

3. példa lekérdezési forgatókönyv: Pénzügyi alkalmazás

Bemenet:

  • Folyamat: FinanceApp.exe
  • Felhasználó: finance_user

Az Ön feldolgozása:

Ellenőrizze a felhasználói csoport és az alkalmazás érzékenységét.

kimenet:

  • CaptureInRecall: RestrictionEnforcement_AuditAndAllow
  • SensitivityLabelDescription.Name: "Pénzügyi adatok – Auditált"

Végrehajtási irányelvek

Teljesítménnyel kapcsolatos szempontok

  • Kötegelt feldolgozás: A Windows egyszerre több lekérdezést is küldhet a hatékonyabb működés érdekében. Optimalizálja a kódot a kötegelt feldolgozás kezeléséhez.
  • Gyorsítótárazás: Szükség esetén gyorsítótárazhatja a szabályzattal kapcsolatos döntéseket a válaszidő javítása érdekében. A függvény használatával kezelheti a FlushEnterpriseContext gyorsítótár életciklusát.
  • Aszinkron műveletek: Kerülje a lekérdezési függvény műveleteinek blokkolását. Térjen vissza gyorsan, hogy ne legyen hatással a felhasználói élményre.

Hibakezelés

  • Adja vissza a megfelelő HRESULT kódokat a különböző hibafeltételekhez.
  • A függvény használatával FlushEnterpriseContext megtisztíthatja az erőforrásokat.
  • Kezelje azokat az eseteket, amikor a szabályzatadatok átmenetileg nem érhetők el (alapértelmezés szerint a biztonságos működéshez).

Biztonsági követelmények

  • In-Process végrehajtás: A DLL folyamatban fut a AIContext.exe folyamaton belül emelt szintű jogosultságokkal.
  • Biztonságos kódolási eljárások: Kövesse a memóriakezelés biztonságos kódolási eljárásait. Ellenőrizze az összes bemeneti paramétert.
  • Digitális aláírás: A DLL-nek hitelesítendőnek kell lennie az üzembe helyezéshez. Az aláíratlan bináris fájlok nincsenek betöltve.
  • Beállításjegyzék-védelem: A csoportházirendben megadott beállításkulcs megkeményítése a jogosulatlan módosítások megakadályozása érdekében.

Betöltési folyamat

Recall használatával LoadLibraryEx betölti a DLL-t a beállításjegyzékben megadott elérési útról, majd meghívja GetProcAddress a szükséges exportált függvények címeinek lekérését. A hívás QueryEnterpriseContextRecall után megvizsgálja és átmásolja az adatokat a válaszból, majd meghívjaFlushEnterpriseContext, hogy a szolgáltató szabadíthassa fel a lefoglalt erőforrásokat.

Első lépések

A szolgáltató létrehozásához és üzembe helyezéséhez kövesse az DLP alábbi lépéseket:

  1. A DLL fejlesztése a szükséges exportálások implementálásával:

    • EnterpriseContextProvider_QueryEnterpriseContext
    • EnterpriseContextProvider_FlushEnterpriseContext
  2. Tesztelje az implementációt mintalekérdezésekkel a különböző forgatókönyvek megfelelő viselkedésének biztosítása érdekében.

  3. Írja alá a bináris fájlt authenticode tanúsítvánnyal.

  4. Olyan telepítési folyamat létrehozása , amely:

    • A DLL telepítése biztonságos helyre
    • A beállításjegyzék-bejegyzés beállítása a megfelelő ACL-ekkel
    • Konfigurációs eszközöket biztosít rendszergazdáknak
  5. Adjon meg csoportházirend-utasításokat a rendszergazdáknak a SetDataLossPreventionProvider szabályzat konfigurálásához.

  6. Üzembe helyezés és konfigurálás vállalati környezetben.