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.
Windows Recall evalueert JSON-metagegevens, die via UserActivity.ContentInfo worden geleverd, om te bepalen of een venster moet worden vastgelegd en hoe momentopnamen worden geclassificeerd onder het Enterprise Data Loss Prevention (DLP)-beleid. Door vertrouwelijkheidslabels (indien bekend) op te geven, Recall kunt u een query uitvoeren op de DLP-provider voor afdwingingsbeslissingen (bijvoorbeeld blokopname) en de juiste metagegevens voor gebruikers weergeven.
Wanneer metagegevens verzenden
Een wanneer verzenden of bijwerken UserActivity :
- Het actieve document of item wordt gewijzigd
- Een vertrouwelijkheidslabel wordt toegevoegd, verwijderd of gewijzigd
- Statusovergangen van onbepaald naar bekend
- Uw app wordt gestart (om een basislijn tot stand te brengen)
Gevoeligheidsmodel
Uw app kan inhoud rapporteren in een van de volgende drie statussen:
-
Gevoelig: Het object opnemen met een
informationProtectionreekslabels -
Niet-gevoelig: laat het
informationProtectionobject volledig weg -
Niet bepaald: Inbegrepen
informationProtection.state = "undetermined"(Recall blokken vastleggen totdat de toestand is opgelost)
Het ontbreken van het informationProtection object betekent dat de inhoud niet gevoelig is.
JSON-structuur
Aanbevolen velden op het hoogste niveau:
-
@context:https://schema.org -
@type: bijvoorbeeld 'DocumentObject', 'Gebeurtenis', 'Artikel' -
identifier: Stabiele unieke id
Informatiebescherming-object (alleen voor gevoelig of onbepaald) patroon (illustratief, niet letterlijke JSON):
"informationProtection": {
"@type": "SensitivityLabel",
"state": "<state>", // "sensitive" or "undetermined"
"labels": [ // include only when state == "sensitive"
{
"labelID": "<label GUID>",
"organizationID": "<tenant GUID>"
}
]
}
Reglement:
- Vervangen
<state>doorsensitiveofundetermined. - Neem de matrix alleen op wanneer de
labelsstatus issensitive. -
@typebinnen het object is altijdSensitivityLabel. - Meerdere labels toegestaan; Recall past het meest beperkende label toe dat door de DLP-provider wordt geretourneerd.
Minimale voorbeelden
Gevoelig (enkel):
{
"@context": "https://schema.org",
"@type": "DocumentObject",
"identifier": "doc-123",
"informationProtection": {
"@type": "SensitivityLabel",
"state": "sensitive",
"labels": [
{
"labelID": "F96E0B19-8C3A-4D5A-8B9A-2E8CFC43247B",
"organizationID": "D3FE4C20-9C77-45AB-A8E7-9870D3C9C856"
}
]
}
}
Niet-gevoelig
{
"@context": "https://schema.org",
"@type": "DocumentObject",
"identifier": "doc-123"
}
Onbepaald
{
"@context": "https://schema.org",
"@type": "DocumentObject",
"identifier": "doc-123",
"informationProtection": {
"@type": "SensitivityLabel",
"state": "undetermined"
}
}
Voorbeeld van meerdere labels
"informationProtection": {
"@type": "SensitivityLabel",
"state": "sensitive",
"labels": [
{
"labelID": "F96E0B19-8C3A-4D5A-8B9A-2E8CFC43247B",
"organizationID": "D3FE4C20-9C77-45AB-A8E7-9870D3C9C856"
},
{
"labelID": "9A724CF8-E7D2-4B1C-8F4A-1D2E7B3A6C8D",
"organizationID": "7C56AB24-9E32-44FA-B7D8-1E9F43C7A92B"
}
]
}
API-gebruik (C#)
Helpermethode
De volgende helpermethode laat zien hoe u ContentInfo kunt bijwerken met gevoeligheidslabels.
private async Task UpdateContentInfoAsync(
string contentId,
string state, // "sensitive" | "undetermined" | "none"
IEnumerable<(string LabelId, string OrgId)>? labels = null)
{
var channel = UserActivityChannel.GetDefault();
var activity = await channel.GetOrCreateUserActivityAsync(contentId);
activity.ActivationUri = new Uri($"my-app://content/{contentId}");
string json;
if (state == "sensitive" && labels != null)
{
var labelItems = string.Join(",",
labels.Select(l => $@"{{ \"labelID\": \"{l.LabelId}\", \"organizationID\": \"{l.OrgId}\" }}"));
json = $@"{{
\"@context\": \"https://schema.org\",
\"@type\": \"DocumentObject\",
\"identifier\": \"{contentId}\",
\"informationProtection\": {{
\"@type\": \"SensitivityLabel\",
\"state\": \"sensitive\",
\"labels\": [ {labelItems} ]
}}
}}";
}
else if (state == "undetermined")
{
json = $@"{{
\"@context\": \"https://schema.org\",
\"@type\": \"DocumentObject\",
\"identifier\": \"{contentId}\",
\"informationProtection\": {{
\"@type\": \"SensitivityLabel\",
\"state\": \"undetermined\"
}}
}}";
}
else
{
json = $@"{{
\"@context\": \"https://schema.org\",
\"@type\": \"DocumentObject\",
\"identifier\": \"{contentId}\"
}}";
}
activity.ContentInfo = UserActivityContentInfo.FromJson(json);
await activity.SaveAsync();
}
Trekhendel
De volgende pull handler laat zien hoe u kunt reageren op aanvragen op afroep UserActivity.
private async void UserActivityRequested(
UserActivityRequestManager sender,
UserActivityRequestedEventArgs args)
{
var deferral = args.GetDeferral();
try
{
string id = GetCurrentContentId();
var (state, labels) = GetCurrentSensitivity(); // app logic
var channel = UserActivityChannel.GetDefault();
var activity = await channel.GetOrCreateUserActivityAsync(id);
activity.ActivationUri = new Uri($"my-app://content/{id}");
string json = BuildContentInfoJson(id, state, labels);
activity.ContentInfo = UserActivityContentInfo.FromJson(json);
args.Request.SetUserActivity(activity);
}
finally
{
deferral.Complete();
}
}
Push versus pull
Een hybride benadering aannemen:
- Initiƫle pull stelt de basislijn vast
- Updates direct pushen bij wijzigingen
Voordelen: lage latentie, vermijd verouderde labels, vermindert polling overhead, ondersteunt snelle opname op aanvraag.
Verwante koppelingen
Windows developer