Last updated on 2020年12月31日
どうも、エピックです。
今回はUiPathでパスワードのようなセキュアな情報を扱う場合の実装方法について共有します。
パスワード等の資格情報は文字列として直打ちするのは第三者から丸見えとなってしまい漏洩のリスクが非常に高く危険です。
UiPathではこのような危険を排除するための仕組みが備わっているので参考にしてみてください。
Secure String を利用する
UiPathで文字列を扱う場合、基本はString型を利用すると思います。
アクティビティで言えば【文字を入力】が多いかと思います。
上記の例では、変数を利用していますがその変数はどうなっているでしょうか。
確認してみましょう。
ご想像の通りでしょうが、入力する文字がそのまま記載されています。
流石にここにパスワードのような資格情報を直打ちというのはやめたほうが良さそうですね。
そこで利用するのがSecureString型になります
SecureString は、セキュリティの手段を提供する文字列型です。 これは、処理メモリ内の機密性の高い文字列をプレーンテキストとして保存しないようにしようとします。
Microsoft公式-SecureStringクラス
SecureString型はStringとはついていますが、String型とは異なるので【文字を入力】アクティビティは利用できません。
入力の際は別のアクティビティである【SecureStringで文字を入力】を利用します。
UiPath.Terminal.Activitiesパッケージを追加インストールしている場合はターミナルへのセキュアな送信方法として【キーを安全に送信】アクティビティを利用することもできます。
資格情報の取得
さて、入力の方法は述べてしまいましたが取得はどうするべきでしょうか。
方法はUiPathのロボットの形態、導入状況にもよりますが基本は下記の2つです。
- UiPath Orchestratorのアセットから取得する
- Windowsの資格情報を利用する
Orchestratorを導入しているようであれば迷わずOrchestratorのアセットを利用するのがよいのではないでしょうか。
まだ、Orchestratorを導入していない・Attendedを多様しているのであればWindowsのアカウントに依存はしますがWindowsの資格情報を利用するのが良いと思います。
1. UiPath Orchestratorのアセットから取得する
Orchestratorにはアセットと呼ばれる変数や資格情報を暗号化し保存しておく機能があります。
1つ目の方法はここから資格情報を取得する方法です。
取得は専用のアクティビティが用意されているので非常に簡単です。
利用するアクティビティは【資格情報を取得】になります。
2. Windowsの資格情報を利用する
2つめの方法はWindowsの機能として備わっている「Windows資格情報マネージャー」を利用する方法です。
UiPathはWindowsにインストールし利用していると思うので相性は最高です。
こちらも専用のアクティビティが用意されていますが、デフォルトではインストールされておらず追加でパッケージをインストールする必要があります。
インストールすると(英語ですが)【Get Secure Credential】というアクティビティが利用できるようになると思います。
RPAを導入をはじめたばかりの頃はパスワード等のログイン情報を平分でRPAへ組み込んでしまっているケースをよく目にします。
「Orchestratorを導入するまでは。。。」というようなケースでもセキュリティを担保するという点でSecureStringを利用し第三者からは見えない形で扱うことをおすすめします。
Attededの場合は資格情報マネージャーを利用する
さきほど書いたことの繰り返しですが、まだOrchestratorを導入していないと言う場合はWindowsの資格情報マネージャーを利用しましょう。
ここでは基本的な使い方を記載します。
- Windows資格情報マネージャーを立ち上げる
- Windows汎用資格情報へ登録をする
- 【Get Secure Credential】で資格情報を取得する
Windows資格情報マネージャーを立ち上げる
立ち上げる方法はいくつかありますが個人的には検索に「資格情報マネージャー」と入力するのがもっとも早いのではと思います。
Windows汎用資格情報へ登録をする
資格情報マネージャーを立ち上げたら、「汎用資格情報の追加」より資格情報を追加します。
入力項目は「インターネットまたはネットワークアドレス」「ユーザ名」「パスワード」の3つです。
一つめの「インターネットまたはネットワークアドレス」がよくわからないと思いますが、UiPathで利用する上では取得のためのキーと簡単に考えて問題ありません。
なので、上の例では "TestCredential"というキーを検索した場合、ユーザとして"Epic"を取得しパスワードとして"●●●●"(本当は1234)を取得します。
【Get Secure Credential】で資格情報を取得する
すでに UiPath.Credentials.Activities はインストール済みの想定で進めますので、まだの場合は上のほうを参考にパッケージを追加してください。
Windows資格情報より取得するアクティビティは【Get Secure Credential】になります。
今回はわかりやすいようにメッセージボックスも追加しておきました。
【Get Secure Credential】のプロパティは次のようになっています。
"Target"に先程「インターネットまたはネットワークアドレス」に指定した値を入力します。
取得は、変数:パスワード(SecureString) ユーザ名(String)で取得しています。
一応メッセージボックスの値も記載をしておきますが下記のようになります。
"ユーザ名:" + ユーザ名 + Environment.NewLine
+ "パスワード:" + new System.Net.NetworkCredential(string.Empty, パスワード).Password
実行すると次のようにしっかりと資格情報を取得できていることがわかります。
【おまけ】String ⇔ Secure String 間の変換
SecureString → String
new System.Net.NetworkCredential(string.Empty, <ここにSecureString>).Password
String → SecureString
new System.Net.NetworkCredential("", <ここにString>).SecurePassword
ひとこと
はい。というわけで今回はSecureStringについて・資格情報のUiPathでの
扱い方についてでした。
さらっとかきましたがRPA導入においてはかなり重要なことだと考えています。
少しでもなにかの参考にしていただければ幸いです。
質問等はコメント欄にて受け付けております。
今回も最後までお読みいただきありがとうございました。
では。