はじめに
この投稿はRPA ツールの「UiPath」で、フローの実行時にパスワード制限をかける という投稿です。
UiPathのコミュニティ「UiPath Friends」が企画する「UiPathブログ発信チャレンジ2021サマー」の 16日目の投稿でもあります。
企画の内容は こちら 。カレンダーのURLは こちら です。
WinActorのシナリオパスワード
WinActorには「シナリオパスワード」という機能があり、ロボット処理の「閲覧・編集・実行」操作を制限することが出来ます。
作成したシナリオファイルに、シナリオパスワードを設定することで、編集・閲覧・実行の操作をすること
が制限できます。このシナリオパスワードは、「シナリオ編集パスワード」「シナリオ閲覧パスワード」
「シナリオ実行パスワード」などセキュリティのレベルごとに設定することも可能です。シナリオには機密
情報が含まれる場合もあるため、適切なパスワードを設定することで、機密情報を開示する範囲を限定する
ことができます。
参考)https://www.scsk.jp/sp/winactor/feature/security/
これをUiPathで実現してみます。
閲覧パスワード
UiPathでは、作成したフローはStudio上でパブリッシュすることで「.nupkg」というファイルに出力され、閲覧はできなくなります。ただし、この「.nupkg」ファイルは、拡張子をZipに変えて展開すると中身を見ることが出来るので、一手間加えれば見ることが出来ます。
その他に閲覧を制限する方法はないので、残念ながら現状では UiPathでは閲覧パスワードの制限をかけることは出来ない となります。
ただ、閲覧できないことによるデメリットもありそうなので、逆に「制限がなくても良い」と思います。
例)エラーで動かなくなった。担当者不在で、閲覧パスワードも分からないし、修正も出来ないぃ!
編集パスワード
UiPathでは、パブリッシュ時に「証明書」を付けることで、所有者以外の人が改変していないコードであることを保証できます。
UiRobot側で「署名の確認」を強制し、信頼できる作成者を設定に追加することで、正規のコードであることを確認させる仕組みがありますが、実行ロボット側にも設定が必要であり、プロジェクトに署名なしの依存関係が含まれていると、依存関係の解決が妨げられる場合があり、簡単には導入できません。
実行パスワード
UiPathでは、作成したフローの実行を制限する機能はありません。なので独自に実装してみます。
機能的には以下のようなものを作成します。
- 1)実行時にパスワードを入力させる(設定ファイルの値と照合する)
- 2)実行マシンの名前が想定通りかをチェックする(設定ファイルの値と照合する)
ただし、コードを編集して「パスワード照合処理」を除去すれば突破できますし、ロジックを理解して設定値を変えれば突破できるため、完全な制限ではありません。(パフォーマンス:みせかけ的な機能実装です)
1)実行時にパスワードを入力させる
実行時に入力ダイアログを表示し、パスワードを入力してもらいます。
入力されたパスワードと設定ファイルの値を比較して、一致しなければ「例外をスロー」して処理終了します。
設定ファイルにパスワードをそのまま書いても良いですが、パスワードがそのまま設定ファイルに書かれているのではつまらないので、、設定ファイルには「パスワードのハッシュ値」を記載し、入力パスワードのハッシュ値と比較します。(ハッシュにすると元の文字列を隠蔽できます)
ハッシュ値を求めるために、Cryptographyアクティビティを使用しています。
設定ファイルに書くハッシュ値は、試しにダイアログで値を入力してみて、ログに出力されたハッシュ値を設定すればいいと思います。
確認しやすいように、以下にxaml形式でアップしました。
2)実行マシンの名前が想定通りかをチェックする
環境変数から実行マシン名を取得し、設定ファイルの値を比較して、一致しなければ「例外をスロー」して処理終了します。
こちらも設定ファイルには「ハッシュ値」を設定しておきます。
確認しやすいように、以下にxaml形式でアップしました。
おわりに
いかがでしたでしょうか?UiPathでパスワード制限をする際に、参考になれば幸いです。
この記事が参考になったら、 LGTMをお願いします。閲覧ありがとうございました。