- 基本情報
- データのセキュリティとコンプライアンス
- 組織
- 認証とセキュリティ
- ライセンス
- テナントとサービス
- アカウントとロール
- AI Trust Layer
- 外部アプリケーション
- 通知
- ログ
- ログについて
- ログをエクスポートする
- 組織でのテスト
- トラブルシューティング
- Test Cloud に移行する

Test Cloud 管理ガイド
ログをエクスポートする
利用可能な機能は、使用するクラウド プラットフォームによって異なります。詳しくは、「 機能の提供状況」をご覧ください。
この機能は、Enterprise ライセンス プランでのみ利用できます。
統合ログのエクスペリエンスでは、次のいずれかの方法でログを CSV 形式でエクスポートできます。
- ユーザー インターフェイスの [エクスポート] オプション: 組織またはテナントの [監査ログ] セクションから [エクスポート] を選択します。
- 監査ログ API: 監査ログ API を使用します。
- UiPath カスタム スクリプト: UiPath が開発したスクリプトを実行して、UiPath の長期監査ログ ストアからログをエクスポートします。
長期保持またはコンプライアンスを目的として、統合ログとクラシック ログのどちらのエクスペリエンスでも、ロボット ログのエクスポートを設定して、Orchestrator から Azure Blob Storage、AWS S3、または Google Cloud Storage にデータを自動的に送信できます。Google Cloud Storage では、ログ ファイルが時間単位で生成され、独自の BI または監視ソリューションを使用して処理できます。
スクリプトを使用してログをエクスポートする
統合ログ エクスペリエンスを使用している場合は、専用のスクリプトを使用して、監査ログのインターフェイスからは利用できなくなった監査ログをエクスポートできます。このスクリプトは、2 年前までのログの取得をサポートしています。
このスクリプトは、次の場合に役立ちます。
- コンプライアンスや調査の目的で、古い監査ログにアクセスする必要がある。
- ログの長期アーカイブを自動化する。
前提条件
- 次のスクリプトを独自の
.shファイルにコピーします。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" - スクリプトを WSL (Windows Subsystem for Linux) 環境で実行し、次のツールがインストールされていることを確認します。
sudo apt install dos2unix unzip jqsudo apt install dos2unix unzip jq - 次のコマンドを使用して、実行するスクリプトを準備します。
dos2unix <script-name>.sh chmod +x <script-name>.shdos2unix <script-name>.sh chmod +x <script-name>.sh - テナントに機密の外部アプリケーションを作成し、API スコープ
PM.Audit.Read(アプリケーション) を割り当てます。 - 次のアプリケーション資格情報を収集します。
- アプリケーション ID (
client_id) - アプリケーション シークレット (
client_secret)
- アプリケーション ID (
手順
- ターミナルで必要な変数を設定します。
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' ./<script-name>.sh $client_id $client_secret $org_name $start_date $end_dateコマンドを使用してスクリプトを実行します。 たとえば、次のとおりです。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
ロボット ログのエクスポートを設定する
利用可能な機能は、使用するクラウド プラットフォームによって異なります。詳しくは、「 機能の提供状況」をご覧ください。
Orchestrator サービスで生成されたロボット ログを Azure、AWS S3、Google Cloud Storage にエクスポートするには、下記の各プロバイダー固有の詳しい手順に従ってください。ログは、uipathrobotlogs コンテナー内の .csv ファイルに保存されます。エクスポートはテナントごとに行われるため、以下の作業をスムーズに行えます。
- コンプライアンスや監査のために保持する必要のあるログの保存
- お使いのレポート ツールや BI ツールでの、ログ出力の分析・視覚化
注:
ログのエクスポート ページを設定する場合、30 日分のログのバックフィルはサポートされません。
-
UiPath アカウントにログインします。
-
[管理] に移動し、左側のパネルでテナントを選択します。
-
[サービス] を選択します。
-
Orchestrator のカードで [ その他 ] アイコンを選択し、[ ログのエクスポートの設定] を選択します。
[設定] パネルがウィンドウの右側に表示されます。
-
[ロボット ログをカスタム ストレージに送信] のトグルを有効化します。
-
クラウド プラットフォームに応じて、次の手順に進みます。
- Test Cloud:
- [ストレージの種類] ドロップダウンから、ログのエクスポート先のストレージ プロバイダーを選択します。次のオプションを使用できます。
- Azure
- AWS S3
- Google Cloud Storage
注:ログのエクスポート機能は AWS KMS をサポートしていません。
- プロバイダー固有の手順を実行すると、
.csvが生成されます。サンプルをダウンロード.csv - ログは 1 時間ごとに配信されます。この時間間隔は変更できません。
- [ストレージの種類] ドロップダウンから、ログのエクスポート先のストレージ プロバイダーを選択します。次のオプションを使用できます。
- Test Cloud (公共部門向け) および Test Cloud (専有型):
- 「 Azure 」セクションに記載されている手順を引き続き実行します。
- Test Cloud:
Azure
静的 IP を許可リストに設定し、ネットワークをどの外部 IP に対しても開かないようにすることができます。[設定] > [ネットワーク] > [パブリック アクセス] > [Azure Blob Storage のファイアウォール] > [アドレス範囲] に移動して、静的 IP を追加します。すべての IP のリストについては、「 ファイアウォールを設定する 」をご覧ください。
次のストレージ オプションがサポートされています。
- 標準ローカル冗長ストレージ (LRS)
- Standard geo 冗長ストレージ (GRS)
- 標準読み取りアクセス geo 冗長ストレージ (RA-GRS)
- Standard ゾーン冗長ストレージ (ZRS)
- プレミアム LRS
ストレージの種類について詳しくは、Azure の公式ドキュメント「 ストレージ アカウントの概要 」のページをご覧ください。
-
[ストレージの種類] ドロップダウンから [Azure Storage アカウント] を選択します。
-
[Azure BLOB 接続文字列] フィールドに Azure Portal から取得した BLOB 接続文字列を入力します。
-
[コンテナー名] フィールドに、Azure で
csvの保存に使用するコンテナーの名前を入力します。既定ではuipathrobotlogsです。カスタム コンテナー名を入力します。その名前がまだ存在しない場合は、コンテナーにより自動的に作成されます。 -
[保存] を選択します。ロボット ログのエクスポートが正常に設定されたことを知らせる通知が表示されます。
-
Azure Portal の Blob ストレージ アカウントで以下の手順を実行します。
- 左側のパネルの [設定] > [ネットワーク] を選択します。
- [許可するアクセス元] > [すべてのネットワーク] を選択します。
- [保存] を選択して変更を保存します。
-
1 時間以内に
.csvログ ファイルが BLOB ストレージに生成されます。.csvは、uipathrobotlogsコンテナー内のフォルダー階層[tenant_key]/[year]/[month]/[day]/[hour]/outputに生成されます。1 つのコンテナーに 1 つのテナントをマッピングすることをお勧めします。1 つのコンテナーに複数のテナントを接続すると、テナント キーでしかテナントを区別できないからです。
AWS S3
静的 IP を許可リストに設定し、ネットワークをどの外部 IP に対しても開かないようにすることができます。AWS S3 ユーザー ガイドの「Bucket policies for Amazon S3」のページの説明に従って、AWS S3 のアクセス ポリシーを使用して、aws:SourceIpリストに指定されていない限り、すべての要求を拒否します。すべての IP のリストについては、『Automation Cloud 管理ガイド』の「 ファイアウォールを設定する 」をご覧ください。
-
[ストレージの種類] ドロップダウンから [AWS S3] を選択します。
-
[バケット名] フィールドに、AWS で設定したバケットの名前を入力します。
注:同じバケット名を複数の組織で共有することはできません。
-
[リージョン名] フィールドに、ログをエクスポートするリージョンの名前を入力します。例:
us-west-1 -
プロンプトで表示される IAM ユーザーに、バケットに対するアクセス権 s3:PutObject および s3:DeleteObject を必ず付与してください。
Google Cloud Storage
-
[ストレージの種類] ドロップダウンから [Google Cloud Storage] を選択します。
-
[バケット名] フィールドに、Google Cloud Platform で設定したバケットの名前を入力します。
注:同じバケット名を複数の組織で共有することはできません。
-
下の図のプロンプトの指示に従い、UiPath® サービス アカウントに適切なアクセス権を付与します。
- Google Cloud Platform で [ストレージ] > [ブラウザ] に移動します。
- 権限を編集するバケットを検索します。
- 縦三点リーダー ボタンを選択して、[バケットの権限を編集] を選択します。
- [メンバーを追加] を選択して、バケットへのアクセスに使用するサービス アカウントを入力します。
- ロールを選択するドロップダウンから [ストレージ オブジェクト管理者] を選択します。詳しくは、GCP ドキュメントの「 ID およびアクセス管理 」をご覧ください。
ログ エクスポート設定を削除する
- ログ エクスポート設定を削除するテナントを展開します。
- そのテナント内の Orchestrator サービスの [ログのエクスポートの設定] を選択します。[設定] パネルが右側に表示されます。
- [ロボット ログをカスタム ストレージに送信] のトグルを無効化します。
- [ 設定を削除 ] ウィンドウの [ 削除 ] を選択して確定します。設定が削除されます。