Power Automate for desktopの中でパスワードを秘匿して使う

（この記事は2022年3月27日に書きました）
# １．重要な情報を入れるための金庫の必要性
　RPAを作成・運用するときに注意したいのは、アプリやクラウドサービスへのログイン情報です。
　RPAの種類を「サーバー型」「デスクトップ型」と分類した場合、「サーバー型」ではロボットの一括管理やセキュリティ管理が備わっていますが、「デスクトップ型」では特にセキュリティ面をルーズにされがちです。

　「サーバー型」RPAであるAutomation Anywhereでは、暗号化されたデータはControl RoomデータベースのCredential Vaultに保管され、ロックされています。開発者もロボットの実行者もキーを使ってデータを呼び出すことができますが、メモリにもログにも記録されず、全体としてセキュアに取り扱われます。

　Power Automate for desktopは「デスクトップ型」のRPAですが、Power AutomateやAzureと連携することでセキュアに使用することが可能です。以下に、そのやり方を試してみます。

# ２．「直接暗号化されたテキストの入力」を使う
　Power Automate for desktopを使ってWebページにログインする場合、以下のようなやり方があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/c8e52403-792b-aa7d-0c98-9344835b229f.png)

　独学でRPAを開始した人にはありがちなことですが、IDとパスワードが露出しています。IDはフローの実行中に入力値が見えてしまうので隠す必要があるのかと言われるかもしれませんが、隠しておく方がよいと思います。この画面がキャプチャされてしまった場合、IDとパスワードを漏洩させてしまう恐れがあります。それを避けるため、テキスト欄に **「直接暗号化されたテキストの入力」** という選択肢を使うことができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/a24647b9-7b90-2b26-3616-bd88f58ac985.png)

　フローをキャプチャされても、ID、パスワードは「●●●」で表示されるので安全です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/23139732-d1a2-c474-4962-a9620ca0bdf1.png)

　デスクトップフローの実行は、Power Automateのクラウド側にログが記録されます。通常のテキストであれば、送信された値がログに記録されますが、 **「暗号化されたテキストの入力」** を使用すると、以下のように値が記録されません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/e121b7d7-2fde-061d-199c-6594977c5057.png)

# ３．「入出力変数」で「機密情報」として扱う
　Power Automate for desktopで、IDとパスワードを入出力変数に設定します。
　変数ペインの **「入出力変数」** で（＋）を押して「入力」を選択し、IDとパスワードを受け取るようにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/a6673fe0-1c08-704c-29c4-a3aaaccb46e3.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/7964be0d-346c-a49c-b90a-205d70739920.png)
　受け取ったIDとパスワードをログインに使うように変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/44cf3155-88d7-286c-de2c-13f43845cd66.png)
　全体は、以下のようなフローになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/7066923b-4d22-da82-231f-c77a5a1abc45.png)
　これを実行させると、以下のようなダイアログが表示されます。実行する都度IDとパスワードを手打ちすることになり、フローの中に記述しないで済みます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/a5cd3f97-7045-b291-2c08-3bd0e99f1625.png)

# ４．Azure Key Vaultを使用したパスワード管理
　表面上IDとパスワードは表示・記録されなくなりましたが、開発者あるいは実行者はパスワードを知っている必要がありますし、変更があった場合は、個別にフローを修正していかなければなりません。一元的に管理するには、 **Azure Key Vault** を使用します。

## Power Automate for desktopの修正
　先ほどの３で作成したフローをそのまま使用します。

※ここからは、Power Automateのプレミアム・コネクタが使えるアカウントと、Azureのアカウントが必要になります。

## Azure Key Vaultの作成
　Azure Potalにログインし、MarketplaceからKey Vaultを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/53d7b130-846b-1343-0561-9272f5436978.png)
　名前は他と重複しないものを入力し、地域はJapanEastを選択し、確認、作成を行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/02e79a7b-d330-9436-7a3d-4029eb6c5106.png)

　デプロイが完了したら、リソースに移動し、 **キー** と **シークレット** を作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/7002fee8-c964-f87a-b2a8-6f225647ae34.png)

最初にキーを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/0b500e29-e30a-f1d6-3a72-37afa0273a41.png)
 次にシークレットでUserIDとPasswordを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/20859a81-a40c-74de-d850-48f00b7d555f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/05a0088f-0764-519b-1917-de4a6153b0e7.png)
　作成されたキーコンテナ名とシークレット名を使用して、Power Automateのインスタントフローを作成していきます。

## Power Automateの接続を作成
　まず、最初に接続を作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/9ffb0e31-a94d-633b-441e-c3327f1d551f.png)
　Valut nameには、キーコンテナ名を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/5d99bbc6-5b74-bb7c-7ecf-6b09c0ea6988.png)
　アカウントを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/bb30958a-f90e-97a0-a34b-e6c2b347f24e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/d5144184-eb97-1ef2-6338-5c34e8f650a5.png)

## Power Automateのフローを作成
 インスタントクラウドフローで作成していきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/d8248aef-c34c-fee4-5cb0-127a41dfac65.png)
　アクションで、「シークレットの取得」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/e970196a-cd58-81a2-c902-c74cb3bef15f.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/3ecc8d7b-4720-57c4-6098-bdbfc310671a.png)

　このIDとパスワードのアクションでは、三点リーダーから設定を開き、「セキュリティで保護された入力」と「セキュリティで保護された出力」のチェックをオンにしておく必要があります。このチェックを入れないと、クラウドフローの実行ログにIDとパスワードが表示されてしまいます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/6f91f977-aa72-c3af-0e84-a16f374380e4.png)

　最後にデスクトップフローを選択し、UserIDとPasswordに先ほど取得したシークレットの値を入れるようにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/978f0387-c455-2c06-5af6-3f8a836f2094.png)

## フローの実行とログ
　このフローを実行させると、デスクトップフローが動き出し、無事にIDとパスワードが入力されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/ba6ee475-1560-f7a9-6caf-6d8e23725ae7.png)

　デスクトップフローの実行ログには、以下のようにIDとパスワードが記載されていません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/0a822e9d-d098-c82f-1497-808d71a3121e.png)

　また、クラウドフローの実行ログにも、表示されません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/d1da4130-f7cf-8422-b701-22204fa9f44d.png)