- Primeros pasos
- Seguridad y cumplimiento de los datos
- Organizaciones
- Autenticación y seguridad
- Comprender los modelos de autenticación
- Configurar la integración de Microsoft Entra ID
- Requisitos de complejidad de la contraseña de los usuarios locales
- Licencia
- Acerca de la licencia
- Precios unificados: marco del plan de licencias
- Flex: marco del plan de licencias
- Activar su licencia Enterprise
- Actualización y desactualización de licencias
- Solicitar una prueba de servicio
- Asignar licencias a tenants
- Asignación de licencias de usuario
- Anular la asignación de licencias de usuarios
- Monitoring license allocation
- Licencias con exceso de asignación
- Notificaciones de licencias
- Administración de licencias de usuario
- Tenants y servicios
- Cuentas y roles
- Pruebas en su organización
- Ai Trust Layer
- Aplicaciones externas
- Notificaciones
- Registro
- Sobre los registros
- Exportar registros
- Solución de problemas
- Migrar a Automation Cloud

Guía para administradores de Automation Cloud
Esta característica solo está disponible si estás en el plan de licencia Empresarial.
- Opción Exportar en la interfaz de usuario: en la sección Registros de auditoría de tu organización o tenant, selecciona Exportar.
- API de registros de auditoría: utiliza las API de registros de auditoría.
- Script personalizado de UiPath: ejecuta un script desarrollado por UiPath para exportar registros del almacén de registros de auditoría a largo plazo de UiPath.
Para fines de retención o cumplimiento a largo plazo, tanto la experiencia de registro unificada como la clásica te permiten configurar las exportaciones de registros de robots para enviar automáticamente datos de Orchestrator a Azure Blob Storage, AWS S3 o Google Cloud Storage, donde los archivos de registro se generan cada hora y pueden procesarse utilizando sus propias soluciones de BI o de supervisión.
Si utilizas la experiencia de registro unificado, puedes utilizar un script dedicado para exportar los registros de auditoría que ya no están disponibles a través de la interfaz de Registros de auditoría. El script admite la recuperación de registros de hasta 2 años en el pasado.
Este script es útil cuando:
-
Necesitas acceso a los registros de auditoría más antiguos para fines de cumplimiento o investigación.
-
Quiere automatizar el archivo de registros a largo plazo.
Requisitos previos
- Copia el siguiente script en un archivo
.shpropio:appId=$1 appSecret=$2 organizatioNameOrId=$3 fromDate=$4 toDate=$5 mode=${6:-s} cloud=${7:-cloud} if [[ $# -lt 5 ]]; then echo "Error: Not all required input parameters provided." echo "Usage: $0 <appId> <appSecret> <organizatioNameOrId> <fromDate> <toDate> <mode>(optional: v for verbose, s for silent)" exit 1 fi # Validate "fromDate" date format (MM/DD/YYYY) if ! date -d "$fromDate" &>/dev/null; then echo "Error: Invalid date format for 'fromDate'. Please use MM/DD/YYYY format." exit 1 fi # Validate "to" date format (MM/DD/YYYY) if ! date -d "$toDate" &>/dev/null; then echo "Error: Invalid date format for 'toDate'. Please use MM/DD/YYYY format." exit 1 fi echo $(date +"%Y-%m-%d %H:%M:%S.%3N") "Start Getting UiPath Token." response=$(curl --data-urlencode -X POST "https://${cloud}.uipath.com/${organizationNameOrId}/identity_/connect/token" -$mode \ -d "grant_type=client_credentials" \ -d "scope=PM.Audit.Read" \ -d "client_id=$appId" \ -d "client_secret=$appSecret" \ -H "Content-Type: application/x-www-form-urlencoded") access_token=$(echo "$response" | jq -r '.access_token') if [[ "$access_token" == null ]]; then echo "Error: Access token is null or empty in the response. Please verify the appId and appSecret." exit 1 fi base_dir=$(date +"%Y-%m-%d%H:%M:%S.%3N") echo $base_dir "Start Downloading UiPath Platform Audit logs." # Define the base URL base_url="https://${cloud}.uipath.com/${organizatioNameOrId}/orgaudit_/api/query/downloadeventsfromlongtermstore" mkdir -p $base_dir # Iterate through time intervals current_date=$(date -u -d "$fromDate" +"%Y-%m-%dT%H:%M:%SZ") seconds_in_a_day=$((24*60*60)) while [ "$(date -d "$current_date" +%s)" -le "$(date -d "$toDate" +%s)" ]; do next_date=$(date -u -d "$current_date + $(($seconds_in_a_day-1)) seconds" +"%Y-%m-%dT%H:%M:%SZ") # Construct the full URL with the current time interval formatted_current_date=$(date -u -d "$current_date" +"%Y-%m-%dT%H:%M:%SZ" | sed 's/\//%2F/g') formatted_current_date="${current_date}" formatted_next_date=$next_date | sed 's/\//%2F/g' formatted_next_date="${next_date}" full_url="$base_url?from=$formatted_current_date&to=$formatted_next_date" echo $full_url echo "Downloading UiPath Audit Log from $current_date to $next_date" curl -X GET "$full_url" -$mode \ -H "Authorization: Bearer $access_token" \ -o "${base_dir}/${current_date////-}_to_${next_date////-}.zip" # Save the response to a file # Move to the next time interval current_date=$next_date one=1 current_date=$(date -u -d "$current_date + $one seconds" +"%Y-%m-%dT%H:%M:%SZ") done for zip_file in "$base_dir"/*.zip; do zip_file_name="$(basename "$zip_file")" unzip -q "$zip_file" -d "$base_dir/auditlogs/" echo "Extracted ${zip_file_name%.*}" rm "$zip_file" done shopt -s nullglob for zip_file in "$base_dir/auditlogs"/*.zip; do zip_file_name="$(basename "$zip_file")" unzip -q "$zip_file" -d "$base_dir/auditlogs/${zip_file_name%.*}" for data_file in "$base_dir/auditlogs"/${zip_file_name%.*}/*.txt; do data_file_name="$(basename "$data_file")" mv "$data_file" "$base_dir/auditlogs/${data_file_name%.*}_${zip_file_name%.*}.txt" rm -r "$base_dir/auditlogs/${zip_file_name%.*}" done rm "$zip_file" done shopt -u nullglob echo $(date +"%Y-%m-%d %H:%M:%S.%3N") "Downloaded UiPath Platform Audit logs and saved them according to UTC date"appId=$1 appSecret=$2 organizatioNameOrId=$3 fromDate=$4 toDate=$5 mode=${6:-s} cloud=${7:-cloud} if [[ $# -lt 5 ]]; then echo "Error: Not all required input parameters provided." echo "Usage: $0 <appId> <appSecret> <organizatioNameOrId> <fromDate> <toDate> <mode>(optional: v for verbose, s for silent)" exit 1 fi # Validate "fromDate" date format (MM/DD/YYYY) if ! date -d "$fromDate" &>/dev/null; then echo "Error: Invalid date format for 'fromDate'. Please use MM/DD/YYYY format." exit 1 fi # Validate "to" date format (MM/DD/YYYY) if ! date -d "$toDate" &>/dev/null; then echo "Error: Invalid date format for 'toDate'. Please use MM/DD/YYYY format." exit 1 fi echo $(date +"%Y-%m-%d %H:%M:%S.%3N") "Start Getting UiPath Token." response=$(curl --data-urlencode -X POST "https://${cloud}.uipath.com/${organizationNameOrId}/identity_/connect/token" -$mode \ -d "grant_type=client_credentials" \ -d "scope=PM.Audit.Read" \ -d "client_id=$appId" \ -d "client_secret=$appSecret" \ -H "Content-Type: application/x-www-form-urlencoded") access_token=$(echo "$response" | jq -r '.access_token') if [[ "$access_token" == null ]]; then echo "Error: Access token is null or empty in the response. Please verify the appId and appSecret." exit 1 fi base_dir=$(date +"%Y-%m-%d%H:%M:%S.%3N") echo $base_dir "Start Downloading UiPath Platform Audit logs." # Define the base URL base_url="https://${cloud}.uipath.com/${organizatioNameOrId}/orgaudit_/api/query/downloadeventsfromlongtermstore" mkdir -p $base_dir # Iterate through time intervals current_date=$(date -u -d "$fromDate" +"%Y-%m-%dT%H:%M:%SZ") seconds_in_a_day=$((24*60*60)) while [ "$(date -d "$current_date" +%s)" -le "$(date -d "$toDate" +%s)" ]; do next_date=$(date -u -d "$current_date + $(($seconds_in_a_day-1)) seconds" +"%Y-%m-%dT%H:%M:%SZ") # Construct the full URL with the current time interval formatted_current_date=$(date -u -d "$current_date" +"%Y-%m-%dT%H:%M:%SZ" | sed 's/\//%2F/g') formatted_current_date="${current_date}" formatted_next_date=$next_date | sed 's/\//%2F/g' formatted_next_date="${next_date}" full_url="$base_url?from=$formatted_current_date&to=$formatted_next_date" echo $full_url echo "Downloading UiPath Audit Log from $current_date to $next_date" curl -X GET "$full_url" -$mode \ -H "Authorization: Bearer $access_token" \ -o "${base_dir}/${current_date////-}_to_${next_date////-}.zip" # Save the response to a file # Move to the next time interval current_date=$next_date one=1 current_date=$(date -u -d "$current_date + $one seconds" +"%Y-%m-%dT%H:%M:%SZ") done for zip_file in "$base_dir"/*.zip; do zip_file_name="$(basename "$zip_file")" unzip -q "$zip_file" -d "$base_dir/auditlogs/" echo "Extracted ${zip_file_name%.*}" rm "$zip_file" done shopt -s nullglob for zip_file in "$base_dir/auditlogs"/*.zip; do zip_file_name="$(basename "$zip_file")" unzip -q "$zip_file" -d "$base_dir/auditlogs/${zip_file_name%.*}" for data_file in "$base_dir/auditlogs"/${zip_file_name%.*}/*.txt; do data_file_name="$(basename "$data_file")" mv "$data_file" "$base_dir/auditlogs/${data_file_name%.*}_${zip_file_name%.*}.txt" rm -r "$base_dir/auditlogs/${zip_file_name%.*}" done rm "$zip_file" done shopt -u nullglob echo $(date +"%Y-%m-%d %H:%M:%S.%3N") "Downloaded UiPath Platform Audit logs and saved them according to UTC date" - Ejecuta el script en un entorno WSL (Subsistema de Windows para Linux) y asegúrate de que estén instaladas las siguientes herramientas:
sudo apt install dos2unix unzip jqsudo apt install dos2unix unzip jq - Prepara el script para su ejecución utilizando los siguientes comandos:
dos2unix <script-name>.sh chmod +x <script-name>.shdos2unix <script-name>.sh chmod +x <script-name>.sh -
Crea una aplicación externa confidencial en tu tenant y asigna el siguiente ámbito de API:
PM.Audit.Read(aplicación). -
Recopila las siguientes credenciales de aplicación:
-
ID de la aplicación (
client_id) -
Secreto de la aplicación (
client_secret)
-
Pasos
- Establece las variables requeridas en tu terminal:
client_id='<your-client-id>' client_secret='<your-client-secret>' org_name='<your-org-name>' start_date='MM/DD/YYYY' end_date='MM/DD/YYYY'client_id='<your-client-id>' client_secret='<your-client-secret>' org_name='<your-org-name>' start_date='MM/DD/YYYY' end_date='MM/DD/YYYY' - Ejecuta el script utilizando el siguiente comando:
./<script-name>.sh $client_id $client_secret $org_name $start_date $end_date.Por ejemplo:
client_id='<clientId>' client_secret='<clientsecret>' org_name='test_org' start_date='09/01/2025' end_date='10/01/2025' ./<script-name>.sh $client_id $client_secret $org_name $start_date $end_date vclient_id='<clientId>' client_secret='<clientsecret>' org_name='test_org' start_date='09/01/2025' end_date='10/01/2025' ./<script-name>.sh $client_id $client_secret $org_name $start_date $end_date v
.csv en el contenedor uipathrobotlogs . La exportación se realiza por tenant, lo que facilita lo siguiente:
- Almacenamiento de registros que deben conservarse para fines de cumplimiento y auditoría.
-
Analizar y visualizar los resultados de los registros en tus propias herramientas de informes o de BI.
Nota: Al configurar la página de exportación de registros, no se admite la reposición de registros de 30 días.
Azure
- Almacenamiento estándar con redundancia local (LRS)
- Almacenamiento estándar con redundancia geográfica (GRS)
- Almacenamiento con redundancia geográfica de acceso de lectura estándar (RA-GRS)
- Almacenamiento estándar con redundancia de zona (ZRS)
- LRS premium
AWS S3
aws:SourceIp como se describe en la página Políticas de depósito para Amazon S3 de la guía de usuario de AWS S3. Consulta la página Configurar el cortafuegos de la guía de administración de Automation Cloud para ver la lista completa de IP.
Cloud Storage de Google
- Despliega el tenant para el que quieres eliminar la exportación de registros.
- Para el servicio de Orchestrator en ese tenant, selecciona Configuración de exportación de registros. Se mostrará el panel derecho de Configuración .
- Activa la opción Enviar los registros del robot a un almacenamiento personalizado.
- En la ventana Eliminar configuración , selecciona Eliminar para confirmar. La configuración se ha eliminado correctamente.