- 基本情報
- ベスト プラクティス
- テナント
- テナント コンテキストについて
- テナント内でリソースを検索する
- 監査
- 資格情報ストアを管理する
- 資格情報ストアを連携する
- Orchestrator Credentials Proxy
- 資格情報プロキシを管理する
- 設定
- Cloud ロボット
- フォルダー コンテキスト
- 自動化
- プロセス
- ジョブ
- Apps (アプリ)
- トリガー
- ログ
- 監視
- キュー
- アセット
- ストレージ バケット
- Test Suite - Orchestrator
- リソース カタログ サービス
- 認証
- Integrations
- トラブルシューティング
Orchestrator Credentials Proxy
Orchestrator に独自の資格情報ストアを追加することで、接続データのセキュリティを独自に制御できます。
そのためには、必要な資格情報ストア プラグインを .dll ファイルの形式で、Orchestrator の Credentials Proxy Web サービスに読み込みます。インストール キットには UiPath がサポートするすべてのプラグインが含まれていますが、独自のプラグイン .dll ファイルを開発して読み込むこともできます。その後、プラグインはプロキシ経由でサービスによって Orchestrator に対して利用可能になります。プロキシは、パブリック URL とプロキシで生成されたシークレット キーに基づいて Orchestrator で作成されます。
Orchestrator Credentials Proxy は、UiPath が提供する .msi インストーラー、または Docker イメージを使用してインストールできます。
前提条件
プロキシを使用するには以下が必要です。
- ASP.NET Core バージョン 3.1 または 6.0.x
- バージョン 8.0 以上の IIS
-
Windows の次の機能をインストールする必要があります。
- IIS-DefaultDocument
- IIS-HttpErrors
- IIS-StaticContent
- IIS-RequestFiltering
- IIS-URLAuthorization
- IIS-WindowsAuthentication
- IIS-ASPNET45
- IIS-ISAPIExtensions
- IIS-ISAPIFilter
- IIS-WebSockets
- IIS-ApplicationInit
- IIS-ManagementConsole
ハードウェアおよびソフトウェアの要件
ハードウェア要件
IIS が搭載されている Windows Server でプロキシを実行するための最小要件は、以下のとおりです。
CPU コア |
RAM |
---|---|
2 |
4 GB |
ソフトウェア要件
プロキシのインストールには、次のバージョンの Windows Server が必要です。
- 2012 R2
- 2016
- 2019
- 2022 年
インストールの手順
インストールを実行するには、以下の手順に従います。
予備情報
Orchestrator Credentials Proxy の編集可能な設定はすべて、appsettings.json ファイルで利用できます。初期の設定では以下のパラメーターが重要です。
-
Jwt:Keys
- (最初は空) プロキシの認証を設定するために、この文字列の配列が使用されます。プロキシの作成プロセスで使用するシークレット キーはこの配列で構成され、Orchestrator がプロキシからデータを正常に取得できるようになります。無効な値は無視されます。有効な値が見つからなかった場合、プロキシは起動しません。シークレット キーは Base64 形式である必要があり、以下の PowerShell スクリプトのいずれかを使用して生成できます。
$bytes = [System.Security.Cryptography.RandomNumberGenerator]::GetBytes(64) $jwtSigningKey = [Convert]::ToBase64String($bytes); Write-Host $jwtSigningKey
$bytes = [System.Security.Cryptography.RandomNumberGenerator]::GetBytes(64) $jwtSigningKey = [Convert]::ToBase64String($bytes); Write-Host $jwtSigningKey
SeccureRandom
を使用して生成し、Base64 文字列に変換します。
[Byte[]] $bytes = 1..64
$rng = New-Object System.Security.Cryptography.RNGCryptoServiceProvider
$rng.GetBytes($bytes)
$jwtSigningKey = [Convert]::ToBase64String($bytes);
Write-Host $jwtSigningKey
[Byte[]] $bytes = 1..64
$rng = New-Object System.Security.Cryptography.RNGCryptoServiceProvider
$rng.GetBytes($bytes)
$jwtSigningKey = [Convert]::ToBase64String($bytes);
Write-Host $jwtSigningKey
appSettings:Plugins.SecureStores
- (最初は Orchestrator で利用可能な既定の資格情報ストアに設定) これは、プロキシによる Secure Store の使用を有効化するために、ディスク (path/plugins
) から読み込むべき .dll アセンブリを指定する目的で使用される CSV 文字列です。無効なアセンブリをリストに追加してもスタートアップは破損しませんが、デプロイしようとするとログのエラーが発生します。appSettings:SigningCredentialSettings:FileLocation:SigningCredential:FilePath
、appSettings:SigningCredentialSettings:FileLocation:SigningCredential:Password
- (最初は非表示)Jwt:Keys
およびSecureStoreConfigurations:Context
パラメーターを暗号化するために使用されます。これは、署名証明書へのファイル パスを表します。appSettings:SigningCredentialSettings:StoreLocation:Name
、appSettings:SigningCredentialSettings:StoreLocation:Location
、appSettings:SigningCredentialSettings:StoreLocation:NameType
- (最初は非表示)Jwt:Keys
およびSecureStoreConfigurations:Context
パラメーターを暗号化するために使用されます。
Jwt:Keys
パラメーターを暗号化する
appsettings.json
ファイルの Jwt:Keys
および SecureStoreConfigurations:Context
パラメーターを暗号化します。
UiPath.ConfigProtector.exe
v1.0.9 以上が必要です。
Docker イメージをセットアップして実行する
Docker を使用して Orchestrator Credentials Proxy を実行するには、以下の手順に従います。
C:\Program Files\UiPath\CredentialsProxy\plugins
フォルダーに追加することです。
接続状態のプロキシは特別な設定を必要としないため、以降の手順は非接続のプロキシにのみ適用されます。
appsettings.Production.json
(C:\Program Files\UiPath\OrchestratorCredentialsProxy\appsettings.Production.json
) で指定する必要があります。
AppSettings
> SecureStoreConfigurations
セクションで編集する必要があるフィールドです。
-
Key
- 設定の識別子キーです。 -
Type
-appsettings.json
でPlugins.SecureStores
パラメーターを使用して設定された .dll ファイルで識別される資格情報コンテナーの種類です (以下のサンプルを参照)。 -
Context
- Secure Store の実装に関連する接続情報です。
設定ファイルを編集したら、IIS からサービスを再起動する必要があります。
appsettings.Production.json
に追加する必要があるサンプルです。追加しないと、サービスは起動されません。
資格情報ストアの種類に基づいて適切なサンプルを選択するか、このページの最後のサンプルを使用して複数の資格情報ストアを追加します。
AWS Secrets Manager/AWS Secrets Manager (読み取り専用)
"SecureStoreConfigurations": [
{
"Key": "<MyAwsStore>",
"Type": "AWS Secrets Manager" / "AWS Secrets Manager (read only)",
"Context": {
"UseDefaultCredentials": "true",
"AccessKey": "<AccessKey>",
"SecretKey": "<SecretKey>",
"Region": "<SelectedRegion>"
}
},
]
"SecureStoreConfigurations": [
{
"Key": "<MyAwsStore>",
"Type": "AWS Secrets Manager" / "AWS Secrets Manager (read only)",
"Context": {
"UseDefaultCredentials": "true",
"AccessKey": "<AccessKey>",
"SecretKey": "<SecretKey>",
"Region": "<SelectedRegion>"
}
},
]
Azure Key Vault (読み取り専用)
"SecureStoreConfigurations": [
{
"Key": "<MyAzureStore>",
"Type": "AzureKeyVault (read only)",
"Context": {
"KeyVaultUri": "<KeyVaultUri>",
"DirectoryId": "<DirectoryId>",
"ClientId": "<ClientId>",
"ClientSecret": "<ClientSecret>"
}
},
]
"SecureStoreConfigurations": [
{
"Key": "<MyAzureStore>",
"Type": "AzureKeyVault (read only)",
"Context": {
"KeyVaultUri": "<KeyVaultUri>",
"DirectoryId": "<DirectoryId>",
"ClientId": "<ClientId>",
"ClientSecret": "<ClientSecret>"
}
},
]
Azure Key Vault (読み取り/書き込み) はサポートされていません。
BeyondTrust Password Safe - Managed Accounts
"SecureStoreConfigurations": [
{
"Key": "<MyBeyondTrustManagedAccountsSafe>",
"Type": "BeyondTrust Password Safe - Managed Accounts",
"Context": {
"Hostname": "<HostName>",
"APIRegistrationKey": "<ApiRegistrationKey>",
"APIRunAsUsername": "<Username>",
"DefaultManagedSystemName": "", // can be empty or a string
"SystemAccountDelimiter": "/", // default account delimiter is "/", but it can be changed
"ManagedAccountType": "<ManagedAccountType>" // expected value is one of "system", "domainlinked", "database", "cloud", "application"
}
},
]
"SecureStoreConfigurations": [
{
"Key": "<MyBeyondTrustManagedAccountsSafe>",
"Type": "BeyondTrust Password Safe - Managed Accounts",
"Context": {
"Hostname": "<HostName>",
"APIRegistrationKey": "<ApiRegistrationKey>",
"APIRunAsUsername": "<Username>",
"DefaultManagedSystemName": "", // can be empty or a string
"SystemAccountDelimiter": "/", // default account delimiter is "/", but it can be changed
"ManagedAccountType": "<ManagedAccountType>" // expected value is one of "system", "domainlinked", "database", "cloud", "application"
}
},
]
BeyondTrust Password Safe - Team Passwords
"SecureStoreConfigurations": [
{
"Key": "<MyBeyondTrustTeamPasswordSafe>",
"Type": "BeyondTrust Password Safe - Team Passwords",
"Context": {
"Hostname": "<HostName>",
"APIRegistrationKey": "<ApiRegistrationKey>",
"APIRunAsUsername": "<Username>",
"FolderPathPrefix" : "/", // default delimiter is "/", but it can be changed
"FolderPasswordDelimiter" : "/" // default delimiter is "/", but it can be changed
}
},
]
"SecureStoreConfigurations": [
{
"Key": "<MyBeyondTrustTeamPasswordSafe>",
"Type": "BeyondTrust Password Safe - Team Passwords",
"Context": {
"Hostname": "<HostName>",
"APIRegistrationKey": "<ApiRegistrationKey>",
"APIRunAsUsername": "<Username>",
"FolderPathPrefix" : "/", // default delimiter is "/", but it can be changed
"FolderPasswordDelimiter" : "/" // default delimiter is "/", but it can be changed
}
},
]
CyberArk - AIM
"SecureStoreConfigurations": [
{
"Key": "<MyCyberArk>",
"Type": "CyberArk",
"Context": {
"ApplicationId": "<App_MyCyberArk>",
"Safe": "<Passwords>",
"Folder": "<MyFolder>"
}
},
]
"SecureStoreConfigurations": [
{
"Key": "<MyCyberArk>",
"Type": "CyberArk",
"Context": {
"ApplicationId": "<App_MyCyberArk>",
"Safe": "<Passwords>",
"Folder": "<MyFolder>"
}
},
]
CyberArk - CCP
"SecureStoreConfigurations": [
{
"Key": "<MyCyberArkCCPStore>",
"Type": "CyberArkCCP",
"Context": {
"ApplicationId": "<ApplicationId>",
"Safe": "<CyberArkSafe>",
"Folder": "<CyberArkFolder>",
"WebServiceUrl": "<CentralCredentialProviderUrl>",
"WebServiceName": "<WebServiceName>",
"SerializedClientCertificate": "<ClientCertificate>", // must be ".pfx" as base64
"ClientCertificatePassword": "<ClientCertificatePassword>",
"SerializedRootCA": "<someServerRootCA>" // must be ".crt" or ".cer" as base64
}
},
]
"SecureStoreConfigurations": [
{
"Key": "<MyCyberArkCCPStore>",
"Type": "CyberArkCCP",
"Context": {
"ApplicationId": "<ApplicationId>",
"Safe": "<CyberArkSafe>",
"Folder": "<CyberArkFolder>",
"WebServiceUrl": "<CentralCredentialProviderUrl>",
"WebServiceName": "<WebServiceName>",
"SerializedClientCertificate": "<ClientCertificate>", // must be ".pfx" as base64
"ClientCertificatePassword": "<ClientCertificatePassword>",
"SerializedRootCA": "<someServerRootCA>" // must be ".crt" or ".cer" as base64
}
},
]
KeyStorageFlags
を設定する必要がある場合があります。
"AppSettings": {
...
"Plugins.SecureStores.CyberArkCCP.KeyStorageFlags": "MachineKeySet",
...
}
"AppSettings": {
...
"Plugins.SecureStores.CyberArkCCP.KeyStorageFlags": "MachineKeySet",
...
}
HashiCorp Vault/HashiCorp Vault (読み取り専用)
"SecureStoreConfigurations": [
{
"Key": "<MyHashiCorp>",
"Type": "HashiCorp Vault" / "HashiCorp Vault (read only)",
"Context": {
"VaultUri": "<VaultUri>",
"AuthenticationType": "<AppRole>",
"RoleId": "<RoleId>",
"SecretId": "<SecretId>",
"Username": "<Username>",
"Password": "<Password>",
"Token": "<Token>",
"SecretsEngine": "<KeyValueV2>",
"SecretsEngineMountPath": "<Secret>",
"DataPath": "<applications/orchestrator>",
"Namespace": "<orchestrator>"
}
},
]
"SecureStoreConfigurations": [
{
"Key": "<MyHashiCorp>",
"Type": "HashiCorp Vault" / "HashiCorp Vault (read only)",
"Context": {
"VaultUri": "<VaultUri>",
"AuthenticationType": "<AppRole>",
"RoleId": "<RoleId>",
"SecretId": "<SecretId>",
"Username": "<Username>",
"Password": "<Password>",
"Token": "<Token>",
"SecretsEngine": "<KeyValueV2>",
"SecretsEngineMountPath": "<Secret>",
"DataPath": "<applications/orchestrator>",
"Namespace": "<orchestrator>"
}
},
]
Thycotic Secret Server
"SecureStoreConfigurations": [
{
"Key": "<MyThicoticServer>",
"Type": "Thycotic Secret Server",
"Context": {
"SecretServerUrl": "<ServerUrl>",
"RuleName": "<Rule>",
"RuleKey": "<Key>",
"UsernameField": "<Username>",
"PasswordField": "<Password>"
}
},
]
"SecureStoreConfigurations": [
{
"Key": "<MyThicoticServer>",
"Type": "Thycotic Secret Server",
"Context": {
"SecretServerUrl": "<ServerUrl>",
"RuleName": "<Rule>",
"RuleKey": "<Key>",
"UsernameField": "<Username>",
"PasswordField": "<Password>"
}
},
]
複数の資格情報ストア
複数の資格情報ストアを使用する場合は、以下のように並べて追加できます。
{
...
"AppSettings": {
...
"SecureStoreConfigurations": [
{
"Key": "<SecureStoreKey1>",
"Type": "AzureKeyVault (read only)",
"Context": {
"KeyVaultUri": "<Uri>",
"DirectoryId": "<DirectoryId>",
"ClientId": "<ClientId>",
"ClientSecret": "<ClientSecret>"
}
},
{
"Key": "<SecureStoreKey2>",
"Type": "BeyondTrust Password Safe - Managed Accounts",
"Context": {
"Hostname": "<Host>",
"APIRegistrationKey": "<ApiKey>",
"APIRunAsUsername": "<ApiUsername>",
"DefaultManagedSystemName": "",
"SystemAccountDelimiter": "/",
"ManagedAccountType": "system"
}
}
]
...
}
}
{
...
"AppSettings": {
...
"SecureStoreConfigurations": [
{
"Key": "<SecureStoreKey1>",
"Type": "AzureKeyVault (read only)",
"Context": {
"KeyVaultUri": "<Uri>",
"DirectoryId": "<DirectoryId>",
"ClientId": "<ClientId>",
"ClientSecret": "<ClientSecret>"
}
},
{
"Key": "<SecureStoreKey2>",
"Type": "BeyondTrust Password Safe - Managed Accounts",
"Context": {
"Hostname": "<Host>",
"APIRegistrationKey": "<ApiKey>",
"APIRunAsUsername": "<ApiUsername>",
"DefaultManagedSystemName": "",
"SystemAccountDelimiter": "/",
"ManagedAccountType": "system"
}
}
]
...
}
}
これは、非接続の資格情報プロキシにのみ適用されます。
Disconnected
の場合、起動時に設定を検証します。
実行される検証手順の一部を以下に示します。
-
これにより、上記の「設定」セクションで詳しく説明されている設定が、
appsettings.Production.json
に想定どおりに含まれていることが確認されます。 -
これにより、
SecureStoreConfigurations
に重複するKey
パラメーターが含まれないように、つまり、appsettings.Production.json
ファイルで設定された資格情報ストアが一意であることが確認されます。
SecureStoreConfigurations
パラメーターは、複数の値を列挙して設定できます。つまり、資格情報ストアを、同じ種類のものであっても、必要な数だけ追加できます。たとえば、Key
フィールドが一意である限り、複数の Azure Key Vault (読み取り専用) インスタンスを設定できます。
-
すべての
Type
値が有効であることを確認します。 -
各 Secure Store の実装に基づいて、コンテナーに正常に到達できることを確認します。
C:\Program Files\UiPath\OrchestratorCredentialsProxy
フォルダーに保存されます (プロキシのアプリケーション プールにそのパスへの書き込み権限がある場合)。これらは IIS で設定されます。
appsettings.Production.json
の NLog.targets.logfile.fileName
パラメーターを使用して、任意の相対パスまたは絶対パスを指定できます。
Windows マシンでは、プロキシは Windows イベント ビューアーにもログを保存します。
- Orchestrator ではプロキシに対してセキュリティで保護された (HTTPS) URL のみが許可されます。HTTPS 証明書は、有効である必要、および広く認識された証明機関によって署名されている必要があります。自己署名証明書または内部機関によって署名された証明書はサポートされていません。
- Orchestrator は、Orchestrator Credentials Proxy によって生成されたクライアント シークレットで検証されます。このクライアント シークレットは、Orchestrator Credentials Proxy がインストールされているマシンの構成ファイルに保存され、Orchestrator によって暗号化され、データベースに保存されます。
- Orchestrator で資格情報ストア プロキシを編集してその URL を変更する場合、クライアント シークレットも入力する必要があります。
-
Orchestrator Credentials Proxy 2.0.0 以降のアクションは、Windows イベント ビューアーに記録されます。
- バイナリは Windows マシンで署名される必要があります。
- Docker イメージは署名されている必要があります。
プロキシをロード バランサーと組み合わせて使用できます。ただし、すべてのノードで同じ構成を維持している必要があります。
- プロキシ インストーラーのバージョン。たとえば、バージョン 1.0.0 を使用する場合は、すべてのロード バランサー ノードでも 1.0.0 を使用する必要があります。
- アプリケーション構成ファイルの設定。ほとんどの場合、
appsettings.json
とappsettings.Production.json
です。appsettings.Production.json
はインストールごとに一意であるため、一貫性を確保するには、手動で各ノードに追加する必要があります。 path/plugins
に追加された資格情報ストア プラグイン。UiPath がサポートするプラグインはすべてすでにこのフォルダーにあるため、注意が必要なのは主に追加するカスタム プラグインです。
- プロキシのインストール用に提供されている Docker イメージの構成に変更を加える場合は、代わりにカスタム Docker イメージを作成することを強くお勧めします。次に、このカスタム イメージを使用して、すべてのノードにプロキシをデプロイする必要があります。
- 一部の環境変数 (
appsettings.json
構成値をオーバーライドする変数や .NET 環境に影響を与える変数など) は、ランタイムに影響を与える可能性があります。 https://cloud.uipath.com/{organizationName}/{tenantName}/orchestrator_/api/v1/Health
専用の非認証エンドポイントを使用して、Orchestrator Credentials Proxy がまだ実行中かどうかを確認できます。