> ## 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 System Monitor

> Descargue el registro de eventos de seguridad de ABBYY FlexiCapture System Monitor sobre cambios de permisos en formato CSV mediante la solicitud POST GetSecurityEventsCSV, con un script.

Este registro contiene entradas 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 y solo puede ser habilitado por 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 permisos de Administrador del sistema pueden descargar registros de eventos de seguridad desde System Monitor. Un Administrador del sistema es el Administrador de un tenant predeterminado.
</Warning>

Para descargar este registro, use una solicitud POST:

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

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

Todos los parámetros son obligatorios. Asegúrese de que estén especificados 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 log. 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 utiliza para ordenar los registros del log.                                                                                                                                                                                |
| `sortOrder`       | bool   | Orden de clasificación: `true` ordena en orden descendente y `false`, en orden ascendente.                                                                                                                                                             |
| `tenantId`        | int    | Tenants que se incluirán en el log: `-1` para todos los tenants disponibles, `0` para el tenant predeterminado o un ID del tenant específico (`1` o superior).                                                                                         |

<div id="build-the-filter-parameter">
  ### Defina 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 las Developer Tools del navegador">
    En el menú del navegador, haga clic en **More tools → Developer Tools** y vaya a la pestaña **Network**.
  </Step>

  <Step title="Cree un filtro en la consola">
    Inicie la Consola de administración y supervisión, vaya a **System 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 de filtro">
    Especifique los criterios de filtro y haga clic en **Apply**.
  </Step>

  <Step title="Consulte los parámetros del filtro">
    Haga clic en la solicitud `GetFilteredSecurityEvent`. Los parámetros de filtro 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 de su servidor y sus propias credenciales.
</Note>

```powershell theme={null}
# parámetros
$server = "https://<server address>"
$user = "<user name>"
$password = "<password>"
#ruta a la carpeta donde se guardará el registro
$folder = "C:\Temp\Logs\Stage"
$reportFileName = "Tenant_SecurityEvents-{0:yyMMdd-HHmmss}.csv" -f (Get-Date)
# parámetros del registro
$requestBody = @"
filter={
    "Name": "Filter",
    "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
&tenantId=-1
"@
#------------------------------------------------------------------------------
$tenant = "" # Solo el tenant predeterminado
$methodUri = "/Tenant/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', "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
```
