Last updated on 2022年8月11日
自動化をしているとサービスへのログインなどで資格情報を扱いたい場合ってありますよね、
ただパスワード等の資格情報は文字列として直打ちするのは漏洩のリスクが非常に高く危険です。
今回はUiPathでパスワードのようなセキュアな情報を扱う場合の実装方法について紹介したいと思います。
UiPathではこのような危険を排除するための仕組みが備わっているので参考にしてみてください。
Contents
資格情報の管理方法
UiPathにおける資格情報の管理方法は、ロボットタイプにより異なります。
次の2つの管理方法があります。
- UiPath Orchestratorのアセットを利用し管理する
- Windows資格情報マネージャーを利用し管理する
(1)UiPath Orchestratorのアセットを利用し管理する
Orchestratorを導入しており、Unatteded Robotを利用するのであればOrchestratorのアセットを利用し資格情報の管理を行うことができます。
Orchestratorにはアセットと呼ばれる変数や資格情報を暗号化し保存しておく機能があります。
ここに格納した情報は、ロボットの実行時や実行中専用のアクティビティを利用することで取得することができます。
アセットからの資格情報の取得には[資格情報を取得]アクティビティを利用します。
(2)WIndows資格情報マネージャーを利用し管理する
2つめの方法はWindowsの機能として備わっている「Windows資格情報マネージャー」を利用する方法です。
Orchestartor を利用しないAttendedロボットによる自動化ではこの方法が適しています。
こちらも専用のアクティビティが用意されていますが、デフォルトではインストールされていませんので追加でパッケージをインストールする必要があります。
資格情報の取得には追加でインストールしたパッケージに含まれる[Get secure credential]を利用します。
Attededの場合は資格情報マネージャーを利用する
Attended Robotを利用している場合は、Windowsの資格情報マネージャーを利用しましょう。
ここでは基本的な使い方を記載します。
- Windows資格情報マネージャーを立ち上げる
- Windows汎用資格情報へ登録をする
- 【Get Secure Credential】で資格情報を取得する
(1)Windows資格情報マネージャーを立ち上げる
Windowsは検索に「資格情報マネージャー」と入力します。
(2)Windows汎用資格情報へ登録をする
資格情報マネージャーを立ち上げたら、「汎用資格情報の追加」より資格情報を追加します。
入力項目は「インターネットまたはネットワークアドレス」「ユーザ名」「パスワード」の3つです。
一つめの「インターネットまたはネットワークアドレス」は実際にこの資格情報が用いられる先を示していますが、UiPathでは資格情報取得のキーとして用いられます。
そのため、分かりやすい意味のある名前をつけるようにします。
上の例では “TestCredential”というキーを検索した場合、ユーザとして”Epic”を取得しパスワードとして”●●●●”(本当は1234)を取得します。
(3)【Get Secure Credential】で資格情報を取得する
Windows資格情報より取得するアクティビティは【Get Secure Credential】になります。
UiPath.Credentials.Activities のインストールが必要となりますので、まだインストールしていない場合はインストールを行ってください。
次はサンプルのフローとなります。
今回はわかりやすいようにメッセージボックスも追加しておきました。
【Get Secure Credential】のプロパティは次のようになっています。
“Target”に先程「インターネットまたはネットワークアドレス」に指定した値を入力します。
取得は、変数:パスワード(SecureString) ユーザ名(String)で取得しています。
メッセージボックスで利用する際の例を記載します。
"ユーザ名:" + ユーザ名 + Environment.NewLine
+ "パスワード:" + new System.Net.NetworkCredential(string.Empty, パスワード).Password
実行すると次のようにしっかりと資格情報を取得できていることがわかります。
入力にはSecureStringを利用する
UiPathで文字入力を行う場合、【文字を入力】アクティビティを利用するのが一般的です。
これはString型の文字を入力するアクティビティになります。
上の例では、[入力する文字]という変数を利用していますがその値はどうなっているでしょうか。
変数パネルを角にすると入力する文字がそのまま記載されています。
流石にここにパスワードのような資格情報を書くのはやめたほうが良さそうですね。
そこで利用するのが[SecureStringで文字を入力]アクティビティになります。
これはSecureString型の文字を入力するアクティビティになります。
SecureString は、セキュリティの手段を提供する文字列型です。 これは、処理メモリ内の機密性の高い文字列をプレーンテキストとして保存しないようにしようとします。
Microsoft公式-SecureStringクラス
SecureString型は”String”とはついていますが、String型とは異なるのでデータ型には気をつけてください。
また、SecureString型の中身はワークフロー上ではマスクされ確認できないようになっています。
とはいえ、メモ帳等どこかへ書き込み処理をおこなった場合は確認ができてしまうので扱いには注意してください。
おまけ:String ⇔ Secure String 間の変換
SecureString → String
new System.Net.NetworkCredential(string.Empty, <ここにSecureString>).Password
String → SecureString
new System.Net.NetworkCredential("", <ここにString>).SecurePassword
おまけ:ターミナルへの資格情報の送信
UiPath.Terminal.Activitiesパッケージを追加インストールしている場合はターミナルへのセキュアな送信方法として【キーを安全に送信】アクティビティを利用することもできます。
最後に
UiPathでの資格情報の管理、入力の方法についてでした。
Attendedロボットの場合、追加でパッケージのインストールが必要となるます。資格情報の取り扱いに気をつけつつ自動化を進めましょう。
質問等はコメント欄にて受け付けております。
今回も最後までお読みいただきありがとうございました。
では。