UiPath Orchestrator資格情報ストアの機能概要と利用手順

## はじめに
- 本記事ではUiPath Orchestratorの [資格情報ストア](https://docs.uipath.com/ja/orchestrator/standalone/2023.4/user-guide/about-credential-stores) の機能概要および利用手順について説明します。
- UiPath Automation CloudまたはオンプレミスOrchestrator v2023.4を前提としております。

## 資格情報ストアとは？
- 資格情報ストア機能を利用することにより、Orchestratorに保存される機密データ(Unattended Robotユーザーのパスワードとクレデンシャル型アセット)をDBから分離し、エンドユーザー管理のKey Vaultサーバーに保管できるようになります。
![CredStore.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178312/0b50d4d1-5ed4-d4e6-5c49-ed24985b533a.png)
- 資格情報ストア機能はエンドユーザーのセキュリティポリシーに応じて利用を検討します。
    - 既定値(資格情報ストア無し)では機密データはOrchestratorによって予め生成された暗号化キーを使用してDBに暗号化して保存されます。Automation Cloud環境では暗号化キーおよび暗号化された機密データ本体がUiPath管理となっており、ユーザー側では完全にコントロールすることができない仕様になっています。
    - 資格情報ストア機能を利用する場合、機密データを分離してエンドユーザー管理のデータ領域(Key Vaultサーバー)に保管することができます。これによって有事の際にはユーザー側でワイプ(保安目的でのリモートからのデータ削除または無効化)できるようになります。
- なおAutomation Cloud(EnterpriseプランAdvancedティア)では暗号化キーそのものをユーザー側で管理する機能(カスタマーマネージドキー)も利用可能ですが、本文書では取り扱いません。詳細は [Webガイド](https://docs.uipath.com/ja/automation-cloud/automation-cloud/latest/admin-guide/encryption
) をご参照ください。

## 対応するKey Vaultサーバー
- Automation Cloudは下記表のすべてのKey Vaultサーバーに対応していますが、オンプレOrchestratorはバージョンごとに異なります。

|バージョン＼Key Vaultサーバー|CyberArk CCP|Azure Key Vault|HashiCorp Vault|BeyondTrust Password Safe|Thycotic Secret Server|AWS Secrets Manager|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|~v2021.10|〇|〇|×|×|×|×|
|v2022.4|〇|〇|〇|〇|×|×|
|v2022.10|〇|〇|〇|〇|〇|×|
|Automation Cloud / v2023.4~|〇|〇|〇|〇|〇|〇|

## 資格情報ストア利用手順
資格情報ストアのKey VaultサーバーとしてAzure Key VaultとAWS Secrets Managerを利用する手順についてそれぞれ説明します。

### プラグイン有効化
- Automation Cloudではこの手順は不要です。
- オンプレミスOrchestratorでは各Key Vaultサーバーに接続するためのプラグインを有効化するように設定ファイル(`UiPath.Orchestrator.dll.config`)を変更します。下記はAzure Key VaultとAWS Secrets Managerを利用する場合の設定となりますが、使用するプラグインに応じて変更します。詳細は[Webガイド](https://docs.uipath.com/ja/orchestrator/standalone/2023.4/installation-guide/uipath-orchestrator-dll-config#password-vault)を参照してください。
```
<add key="Plugins.SecureStores" value="UiPath.Orchestrator.AzureKeyVault.SecureStore.dll;UiPath.Orchestrator.SecureStore.AWSSecretsManager.dll" />
```

### Azure Key Vaultとの連携手順
Azure Key Vaultを利用するには、Azureポータルにログインして必要なリソースを作成します。
1. Azureポータル > Azure Active Directory > アプリの登録 > [新規登録] をクリックします。
1. アプリケーションを登録します。
![Azure01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178312/a41a1093-ef1c-6e79-cd84-ca9a9f799efb.png)
1. **アプリケーション(クライアント)ID** と **ディレクトリ(テナント)ID** をメモします。
![Azure02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178312/6507946b-7689-2cce-8643-a3fd64a072c0.png)
1. 証明書とシークレットをクリックし、新しいクライアントシークレットを作成します。
1. **クライアントシークレット** をメモします。
![Azure03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178312/f3677d64-a328-3a38-42af-bb622289742d.png)
1. リソースグループを作成します。
1. キーコンテナー サービス画面にてキーコンテナーを作成します。先ほど作成したリソースグループを選択し、Key Vault名を入力し、地域を選択します。その他は既定値のまま [次へ] をクリックします。
![Azure04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178312/77098425-b8ab-9b65-3d40-4e8504322375.png)
1. アクセス構成画面にてアクセス許可モデルとして「コンテナ―のアクセスポリシー」を選択し、アクセスポリシー > [作成] をクリックします。
1. テンプレートから構成する > **シークレットの管理** を選択し、 [次へ] をクリックします。
1. プリンシパルとして先ほど作成したアプリケーションを選択し、[次へ] をクリックします。以降は既定値のまま [作成] をクリックします。
![Azure05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178312/9eb2cbfb-6d18-08aa-d533-dc13c8b53fa3.png)
1. キーコンテナー作成画面に戻り [確認および作成] をクリックし、検証画面にて [作成] をクリックします。
1. キーコンテナー作成後、**コンテナーのURI** をメモします。
![Azure06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178312/e237e85d-bf0d-4f11-63d7-e8314bd37d59.png)

1. ネットワーク設定にて「特定の仮想ネットワークと IP アドレスからのパブリック アクセスを許可する」を選択し、Orchestratorの接続IPアドレスを指定します。
    - Automation Cloudの場合は [Orchestrator の送信 IP アドレス](https://docs.uipath.com/ja/orchestrator/automation-cloud/latest/user-guide/orchestrator-outbound-ip-addresses) を参照します。Enterpriseユーザーの日本リージョンは `20.210.80.72/30` です。
    - 更に [自分自身のグローバルIP](https://www.cman.jp/network/support/go_access.cgi) も確認して追加します。
![Azure07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178312/fbd61d26-a0c8-dbd0-642a-99aa6df887f8.png)

次にOrchestrator管理画面で資格情報ストアの設定を行います。
1. テナント設定 > 資格情報ストア > [資格情報ストアを追加] をクリックします。
1. 種類として **AzureKeyVault** を選択します。適切な名前を指定し、Azureポータルでの各リソース作成時のメモを元にKey Vault URI・ディレクトリID・クライアントID・クライアントシークレットを指定し、[作成] をクリックします。
![Azure08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178312/052448a9-e6f4-ee4c-c83c-6555ed610332.png)

動作確認のために、Azure Key VaultにUnattended Robotユーザーのパスワードが保存されるか検証します。
1. ユーザー設定のロールの割り当てにてUnattended Robotのパスワードを設定します。資格情報ストアで Azure Key Vault が指定されていることを確認します。
![Azure10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178312/d84cd558-fc85-b604-d662-0a7a5e3afd59.png)
1. Azureポータル > キーコンテナー > シークレット画面にて新しくシークレットが追加されていることを確認します。
![Azure09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178312/38509744-7abd-be75-05cf-f59cdf1f2926.png)
1. Orchestrator管理画面に戻り、Unattended Robotのジョブ実行し、成功することを確認します。

- 参考: [Azure Key Vault との連携](https://docs.uipath.com/ja/orchestrator/standalone/2023.4/user-guide/azure-key-vault-integration)

### AWS Secrets Managerとの連携手順
AWS Secrets Managerを利用するには、AWS管理コンソールにログインして必要なリソースを作成します。
1. AWS管理コンソール > IAM > ユーザー > [ユーザーを追加] をクリックし、IAMユーザーを作成します。
![AWS01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178312/f64cf070-8373-26f0-b043-1a9e8a32dd8c.png)
1. Secrets Managerに読み書きを行うため `SecretsManagerReadWrite` IAMポリシーを割り当てます。
![AWS02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178312/17f0298b-3cc1-9d29-7ed4-3cc3bd7ab2e4.png)
1. 更に接続元IPアドレスでアクセス制御するためにインラインポリシーを追加し、`aws:SourceIp` にてOrchestratorの接続IPアドレスを指定します。
![AWS03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178312/7f657124-0cbf-e948-d533-48c2a0c18801.png)
    - Automation Cloudの場合は [Orchestrator の送信 IP アドレス](https://docs.uipath.com/ja/orchestrator/automation-cloud/latest/user-guide/orchestrator-outbound-ip-addresses) を参照します。Enterpriseユーザーの日本リージョンは `20.210.80.72/30` です。
        ```
        {
            "Version": "2012-10-17",
            "Statement": [
                {
                    "Effect": "Deny",
                    "Action": "*",
                    "Resource": "*",
                    "Condition": {
                        "NotIpAddress": {
                            "aws:SourceIp": [
                                "20.210.80.72/30"
                            ]
                        }
                    }
                }
            ]
        }
        ```

1. 作成されたIAMユーザー > セキュリティ認証情報 > [アクセスキーを作成] をクリックします。
![AWS05a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178312/4b3fddfc-d0de-16e1-3db7-5d47a67fbbb6.png)
1. 作成されたアクセスキーとシークレットアクセスキーをメモします。

次にOrchestrator管理画面で資格情報ストアの設定を行います。
1. テナント設定 > 資格情報ストア > [資格情報ストアを追加] をクリックします。
1. 種類として **AWS Secrets Manager** を選択します。適切な名前を指定し、先ほどメモしたIAMアクセスキー・シークレットキーおよびリージョン(東京の場合は `ap-northeast-1`)を指定します。
![AWS06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178312/4b98ddf5-e31b-09f2-eab6-a225a8272c13.png)

動作確認のために、AWS Secrets Managerにクレデンシャル型アセットが保存されるか検証します。
1. Orchestrator管理画面にて、クレデンシャル型アセットを作成します。この時、資格情報ストアとしてAWS Secrets Managerを選択します。
![AWS07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178312/0efea83c-4428-ee80-37d9-209c4c2ef981.png)
1. AWS管理コンソール > Secrets Managerにて新しくシークレットが作成されていることを確認します。
![AWS08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178312/ae05832f-f024-4b49-22c9-0f9454fedcfa.png)
1. 検証用ワークフローを作成し、Get Credential アクティビティにて正常にアセット値を取得できることを確認します。
- 参考: [AWS Secrets Manager との連携](https://docs.uipath.com/ja/orchestrator/standalone/2023.4/user-guide/aws-secrets-manager-integration)

## おわりに
- 本記事ではUiPath Orchestratorの資格情報ストア機能を利用することによって、ユーザー管理のKey Vaultサーバーに機密データを保管する手順について説明をしました。より安全にUiPath製品・サービスを利用するために是非この機能をご活用ください！