- Démarrage
- Sécurité et conformité des données
- Organisations
- Authentification et sécurité
- Licences
- À propos des licences
- Tarification unifiée : infrastructure du plan de licence
- Flex : infrastructure du plan de licence
- Activation de votre licence Enterprise
- Mise à niveau et rétrogradation des licences
- Demander un essai de service
- Attribuer des licences aux locataires
- Attribuer des licences utilisateur
- Révocation des licences utilisateur
- Surveillance de l’attribution des licences
- Surallocation de licences
- Notifications d'attribution de licence
- Gestion des licences utilisateur
- Locataires et services
- Comptes et rôles
- Test dans votre organisation
- AI Trust Layer
- Applications externes
- Notifications
- Journalisation
- À propos des journaux
- Exportation des journaux
- Résolution des problèmes
- Migrer vers Automation Cloud

Guide d'administration d'Automation Cloud
Cette fonctionnalité n'est disponible que si vous êtes sur le plan de licence Enterprise.
- Option Exporter dans l'interface utilisateur : dans la section Journaux d'audit de votre organisation ou de votre locataire, sélectionnez Exporter.
- API des journaux d'audit: utilisez les API des journaux d'audit.
- Script personnalisé UiPath : exécutez un script développé par UiPath pour exporter les journaux du magasin de journaux d'audit de longue durée d'UiPath.
À des fins de rétention ou de conformité à long terme, l'expérience de journalisation unifiée et classique vous permet de configurer les exportations de journaux de robot pour envoyer automatiquement des données depuis Orchestrator vers Azure Blob Storage, AWS S3 ou Google Cloud Storage, où les fichiers journaux sont générés toutes les heures et peuvent être traité à l’aide de vos propres solutions BI ou de surveillance.
Si vous utilisez l'expérience de journalisation unifiée, vous pouvez utiliser un script dédié pour exporter les journaux d'audit qui ne sont plus disponibles via l'interface Journaux d'audit. Le script prend en charge la récupération des journaux jusqu’à 2 ans dans le passé.
Ce script est utile lorsque :
-
Vous devez accéder aux anciens journaux d’audit à des fins de conformité ou d’enquête.
-
Vous souhaitez automatiser l’archivage des journaux à long terme.
Prérequis
- Copiez le script suivant dans un fichier
.shde votre propre fichier :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" - Exécutez le script dans un environnement WSL (Windows Subsystem for Linux) et assurez-vous que les outils suivants sont installés :
sudo apt install dos2unix unzip jqsudo apt install dos2unix unzip jq - Préparez le script pour l'exécution à l'aide des commandes suivantes :
dos2unix <script-name>.sh chmod +x <script-name>.shdos2unix <script-name>.sh chmod +x <script-name>.sh -
Créez une application externe confidentielle dans votre locataire et attribuez l'étendue d'API suivante :
PM.Audit.Read(application). -
Collectez les informations d’identification de l’application suivantes :
-
ID d'application (
client_id) -
Clé secrète de l'application (
client_secret)
-
Étapes
- Définissez les variables requises dans votre 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' - Exécutez le script à l'aide de la commande suivante :
./<script-name>.sh $client_id $client_secret $org_name $start_date $end_date.Par exemple :
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 dans le conteneur uipathrobotlogs . L'exportation se fait sur une base par locataire, ce qui facilite les opérations suivantes :
- Stockage des journaux qui doivent être conservés à des fins de conformité et d’audit.
-
Analyse et visualisation de la sortie du journal dans vos propres outils de rapport ou BI.
Remarque : lors de la configuration de la page d'exportation des journaux, nous ne prenons pas en charge le renvoi de 30 jours de journaux.
Azure
- Stockage standard redondant local (LRS)
- Stockage géo-redondant standard (RGS)
- Stockage géo-redondant avec accès en lecture standard (RA-GRAS)
- Stockage redondant de zone standard (ZRS)
- LRS Premium
AWS S3
aws:SourceIp comme décrit dans la page Politiques de compartiment pour Amazon S3 du Guide de l’utilisateur AWS S3. Consultez la page Configuration du pare-feu du guide d'administration d'Automation Cloud pour obtenir la liste complète des adresses IP.
Stockage Google Cloud
- Développez le locataire pour lequel vous souhaitez supprimer les paramètres d'exportation de journaux.
- Pour le service Orchestrator dans ce locataire, sélectionnez Configuration de l'exportation des journaux (Log Export Configuration). Le panneau de droite Configuration s'affiche.
- Désactivez la bascule Envoyer les journaux des évènements du robot vers un stockage personnalisé (Send robot logs to custom storage).
- Dans la fenêtre Supprimer la configuration (Delete configuration) , sélectionnez Supprimer (Delete) pour confirmer. La configuration est supprimée avec succès.