Saltar al contenido principal
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.
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.
Para descargar este registro, use una solicitud POST:
POST https://<server address>/FlexiCapture12/Monitoring/Project/GetSecurityEventsCSV

Parámetros de solicitud

Todos los parámetros son obligatorios. Asegúrese de que se especifiquen correctamente.
La búsqueda en Oracle Database distingue entre mayúsculas y minúsculas. Téngalo en cuenta si usa Oracle Database.
ParámetroTipoDescripción
filterstringCondiciones 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.
columnsOrderstringLista de columnas separadas por comas que se incluirán en el informe: ID, Date, EventType, Details, RemoteHost, Principal, TenantName, Writer, WriterTenantName.
sortColumnindexintÍndice de la columna que se usa para ordenar las entradas del registro.
sortOrderboolOrden de clasificación: true ordena en orden descendente y false, en orden ascendente.

Definir el parámetro de filtro

El parámetro filter acepta un objeto JSON. Por ejemplo:
{
  "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:
1

Abra Developer Tools del navegador

En el menú del navegador, haga clic en More tools → Developer Tools y vaya a la pestaña Red.
2

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 Botón Add filter.
3

Aplique los criterios del filtro

Especifique los criterios de filtrado y haga clic en Apply.
4

Lea los parámetros del filtro

Haga clic en la request GetFilteredSecurityEvent. Los parámetros de filtrado se muestran en la pestaña Payload.

Script de ejemplo

El siguiente script de PowerShell muestra cómo usar esta API para descargar el registro de eventos de seguridad.
Sustituya los parámetros de este script por la dirección del servidor, el nombre del tenant y sus propias credenciales.
# 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