> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Sicherheitsereignisprotokoll aus dem Processing Monitor

> Laden Sie das Sicherheitsereignisprotokoll zu Berechtigungsänderungen im ABBYY FlexiCapture Processing Monitor mit einem Skript per GetSecurityEventsCSV-POST-Anfrage als CSV herunter.

Dieses Protokoll erfasst Ereignisse im Zusammenhang mit dem Hinzufügen, Löschen und sonstigen Ändern von Benutzerberechtigungen. Die Protokollierung von Sicherheitsereignissen ist standardmäßig deaktiviert und kann nur vom System Administrator direkt in einer FlexiCapture-Datenbank aktiviert werden. Weitere Informationen finden Sie unter [Sicherheitsereignisprotokoll](/de/flexi-capture/web-stations/monitoring-console/mmc-security-event-log).

<Warning>
  Nur Benutzer mit der Rolle Mandantenadministrator (oder der System Administrator beim Standardmandanten) können Sicherheitsereignisprotokolle aus dem Processing Monitor herunterladen.
</Warning>

Verwenden Sie zum Herunterladen dieses Protokolls eine POST-Anfrage:

```http theme={null}
POST https://<server address>/FlexiCapture12/Monitoring/Project/GetSecurityEventsCSV
```

<div id="request-parameters">
  ## Anfrageparameter
</div>

Alle Parameter sind erforderlich. Stellen Sie sicher, dass sie korrekt angegeben sind.

<Info>
  Bei der Suche in Oracle Database wird zwischen Groß- und Kleinschreibung unterschieden. Beachten Sie dies, wenn Sie Oracle Database verwenden.
</Info>

| Parameter         | Typ    | Beschreibung                                                                                                                                                                                                                                                             |
| ----------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `filter`          | string | Filterbedingungen für das Protokoll. Kombinieren Sie Bedingungen ausschließlich mit den Operatoren `AND` und `OR`, die im Parameter `GeneralOperator` festgelegt sind. Weitere Informationen finden Sie unter [Build the filter parameter](#build-the-filter-parameter). |
| `columnsOrder`    | string | Kommagetrennte Liste der Spalten, die in den Bericht aufgenommen werden: `ID`, `Date`, `EventType`, `Details`, `RemoteHost`, `Principal`, `TenantName`, `Writer`, `WriterTenantName`.                                                                                    |
| `sortColumnindex` | int    | Index der Spalte, die zum Sortieren der Datensätze im Protokoll verwendet wird.                                                                                                                                                                                          |
| `sortOrder`       | bool   | Sortierreihenfolge: `true` sortiert in absteigender Reihenfolge, `false` sortiert in aufsteigender Reihenfolge.                                                                                                                                                          |

<div id="build-the-filter-parameter">
  ### Filterparameter erstellen
</div>

Der Parameter `filter` erwartet ein JSON-Objekt. Zum Beispiel:

```json theme={null}
{
  "GeneralOperator": "AND",
  "FilterItems": [
    {
      "PropertyKey": "Date",
      "PropertyOperator": "BETWEEN",
      "PropertyValues": [
        "2021-08-28",
        "00:00:00",
        "2023-09-28",
        "23:59:59"
      ]
    }
  ]
}
```

Um die Werte für die Parameter `PropertyKey` und `PropertyOperator` zu ermitteln, erstellen Sie in der Administration and Monitoring Console einen Filter:

<Steps>
  <Step title="Die Browser-Developer-Tools öffnen">
    Klicken Sie im Browsermenü auf **More tools → Developer tools** und wechseln Sie zum Tab **Network**.
  </Step>

  <Step title="Einen Filter in der Konsole erstellen">
    Öffnen Sie die Administration and Monitoring Console, wechseln Sie zu **Processing Monitor → Sicherheitsereignisprotokoll**, und klicken Sie auf die Schaltfläche <img src="https://mintcdn.com/abbyy/39LtOHLEp1q7pm1x/images/flexi-capture/Add_filter.png?fit=max&auto=format&n=39LtOHLEp1q7pm1x&q=85&s=7fca1d511f8470021946ae439989fb68" alt="Schaltfläche „Filter hinzufügen“" style={{display:"inline-block",verticalAlign:"middle",margin:0}} width="22" height="22" data-path="images/flexi-capture/Add_filter.png" />.
  </Step>

  <Step title="Die Filterkriterien anwenden">
    Geben Sie die Filterkriterien an und klicken Sie auf **Apply**.
  </Step>

  <Step title="Die Filterparameter ablesen">
    Klicken Sie auf den Request `GetFilteredSecurityEvent`. Die Filterparameter sind im Tab **Payload** aufgeführt.
  </Step>
</Steps>

<div id="example-script">
  ## Beispielskript
</div>

Das folgende PowerShell-Skript zeigt, wie Sie diese API zum Herunterladen des Sicherheitsereignisprotokolls verwenden.

<Note>
  Ersetzen Sie die Parameter in diesem Skript durch Ihre Serveradresse, Ihren Mandantennamen und Ihre eigenen Zugangsdaten.
</Note>

```powershell theme={null}
# Parameter
$server = "https://<server address>"
$tenant = "<tenant name>"
$user = "<user name>"
$password = "<password>"
#Pfad zum Ordner, in dem das Protokoll gespeichert wird
$folder = "C:\Temp\Logs\Stage"
$reportFileName = "Project_SecurityEvents-{0:yyMMdd-HHmmss}.csv" -f (Get-Date)
# Protokollparameter
$requestBody = @"
filter={
    "Name": "Filter By Date",
    "GeneralOperator": "AND",
    "FilterItems": [
        {
            "PropertyKey": "Date",
            "PropertyOperator": "BETWEEN",
            "PropertyValues": [
                "2021-08-28",
                "00:00:00",
                "2023-09-28",
                "23:59:59"
            ]
        }
    ]
}
&columnsOrder=Id,Date,EventType,Details,RemoteHost,Principal,TenantName,Writer,WriterTenantName,
&sortColumnindex=1
&sortOrder=true
"@
#------------------------------------------------------------------------------
$methodUri = "/Project/GetSecurityEventsCSV"
$authServer = $server
$ServerSitePath = "/FlexiCapture12/Monitoring"

function Write-Line($str, $color = "White")
{
    Write-Host $str -ForegroundColor $color
}

function Join-Uri
{
    param([Parameter(Mandatory, ValueFromPipeline)] [string]$parent, [string]$child)
    if ($parent -eq "") {return $child;}
    if ($child -eq ""){return $parent}
    if ($parent.endswith("/") -or $parent.endswith("\\")) {$parent = $parent.substring(0,$parent.Length-1)}
    if ($child.startswith("/") -or $child.startswith("\\")) {$child = $child.substring(1,$child.Length-1)}
    return "$parent/$child"
}

function Get-AuthTicket($server, $user, $password, $tenant)
{
    $tenantSuffix=""
    if ($tenant -ne ''){ $tenantSuffix = "?tenant=$tenant"}
    $URL = Join-Uri $authServer "/FlexiCapture12/Server/FCAuth/API/Soap$tenantSuffix"
    $SOAPRequest = '<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><FindUser xmlns="urn:http://www.abbyy.com/FlexiCapture"><userLogin>user</userLogin></FindUser></soap:Body></soap:Envelope>'
    $Headers = @{
        'SOAPAction' = '"#FindUser"'
        'Content-Type' = 'text/xml; charset=utf-8'
        'Authorization' = "Basic $([System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes("$($user):$($password)")))"
    }
    try
    {
        $response1 = Invoke-WebRequest -Uri $URL -Headers $Headers -Body $SOAPRequest -Method 'POST'
        return $response1.Headers['AuthTicket']
    }
    catch{
        Write-Line -str "Couldn't get 'AuthTicket': $_" -color "Red"
        return ""
    }
}

function Download-CSVReport($server, $tenant, $authTicket, $methodUri, $requestBody, $folder, $reportFileName)
{
    $reportFullFilePath = Join-Path $folder $reportFileName
    #Ordner automatisch erstellen (falls nicht vorhanden)
    New-Item -ItemType Directory -Force -Path $folder | Out-Null
    if ($authTicket -eq "" -or $authTicket -eq $null)
    {
        Write-Line -str "Couldn't get 'CSV-Report'" -color "Red"
    }
    else
    {
        $header = @{ "Accept" = "*/*"}
        $session = [Microsoft.PowerShell.Commands.WebRequestSession]::new()
        $session.Cookies.Add($server, [System.NET.Cookie]::new("FlexiCaptureTmpPrn$tenant", "Ticket=$authTicket"))
        $tenantInUrl=""
        if ($tenant -ne '') { $tenantInUrl = "/$tenant"}
        $uri = Join-Uri $server $ServerSitePath | Join-Uri -child $tenantInUrl | Join-Uri -child $methodUri
        try{
            $response = Invoke-WebRequest -Uri $uri -Method 'POST' -Headers $header -WebSession $session -Body $requestBody -OutFile $reportFullFilePath -MaximumRedirection 0 -ErrorAction Ignore -PassThru
            if ($response.StatusCode -lt 300)
            {
                Write-Line "CSV-Report done: $reportFullFilePath" "Green"
            }
            else
            {
                Write-Line -str "HttpStatus $($response.StatusCode) in getting CSV-Report." -color "Red"
            }
        }
        catch{
            Write-Line -str "Couldn't get CSV-Report: $_" -color "Red"
            return ""
        }
    }
}

$authTicket = Get-AuthTicket -server $server -user $user -password $password -tenant $tenant
Download-CSVReport -server $server -tenant $tenant -authTicket $authTicket -methodUri $methodUri -requestBody $requestBody -folder $folder -reportFileName $reportFileName
```
