1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【UiPath】DLLファイル署名によるWDAC環境下でのRPA実行

1
Last updated at Posted at 2026-09-30

はじめに

本記事では UiPath Studio の DLL ファイル署名機能の概要と利用手順について説明します。

2026 年 4 月 6 日リリースの UiPath Studio ビルド 2026.0.190 (STS 版) にて、Studio が生成する DLL ファイルへのコード署名機能 が 追加されました。

近年、エンドポイントのセキュリティ強化のため WDAC (Windows Defender アプリケーション制御) を導入する企業が増えています。WDAC は「許可されたアプリケーションしか実行させない」仕組みであり、ポリシーで明示的に許可されていないバイナリの実行をブロックします。

これによって RPA 開発の現場では、次のような課題が発生することが想定されます。

  • UiPath Studio は、ワークフローのデバッグ実行時もしくはパブリッシュ時に DLL を動的に生成 します。動的生成された DLL はWDAC ポリシー配布後に作成されるため、事前にハッシュで許可リストへ登録できません。結果として、WDAC 有効環境ではワークフローの実行・デバッグがブロックされてしまいます。
  • 回避策として、ファイルパスルールを広く許可する (例えば マイドキュメントやNuGetキャッシュディレクトリをすべて許可する) と、副作用として WDAC の保護レベルが低下してしまいます。

この課題に対して 証明書ベースの署名ルール で解決するのが今回の DLL ファイル署名機能です。組織のコード署名証明書で DLL に署名し、その証明書を WDAC ポリシーで信頼させることで、動的生成された DLL であっても ハッシュ事前登録なしに実行を許可 できるようになります。

WDAC とは?

WDAC (Windows Defender アプリケーション制御) は、Windows に搭載されているアプリケーション制御機能です。現在は ビジネス向けアプリ コントロール という名称でも呼ばれています。

  • 「実行してよいコード」をポリシーで定義し、それ以外の実行をすべてブロックします (ホワイトリスト方式) 。
  • ポリシーは Microsoft Intune などの MDM (モバイルデバイス管理) から配布・管理できます。
  • 許可ルールは複数の指定方法があります。
    • ハッシュルール: ファイルのハッシュ値で許可する。最も厳格だが、ファイル更新のたびに再登録が必要。
    • パスルール: フォルダーパスで許可する。運用負荷は軽減されるが、保護レベルが低下する。
    • 署名者 (発行元) ルール: 特定の証明書で署名されたファイルを許可する。DLL 更新にも追従でき、保護レベルも維持できる。

本記事で扱う DLL ファイル署名は、この 署名者ルール を活用するためのものです。

Studio による DLL ファイル署名とは?

UiPath Studio が動的に生成する DLL に対し、SignTool (Windows SDK 付属のコード署名ツール) を用いてコード署名を行う機能です。署名の対象は次の 2 種類に分かれており、それぞれ別の設定項目が用意されています。

対象 生成タイミング 対応する設定
動的 DLL デザイン時 (実行・デバッグ時) 動的 DLL 証明書
パブリッシュ時の DLL プロジェクトのパブリッシュ時 既定の発行証明書

Studio の設定は プロジェクト単位 と グローバル (Studio 単位) の 2 つのレベルで指定できます。

  • プロジェクト単位: [プロセスをパブリッシュ] ウィンドウの [証明書の署名] タブで、証明書・パスワード・タイムスタンプサーバーを指定します。
  • グローバル: [設定] > [場所] で、既定の発行証明書・動的 DLL 証明書・署名ツールのパスを指定します。

対応する証明書ファイルの形式は .pfx または .p12 です。

作業フローと本記事のスコープ

証明書の作成から WDAC ポリシーの更新まで、登場人物は システム管理者 と 開発者 の 2 者に分かれます。全体の流れは次の通りです。

【システム管理者 (認証局) 】

  1. コード署名証明書を作成し、公開鍵 (*.cer) と秘密鍵 (*.pfx) をエクスポート

【開発者 (Studio 端末) 】
2. SignTool をインストールする
3. コード署名用証明書を配置する
4. Studio をアップグレードする
5. Studio のコード署名を設定する
6. デバッグとパブリッシュを実行する
7. DLL の署名を確認する

【システム管理者 (グループポリシー / MDM) 】
8. 各実行端末で公開鍵証明書を信頼する
9. WDAC ポリシーを更新する

本記事では、このうち 開発者側の作業 (手順 2 〜 7) を中心に説明します。証明書の作成 (手順 1)、証明書の信頼 (手順 8) および WDAC ポリシーの更新 (手順 9) についても、前後関係が分かるよう概要を説明します。

DLL ファイル署名の実行手順

前提条件

本機能を利用するには、次の環境・ツールを準備します。

  • UiPath Studio v2026.10 以降
    • DLL ファイル署名機能自体は 2026 年 4 月リリース (ビルド 2026.0.190) で追加されていますが、本記事では現時点での最新版 STS (ビルド 2026.0.201) で説明します。インストーラーは こちらのページ に記載の URL より入手します。
    • Studio v2026.10 (LTS) は 2026 年 10 月にリリース予定です。
  • Windows SDK の Signing Tools (signtool.exe)
  • コード署名用証明書 (.pfx または .p12 形式) と、その公開鍵証明書 (.cer) 。本記事では自己署名証明書で説明します。
  • Studio プロジェクトの互換性はレガシーではなく Windows であること。
  • WDAC ポリシーを配布する場合は Microsoft Intune 等の MDM 環境を準備します。

実行手順

1. 【管理者】コード署名用証明書の作成

システム管理者 (認証局の管理担当者) が、コード署名用の証明書を作成します。作成した証明書は、公開鍵 (*.cer) と 秘密鍵 (*.pfx) の形式でそれぞれエクスポートして保管します。.pfx のエクスポート時にはパスワードを設定します。

証明書の入手元は、用途に応じて次の 3 通りから選択します。

種別 作成方法 一般的な用途
自己署名証明書 PowerShell などで作成 検証・PoC
ドメイン証明機関 Microsoft CA (社内 CA) で発行 社内利用の本番運用
公的証明機関 CSR を作成し、公的 CA に発行を依頼 社外配布を伴う運用

検証用の自己署名証明書を作成する場合は、次の PowerShell スクリプト を実行します。サブジェクト名 (-Subject) や有効期限 (-NotAfter) の引数値は適宜変更します。

$cert = New-SelfSignedCertificate `
  -Type CodeSigningCert `
  -Subject "CN=UiPath Code Signing" `
  -CertStoreLocation "Cert:\CurrentUser\My" `
  -KeyExportPolicy Exportable `
  -KeyAlgorithm RSA `
  -KeyLength 2048 `
  -HashAlgorithm SHA256 `
  -NotAfter (Get-Date).AddYears(10)

$password = Read-Host "PFX password" -AsSecureString

Export-PfxCertificate `
  -Cert $cert `
  -FilePath ".\UiPath-CodeSigning.pfx" `
  -Password $password

実行時にパスワード入力を求められた後、カレントディレクトリに UiPath-CodeSigning.pfx が出力されます。

WDAC ポリシー用の公開鍵 (.cer) は、続けて次のコマンドでエクスポートします。

Export-Certificate `
  -Cert $cert `
  -FilePath ".\UiPath-CodeSigning.cer"

2つのファイルが作成されることを確認します。

01.png

自己署名証明書はあくまで検証用です。本番運用では社内 CA または公的 CA が発行した証明書をご利用いただくことを推奨します。

2. 【開発者】SignTool のインストール

Studio が署名処理に使用する signtool.exe を端末にインストールします。signtool.exe は Windows SDK に含まれています。

  1. Windows SDK のダウンロードページ にアクセスし、インストーラーをダウンロードします。

    02.png

  2. ダウンロードしたインストーラーを実行します。

  3. 機能の選択画面で、Windows SDK Signing Tools for Desktop Apps のみをオンにします。他の機能は不要なためオフのままで問題ありません。

    03.png

  4. Windows SDK のインストールを完了します。

インストール後、signtool.exe のフルパスを確認します。C:\Program Files (x86)\Windows Kits\10\bin 配下の、SDK バージョン別フォルダーに配置されています。

04.png

バージョン番号 (10.0.28000.0 の部分) はインストールした SDK によって異なります。実際にエクスプローラーでフォルダーを開き、パスを控えておいてください。この後の手順 5 で使用します。

3. 【開発者】コード署名用証明書の配置

システム管理者から コード署名用証明書の秘密鍵 (.pfx) とパスワード を入手し、Studio 端末のアクセス権を制限した場所に配置します。

  1. 入手した .pfx ファイルを、Studio を実行するユーザーだけが読み取れるフォルダーに配置します。
  2. .pfx ファイルとパスワードは別々に管理し、ソース管理や共有フォルダーには保存しません。
  3. .pfx ファイルのフルパスを控えます。(後述の手順 5 で指定)

自己署名証明書を使用する場合は、Studio 端末でも公開鍵証明書 (.cer) を信頼させます。

  1. 手順 1 でエクスポートした .cer ファイルを Studio 端末へ配布します。

  2. .cer ファイルをダブルクリックし、証明書のインストール をクリックします。

    19.png

  3. 保存場所で [ローカル コンピューター] を選択します。

  4. 証明書ストアとして [信頼されたルート証明機関] を選択し、インポートを完了します。

社内 CA または公的 CA が発行した証明書を使用する場合は、署名証明書ではなく CA のルート証明書(必要に応じて中間 CA 証明書)が Studio 端末で信頼されていることを確認してください。
実行端末で署名を信頼させる手順は、手順 8 で行います。署名用の PFX を実行端末へ配布する必要はありません。

4. 【開発者】Studio のアップグレード

DLL ファイル署名機能を利用するため、UiPath Studio を v2026.10 以降 にアップグレードします。(v2026.10 リリース前は最新版 STS をご利用ください。)
最新版インストーラーを こちらのページ に記載の URL より入手して、アップグレードインストールします。

UiPath Studio をアップグレードすると実行環境である UiPath Robot もアップグレードが必要となります。詳細は 相互運用性マトリックス をご参照ください。

5. 【開発者】Studio のコード署名設定

Studio 全体に適用されるグローバル設定として、証明書と SignTool のパスを登録します。

  1. Studio で [ホーム] を開き、[設定] > [場所] タブを選択します。

  2. 次の 3 項目を設定します。

    設定項目 設定値 説明
    既定の発行証明書 *.pfx ファイルのフルパス パブリッシュ時の証明書パスの既定値として事前入力されます
    動的 DLL 証明書 *.pfx ファイルのフルパス プロジェクトの実行・デバッグ時に生成されるアセンブリの署名に使用されます
    署名ツールのパス signtool.exe のフルパス 手順 2 で確認したパスを指定します

    07.png

6. 【開発者】デバッグ実行とパブリッシュ

設定が完了したら、実際にプロジェクトを作成し、デバッグ実行およびパブリッシュして DLL に署名が付加されることを確認します。

  1. Windows プロジェクトでワークフローを作成します。

    08.png

  2. 任意のアクティビティを配置し、デバッグ実行します。

    09.png

  3. 証明書の署名用パスワードを入力して、デバッグ実行できることを確認します。

    10.png

  4. [パブリッシュ] をクリックします。

    13.png

  5. [証明書の署名] タブを選択し、次の項目を設定して、[パブリッシュ] をクリックします。

    • 証明書: *.pfx ファイルのフルパス
      • 手順 5 で [既定の発行証明書] を設定していれば、自動的に入力されます。
    • 証明書のパスワード: *.pfx ファイルのパスワード
    • タイムスタンプ局 (任意): タイムスタンプサーバーの URL (例: http://timestamp.digicert.com)
    • アセンブリに署名: オン

    15.png

[アセンブリに署名] をオンにすることで、パッケージに含まれる DLL が署名されます。この設定はプロジェクト単位で保持されるため、プロジェクトごとに確認してください。
[タイムスタンプ局] を設定しておくと、証明書の有効期限が切れた後も、署名時点で有効だったことを証明できます。長期運用するプロジェクトでは設定を推奨します。

7. 【開発者】署名の確認

デバッグ実行時の DLL に、正しく署名が付与されていることを確認します。

  1. エクスプローラーにて {プロジェクトディレクトリ}\.local_signed\install を開き、各 DLL のプロパティを参照します。

    11.png

  2. [デジタル署名] タブにて手順1で作成した証明書によって署名されていることを確認します。

    12.png

パブリッシュされたパッケージ内の DLL でも、正しく署名が付与されていることを確認します。

  1. 出力された *.nupkg ファイルをコピーし、拡張子を .zip に変更して解凍します。

  2. 解凍したフォルダー内の lib 配下にある DLL ファイルを探します。

  3. DLL ファイルを右クリックし、[プロパティ] を開きます。

  4. [デジタル署名] タブが表示されていることを確認します。

  5. 署名者名 (例: UiPath Code Signing) が、手順 1 で作成した証明書のサブジェクトと一致していることを確認します。

    16.png

  6. [詳細] をクリックし、「このデジタル署名は問題ありません。」と表示されることを確認します。

    17.png

[デジタル署名] タブ自体が表示されない場合は、署名が行われていません。手順 5 の設定、または手順 6 の [アセンブリに署名] がオンになっているかを再確認してください。

なお NuGet パッケージを実行端末 (UiPath Robot) にデプロイして実行する際には、%UserProfile%\.nuget\packages\<プロジェクト名>\<バージョン> 配下に DLL などが展開されます。

18.png

8. 【管理者】公開鍵証明書の信頼

次にシステム管理者が各実行端末で公開鍵証明書 (.cer) を信頼させます。

  1. 手順 1 でエクスポートした公開鍵 (*.cer) を用意します。
  2. 実行端末に .cer ファイルを配布します。
  3. 自己署名証明書を使用する場合は、対象端末で .cer ファイルをダブルクリックし、証明書のインポート ウィザードを起動します。保存場所は [ローカル コンピューター]、証明書ストアは [信頼されたルート証明機関] を選択します。
  4. 社内 CA または公的 CA が発行した証明書を使用する場合は、署名証明書ではなく CA のルート証明書(必要に応じて中間 CA 証明書)を信頼させます。

PFX を実行・検証端末へ配布またはインポートする必要はありません。自己署名証明書では、その証明書自体を信頼されたルート証明機関に登録します。組織の証明書運用ポリシーに従ってください。

9. 【管理者】WDAC ポリシーの更新

最後に、WDAC ポリシーで コード署名用証明書の公開鍵を署名者ルールとして許可 します。

  1. WDAC ポリシーに、この証明書を 署名者ルール として追加します。
  2. 更新したポリシーを Intune などの MDM を経由して対象端末へ配布します。
  3. 対象端末で証明書とポリシーが適用されたことを確認します。

最初は MDM の監査モード (ログ取得) でポリシーを限定されたユーザーに適用し、署名された DLL が意図した通りに実行許可されることを確認した上で、強制モード (ブロック) に切り替えて対象ユーザーに適用することを推奨します。
署名者ルールは一度作成すれば、以降はその証明書で署名されたすべての DLL が許可されます。ワークフローを更新・再パブリッシュするたびに WDAC ポリシーを更新する必要はありません。

運用上のポイント

証明書の有効期限管理

コード署名証明書には有効期限があります。期限切れによる影響を避けるため、次の点を運用に組み込んでください。

  • 有効期限を管理台帳等で把握し、更新期日の前に更新作業を計画する。
  • パブリッシュ時にタイムスタンプを付与しておくことで、証明書の期限が切れた後も、既に署名済みのパッケージは有効なものとして扱われます。
  • 証明書を更新した場合は、WDAC ポリシー側の署名者ルールも更新する必要があります。

秘密鍵の管理

.pfx ファイルとそのパスワードは、実質的に「組織として信頼されたコードを作れる権限」そのものです。取り扱いには注意してください。

  • .pfx ファイルは共有フォルダーに平置きせず、アクセス権を限定した場所に配置する。
  • パスワードはパスワード管理ツール等で安全に共有する。
  • 開発者の離任時には、証明書の再発行・入れ替えを検討する。

おわりに

本記事では、UiPath Studio の DLL ファイル署名機能について、その背景となる WDAC の課題から、証明書の作成・SignTool のインストール・Studio の設定・パブリッシュ・署名確認・WDAC ポリシー更新までの一連の手順を説明しました。

WDAC を導入したセキュリティ要件の厳しい環境では、これまで動的 DLL の扱いが RPA 展開の障壁となるケースがありました。DLL ファイル署名機能を利用することで、WDAC の保護レベルを維持したまま、UiPath Studio での開発・実行が可能になります。ポリシーの更新頻度も大幅に削減でき、システム管理者・開発者双方の運用負荷を下げられます。

セキュリティ要件の厳しい環境での自動化パッケージの展開にお悩みの皆さま、ぜひお試しください!


参考リンク

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?