> ## 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.

# Registro de eventos de seguridad de Processing Monitor

> Descargue como CSV el registro de eventos de seguridad de cambios de permisos de ABBYY FlexiCapture Processing Monitor mediante la solicitud POST GetSecurityEventsCSV, con un script.

Este registro contiene registros sobre eventos relacionados con la adición, eliminación y otros cambios realizados en los permisos de los usuarios. El registro de eventos de seguridad está deshabilitado de forma predeterminada. Esta función solo puede habilitarla el Administrador del sistema directamente en una base de datos de FlexiCapture. Para obtener más información, consulte [Registro de eventos de seguridad](/es/flexi-capture/web-stations/monitoring-console/mmc-security-event-log).

<Warning>
  Solo los usuarios con el rol de Administrador del tenant (o el Administrador del sistema en el caso del tenant predeterminado) pueden descargar registros de eventos de seguridad desde Processing Monitor.
</Warning>

Para descargar este registro, use una solicitud POST:

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

<div id="request-parameters">
  ## Parámetros de solicitud
</div>

Todos los parámetros son obligatorios. Asegúrese de que se especifiquen correctamente.

<Info>
  La búsqueda en Oracle Database distingue entre mayúsculas y minúsculas. Téngalo en cuenta si usa Oracle Database.
</Info>

| Parámetro         | Tipo   | Descripción                                                                                                                                                                                                                                                  |
| ----------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `filter`          | string | Condiciones de filtro para el registro. Combine las condiciones únicamente con los operadores `AND` y `OR`, definidos en el parámetro `GeneralOperator`. Para obtener más información, consulte [Crear el parámetro de filtro](#build-the-filter-parameter). |
| `columnsOrder`    | string | Lista de columnas separadas por comas que se incluirán en el informe: `ID`, `Date`, `EventType`, `Details`, `RemoteHost`, `Principal`, `TenantName`, `Writer`, `WriterTenantName`.                                                                           |
| `sortColumnindex` | int    | Índice de la columna que se usa para ordenar las entradas del registro.                                                                                                                                                                                      |
| `sortOrder`       | bool   | Orden de clasificación: `true` ordena en orden descendente y `false`, en orden ascendente.                                                                                                                                                                   |

<div id="build-the-filter-parameter">
  ### Definir el parámetro de filtro
</div>

El parámetro `filter` acepta un objeto JSON. Por ejemplo:

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

Para encontrar los valores de los parámetros `PropertyKey` y `PropertyOperator`, cree un filtro en la Consola de administración y supervisión:

<Steps>
  <Step title="Abra Developer Tools del navegador">
    En el menú del navegador, haga clic en **More tools → Developer Tools** y vaya a la pestaña **Red**.
  </Step>

  <Step title="Cree un filtro en la consola">
    Abra la Consola de administración y supervisión, vaya a **Processing Monitor → registro de eventos de seguridad** y haga clic en el botón <img src="https://mintcdn.com/abbyy/39LtOHLEp1q7pm1x/images/flexi-capture/Add_filter.png?fit=max&auto=format&n=39LtOHLEp1q7pm1x&q=85&s=7fca1d511f8470021946ae439989fb68" alt="Botón Add filter" style={{display:"inline-block",verticalAlign:"middle",margin:0}} width="22" height="22" data-path="images/flexi-capture/Add_filter.png" />.
  </Step>

  <Step title="Aplique los criterios del filtro">
    Especifique los criterios de filtrado y haga clic en **Apply**.
  </Step>

  <Step title="Lea los parámetros del filtro">
    Haga clic en la request `GetFilteredSecurityEvent`. Los parámetros de filtrado se muestran en la pestaña **Payload**.
  </Step>
</Steps>

<div id="example-script">
  ## Script de ejemplo
</div>

El siguiente script de PowerShell muestra cómo usar esta API para descargar el registro de eventos de seguridad.

<Note>
  Sustituya los parámetros de este script por la dirección del servidor, el nombre del tenant y sus propias credenciales.
</Note>

```powershell theme={null}
# parámetros
$server = "https://<server address>"
$tenant = "<tenant name>"
$user = "<user name>"
$password = "<password>"
#ruta a la carpeta donde se guardará el registro
$folder = "C:\Temp\Logs\Stage"
$reportFileName = "Project_SecurityEvents-{0:yyMMdd-HHmmss}.csv" -f (Get-Date)
# parámetros del registro
$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
    #crear carpeta silenciosamente (si no existe)
    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
```
