- Erste Schritte
- Best Practices
- Mandant
- Über den Kontext „Mandant“
- Suche nach Ressourcen in einem Mandanten
- Verwaltung von Robotern
- Verbindung von Robotern mit Orchestrator
- Speicherung von Roboterzugangsdaten in CyberArk
- Speichern von Unattended-Roboterkennwörtern in Azure Key Vault (schreibgeschützt)
- Speichern der Anmeldeinformationen von Unattended-Robotern im HashiCorp Vault (schreibgeschützt)
- Speichern der Anmeldeinformationen von Unattended-Robotern im AWS Secrets Manager (schreibgeschützt)
- Löschen von getrennten und nicht reagierenden Unattended-Sitzungen
- Roboter-Authentifizierung
- Roboter-Authentifizierung mit Client-Anmeldeinformationen
- Zuweisen von Rollen
- Verwaltung von Rollen
- Standardrollen
- Konfigurieren des Zugriffs für Konten
- Aktivieren von Benutzern zum Ausführen persönlicher Automatisierungen
- Ermöglichen der Ausführung von Automatisierungen für Benutzer in einer Unattended-Infrastruktur über Unattended-Roboter
- Konfigurieren von Roboterkonten zum Ausführen von Unattended-Automatisierungen
- Audit
- Verwalten von Anmeldeinformationsspeichern
- Integrieren von Anmeldeinformationsspeichern
- Der Orchestrator Credentials Proxy
- Managing credential proxies
- Einstellungen
- Cloud Robots
- Elastic Robot Orchestration
- Automation Cloud™-Roboter – VM
- Automation Cloud™-Roboter – serverlos
- Konfigurieren einer VPN für Cloud-Roboter
- Events
- Anzeigen und Zugreifen auf Benachrichtigungen
- Anzeigen und Zugreifen auf E-Mail-Benachrichtigungen
- Es werden nur ungelesene Benachrichtigungen angezeigt
- Alle Benachrichtigungen als gelesen markieren
- Alle Benachrichtigungen löschen
- Löschen von Benachrichtigungen
- Abonnieren von Ereignissen
- Abbestellen von Ereignissen
- Ordnerkontext
- Automatisierungen
- Prozesse
- Jobs
- Apps
- Auslöser
- Protokolle
- Überwachung
- Warteschlangen
- Assets
- Speicher-Buckets
- Test Suite - Orchestrator
- Ressourcenkatalogdienst
- Authentication
- Integrationen
- Fehlersuche und ‑behebung
Der Orchestrator Credentials Proxy
Sie können dem Orchestrator Ihre eigenen Anmeldeinformationsspeicher hinzufügen, um die Sicherheit Ihrer Verbindungsdaten unabhängig zu steuern.
Dazu können Sie die gewünschten Plugins für den Anmeldeinformationsspeicher in Form von .dll-Dateien in den Orchestrator Credentials Proxy Web-Dienst laden. Das Installationskit enthält alle von UiPath unterstützten Plugins, aber Sie können auch Ihre eigene Plugin-DLL-Dateien zum Laden entwickeln. Dieser Dienst stellt dann Ihre Plugins im Orchestrator über einen Proxy bereit, der im Orchestrator basierend auf der öffentlichen URL und dem vom Proxy generierten geheimen Schlüssel erstellt wird.
Der Orchestrator Credentials Proxy kann entweder über ein MSI-Installationsprogramm oder über ein Docker-Image, das von UiPath bereitgestellt wird.
Voraussetzungen
Folgendes ist erforderlich, um den Proxy verwenden zu können:
- ASP.NET Core versions 3.1 or 6.0.x
- IIS-Version 8.0 oder höher
-
Die folgenden Windows-Funktionen müssen installiert sein:
- IIS-DefaultDocument
- IIS-HttpErrors
- IIS-StaticContent
- IIS-RequestFiltering
- IIS-URLAuthorization
- IIS-WindowsAuthentication
- IIS-ASPNET45
- IIS-ISAPIExtensions
- IIS-ISAPIFilter
- IIS-WebSockets
- IIS-ApplicationInit
- IIS-ManagementConsole
Hard- und Softwareanforderungen
Hardwareanforderungen
Dies sind die Mindestanforderungen für die Ausführung des Proxys auf einem Windows-Server mit IIS:
CPU-Cores |
RAM |
---|---|
2 |
4 GB |
Softwareanforderungen
Die folgenden Windows Server-Versionen sind für die Installation des Proxys erforderlich:
- 2012 R2
- 2016
- 2019
- 2022
Installationsschritte
Führen Sie die folgenden Schritte aus, um die Installation durchzuführen:
Vorläufige Informationen
Alle Orchestrator-Einstellungen für Credentials Proxy, die bearbeitet werden können, sind in der Datei appsettings.json verfügbar. Die folgenden Parameter sind bei der Ersteinrichtung wichtig:
-
Jwt:Keys
– (anfänglich leer) Dieses Array von Strings wird verwendet, um die Authentifizierung des Proxys einzurichten. Dies ist der geheime Schlüssel, den Sie während des Proxy-Erstellungsprozesses verwenden und der es Orchestrator ermöglicht, Daten erfolgreich vom Proxy abzurufen. Alle ungültigen Werte werden ignoriert. Wenn keine gültigen Werte gefunden werden, wird der Proxy nicht gestartet.Die geheimen Schlüssel müssen sich in base64 befinden und können mithilfe eines der folgenden PowerShell-Skripts generiert werden.
$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
) und konvertiert sie in einen base64-String.
[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
– (ursprünglich auf die im Orchestrator verfügbaren Standard-Anmeldeinformationsspeicher festgelegt) Dies ist ein CSV-String, der verwendet wird, um anzugeben, welche DLL- vom Datenträger (vonpath/plugins
) geladen werden sollen, damit sichere Speicher vom Proxy verwendet werden können. Das Hinzufügen ungültiger Assemblys zur Liste unterbricht den Start nicht, aber Sie erhalten Protokollfehler, wenn Sie versuchen, sie bereitzustellen.appSettings:SigningCredentialSettings:FileLocation:SigningCredential:FilePath
undappSettings:SigningCredentialSettings:FileLocation:SigningCredential:Password
– (zunächst ausgeblendet) werden zum Verschlüsseln der ParameterJwt:Keys
undSecureStoreConfigurations:Context
verwendet. Dies stellt den Dateipfad zu Ihrem Signaturzertifikat dar.appSettings:SigningCredentialSettings:StoreLocation:Name
,appSettings:SigningCredentialSettings:StoreLocation:Location
,appSettings:SigningCredentialSettings:StoreLocation:NameType
– (zunächst ausgeblendet) werden zum Verschlüsseln der ParameterJwt:Keys
undSecureStoreConfigurations:Context
verwendet.
Verschlüsseln des Parameters Jwt:Keys
Jwt:Keys
und SecureStoreConfigurations:Context
in Ihrer appsettings.json
-Datei verschlüsseln.
UiPath.ConfigProtector.exe
-Version 1.0.9 oder höher.
Einrichten und Ausführen des Docker-Images
Führen Sie die folgenden Schritte aus, um den Orchestrator Credentials Proxy mit Docker auszuführen.
C:\Program Files\UiPath\CredentialsProxy\plugins
hinzufügen.
Die nächsten Schritte gelten nur für den getrennten Proxy, da der verbundene Proxy keine spezifische Konfiguration erfordert.
appsettings.Production.json
angeben, die sich am folgenden Speicherort befindet: C:\Program Files\UiPath\OrchestratorCredentialsProxy\appsettings.Production.json
.
AppSettings
> SecureStoreConfigurations
:
-
Key
– Der Bezeichnerschlüssel für die Konfiguration -
Type
– Der Anmeldeinformationstresortyp, wie in den .dll- Dateien, konfiguriert über den ParameterPlugins.SecureStores
inappsettings.json
(siehe Beispiele unten) -
Context
– Die Verbindungsinformationen bezüglich der Implementierung des sicheren Speichers
Nachdem Sie die Konfigurationsdatei bearbeitet haben, müssen Sie den Dienst über IIS neu starten.
appsettings.Production.json
hinzufügen müssen, um den getrennten Proxy zu starten. Andernfalls wird der Dienst nicht starten.
Wählen Sie das geeignete Beispiel basierend auf Ihrem Anmeldeinformationsspeichertyp aus oder fügen Sie mehrere Anmeldeinformationsspeicher hinzu, indem Sie das allerletzte Beispiel auf dieser Seite verwenden.
AWS Secrets Manager/AWS Secrets Manager (schreibgeschützt)
"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 (schreibgeschützt)
"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 (lesen/schreiben) wird nicht unterstützt.
BeyondTrust Password Safe – Verwaltete Konten
"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-Kennwörter
"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
wie folgt konfigurieren:
"AppSettings": {
...
"Plugins.SecureStores.CyberArkCCP.KeyStorageFlags": "MachineKeySet",
...
}
"AppSettings": {
...
"Plugins.SecureStores.CyberArkCCP.KeyStorageFlags": "MachineKeySet",
...
}
HashiCorp Vault/HashiCorp Vault (schreibgeschützt)
"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>"
}
},
]
Mehrere Anmeldeinformationsspeicher
Wenn Sie mehrere Anmeldeinformationsspeicher verwenden, können Sie sie wie folgt untereinander hinzufügen:
{
...
"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"
}
}
]
...
}
}
Das gilt nur für den getrennten Credentials Proxy.
Disconnected
ist.
Das sind einige der durchgeführten Validierungsschritte:
-
Es wird sichergestellt, dass
appsettings.Production.json
die erwarteten Konfigurationen enthält, wie im obigen Abschnitt Konfiguration beschrieben. -
Es wird sichergestellt, dass
SecureStoreConfigurations
keine doppeltenKey
-Parameter enthält, also dass die in der Dateiappsettings.Production.json
konfigurierten Anmeldeinformationsspeicher eindeutig sind.
- Der Parameter
SecureStoreConfigurations
ist ein Array von Konfigurationen, was bedeutet, dass Sie beliebig viele Anmeldeinformationsspeicher hinzufügen können, auch vom gleichen Typ. Beispielsweise können Sie mehrere Azure Key Vault-Instanzen (schreibgeschützt) konfigurieren, sofern das FeldKey
eindeutig ist.
-
Es wird überprüft, ob alle
Type
-Werte gültig sind. -
Basierend auf der Implementierung jedes sicheren Speichers wird überprüft, ob der Tresor erfolgreich erreicht werden kann.
C:\Program Files\UiPath\OrchestratorCredentialsProxy
gespeichert, wenn der Anwendungspool des Proxys über Schreibberechtigungen für diesen Pfad verfügt. Diese werden in IIS konfiguriert.
NLog.targets.logfile.fileName
in appsettings.Production.json
angeben.
Auf Windows-Maschinen speichert der Proxy auch Protokolle in der Windows-Ereignisanzeige.
- Der Orchestrator lässt nur sichere URLs (HTTPS) für den Proxy zu. Das HTTPS-Zertifikat muss gültig und von einer allgemein anerkannten Zertifizierungsstelle signiert sein. Zertifikate, die selbstsigniert oder von einer internen Stelle signiert sind, werden nicht unterstützt.
- Der Orchestrator wird über einen geheimen Clientschlüssel validiert, der vom Orchestrator Credentials Proxy generiert wird. Der geheime Clientschlüssel wird in einer Konfigurationsdatei auf der Maschine gespeichert, auf der der Orchestrator Credentials Proxy installiert ist, und wird von Orchestrator verschlüsselt und in der Datenbank gespeichert.
- Wenn Sie einen Anmeldeinformationsspeicherproxy im Orchestrator bearbeiten und seine URL ändern, müssen Sie auch den geheimen Clientschlüssel eingeben.
-
Aktionen des Orchestrator Credentials Proxy 2.0.0+ werden in der Windows-Ereignisanzeige protokolliert.
- Binärdateien müssen auf der Windows-Maschine signiert werden.
- Das Docker-Image muss signiert sein.
Sie können den Proxy in Kombination mit einem Lastausgleich verwenden, sofern Sie sicherstellen, dass Sie die gleiche Konfiguration auf allen Knoten beibehalten.
- Die Version des Proxy-Installationsprogramms. Wenn Sie z. B. Version 1.0.0 verwenden, müssen auch alle Lastausgleichsknoten 1.0.0 verwenden.
- Die Einstellungen in den Anwendungskonfigurationsdateien. In den meisten Fällen sind das
appsettings.json
undappsettings.Production.json
. Beachten Sie, dassappsettings.Production.json
für jede Installation einzigartig ist, deshalb müssen Sie diese Datei manuell zu jedem Knoten hinzufügen, um die Konsistenz sicherzustellen. - Die zu
path/plugins
hinzugefügten Anmeldeinformationsspeicher-Plugins. Alle von uns unterstützten Plugins befinden sich bereits in diesem Ordner, sodass Sie hauptsächlich auf die benutzerdefinierten Plugins achten müssen, die Sie hinzufügen.
- Wenn Sie Änderungen an der Konfiguration des Docker-Image vornehmen möchten, das wir für die Installation des Proxys bereitstellen, empfehlen wir dringend, stattdessen ein benutzerdefiniertes Docker-Image zu erstellen. Sie sollten dann dieses benutzerdefinierte Image verwenden, um den Proxy auf allen Knoten bereitzustellen.
- Einige Umgebungsvariablen, z. B. solche, die
appsettings.json
-Konfigurationswerte überschreiben, oder solche, die sich auf die .NET-Umgebung auswirken, können Auswirkungen auf die Laufzeit haben. - Sie können den speziellen nicht authentifizierten Endpunkt
https://cloud.uipath.com/{organizationName}/{tenantName}/orchestrator_/api/v1/Health
verwenden, um zu überprüfen, ob der Orchestrator Credentials Proxy noch ausgeführt wird.
- Installation
- Über das .msi-Installationsprogramm
- Über das Docker-Image
- Konfiguration
- Getrennter Proxy
- Konfigurationsbeispiele
- Validierung
- Protokollierung
- Sicherheitsüberlegungen
- Verwenden des Orchestrator Credentials Proxy mit einem Lastausgleich
- Elemente, die für alle Knoten identisch bleiben müssen
- Wichtige Punkte, die zu beachten sind