orchestrator
latest
false
Wichtig :
Es kann 1–2 Wochen dauern, bis die Lokalisierung neu veröffentlichter Inhalte verfügbar ist.
UiPath logo, featuring letters U and I in white

Orchestrator-Anleitung

Letzte Aktualisierung 16. Okt. 2025

Managing credential proxies

Sie können Proxys für Ihre eigenen benutzerdefinierten Anmeldeinformationsspeicher erstellen und verwalten, sodass Sie die Sicherheit Ihrer Anmeldeinformationen individuell steuern können.

Proxy-Typen

Sie können zwischen diesen beiden Typen wählen:

  • Verbundener Proxy (verwaltet von Orchestrator) – Wenn ein Roboter Anmeldeinformationen anfordert, ruft der Orchestrator sie vom Proxy ab und übergibt sie an den Roboter.
    Abbildung 1. Verbundene Proxy-Architektur

  • Getrennter Proxy (verwaltet vom Proxydienst) – Wenn ein Roboter Anmeldeinformationen anfordert, werden diese direkt vom Proxy abgerufen, ohne dass der Orchestrator verwendet werden muss. Dieser Typ ist nur mit Robot-Version 23.10+ kompatibel.
    Abbildung 2. Abgetrennte Proxy-Architektur Grafische Darstellung der Architektur des getrennten Proxy
    Wichtig:
    • Enterprise Der Proxy für getrennte Anmeldeinformationen ist nur verfügbar, wenn Sie sich im Enterprise – Advanced-Lizenzierungsplan befinden.
    • Wenn Sie getrennte Proxy-Anmeldeinformationen abrufen möchten, müssen Sie die folgenden Mindestversionen verwenden: 2.0.1 für den Proxy und 24.3 für das System-Aktivitätspaket.

Getrennte Einrichtung

Der Credential Proxy des Orchestrators in der getrennten Form funktioniert mit einigen wesentlichen Unterschieden ähnlich wie die verbundene Konfiguration.

Geben Sie in der Datei appsettings.json an, dass der Proxy im getrennten Modus starten soll. Legen Sie dazu unter AppSettings den Parameter CredentialsProxyType auf den Wert Disconnected fest.
Dadurch wird der Proxy angewiesen, beim Start etwas anders zu verfahren und die Konfiguration seines sicheren Speichers aus der Datei appsettings.json zu lesen. Wenn der Parameter fehlt oder ein anderer Wert eingegeben ist, wird der Proxy im vernetzten Modus gestartet.
Geben Sie in der Datei appsettings.json an, dass der Proxy im getrennten Modus starten soll. Legen Sie dazu unter AppSettings den Parameter CredentialsProxyType auf den Wert Disconnected fest.
{
...
  "AppSettings": {
  ...
    "CredentialsProxyType": "Disconnected",
  ...
  }
}{
...
  "AppSettings": {
  ...
    "CredentialsProxyType": "Disconnected",
  ...
  }
}
Dadurch wird der Proxy angewiesen, beim Start etwas anders zu verfahren und die Konfiguration des sicheren Speichers aus der Datei appsettings.json zu lesen. Wenn der Parameter fehlt oder ein anderer Wert eingegeben ist, wird der Proxy im vernetzten Modus gestartet.

Sichere Speicherkonfigurationen

Jeder Konfigurationseintrag muss Folgendes enthalten:

  • Schlüssel: eindeutige Kennung, die im Orchestrator zur Verknüpfung von Tresoren verwendet wird. Dieser muss in der Liste der Konfigurationen eindeutig sein

  • Typ: der Typ des sicheren Tresors (z. B. Azure Key Vault, BeyondTrust, CyberArk, HashiCorp Tresor, InMemory und andere).

  • Kontext: Die von der Implementierung von Secure Store benötigten Daten, die sich je nach Speichertyp unterscheiden.

Sehen Sie sich folgendes Beispiel für die Konfiguration eines sicheren Tresors an:
{
...
  "AppSettings": {
  ...
    "SecureStoreConfigurations": [
      {
        "Key": "SecureStoreKey1",
        "Type": "AzureKeyVault (read only)",
        "Context": {
          "KeyVaultUri": "{someUri}",
          "DirectoryId": "{someDirectoryId}",
          "ClientId": "{someClientId}",
          "ClientSecret": "{someClientSecret}"
        }
      },
      {
        "Key": "SecureStoreKey2",
        "Type": "BeyondTrust Password Safe - Managed Accounts",
        "Context": {
          "Hostname": "{someHost}",
          "APIRegistrationKey": "{someApiKey}",
          "APIRunAsUsername": "{someApiUsername}",
          "DefaultManagedSystemName": "",
          "SystemAccountDelimiter": "/",
          "ManagedAccountType": "system"
        }
      },
      {
        "Key": "InMemoryKey1",
        "Type": "InMemorySecureStore",
        "Context": {
        }
      }
    ]
  ...
  }
}{
...
  "AppSettings": {
  ...
    "SecureStoreConfigurations": [
      {
        "Key": "SecureStoreKey1",
        "Type": "AzureKeyVault (read only)",
        "Context": {
          "KeyVaultUri": "{someUri}",
          "DirectoryId": "{someDirectoryId}",
          "ClientId": "{someClientId}",
          "ClientSecret": "{someClientSecret}"
        }
      },
      {
        "Key": "SecureStoreKey2",
        "Type": "BeyondTrust Password Safe - Managed Accounts",
        "Context": {
          "Hostname": "{someHost}",
          "APIRegistrationKey": "{someApiKey}",
          "APIRunAsUsername": "{someApiUsername}",
          "DefaultManagedSystemName": "",
          "SystemAccountDelimiter": "/",
          "ManagedAccountType": "system"
        }
      },
      {
        "Key": "InMemoryKey1",
        "Type": "InMemorySecureStore",
        "Context": {
        }
      }
    ]
  ...
  }
}
Hinweis:
Der Parameter SecureStoreConfigurations ist ein Array von Konfigurationen, sodass Sie so viele Konfigurationen haben können, wie Sie möchten.
Mehrere Konfigurationen des gleichen Typs werden unterstützt, solange die Werte Key eindeutig sind.

Validierung beim Start

Wenn der Proxy im getrennten Modus ausgeführt wird, führt er beim Start eine Validierung durch:

  • Er validiert, ob die erforderlichen Konfigurationen in appsettings.json vorhanden sind.
  • Er überprüft, ob in SecureStoreConfigurations keine doppelten Schlüssel gefunden werden.
  • Er bestätigt, dass alle Werte Type gültig sind.
  • Er validiert die Tresor-Konnektivität (ruft ValidateContextAsync für jeden Tresor auf).

Einstellungen auf Proxyebene

Für einige sichere Tresore für Zugangsdaten ist eine Konfiguration auf Hostebene erforderlich, die in appsettings.Production.json wie folgt zu spezifizieren ist:
  • CyberArk: Einstellungen wie CLIPasswordSDKExePath, UsePowerShellCLIund AdditionalAllowedCharacters müssen unter AppSettings definiert werden.
    {
    // ...
      "AppSettings": {
        "Plugins.SecureStores.CyberArk.CLIPasswordSDKExePath": "D:\\SomePath\\CLIPasswordSDK.exe",
        // ...
      }
      // ...
    }{
    // ...
      "AppSettings": {
        "Plugins.SecureStores.CyberArk.CLIPasswordSDKExePath": "D:\\SomePath\\CLIPasswordSDK.exe",
        // ...
      }
      // ...
    }
  • CyberArkCCP: Möglicherweise ist Plugins.SecureStores.CyberArkCCP.KeyStorageFlags = "MachineKeySet" erforderlich .
    {
    // ...
      "AppSettings": {
        "Plugins.SecureStores.CyberArkCCP.KeyStorageFlags": "MachineKeySet",
        // ...
      }
      // ...
    }{
    // ...
      "AppSettings": {
        "Plugins.SecureStores.CyberArkCCP.KeyStorageFlags": "MachineKeySet",
        // ...
      }
      // ...
    }

Beispiele für Konfigurationstests

Sehen Sie sich folgende Beispiele appsettings.Production.json aus der Praxis an.

Beispiel 1: Basic

Konfiguration mit BeyondTrust und Azure Key Tresor:

{
  "Jwt": {
    "Keys": [
      "<YourKey>"
    ]
  },
  "AppSettings": {
    "CredentialsProxyType": "Disconnected",
    "SecureStoreConfigurations": [
      {
        "Key": "SecureStoreKey3",
        "Type": "BeyondTrust Password Safe - Team Passwords",
        "Context": {
          "Hostname": "<Hostname",
          "APIRegistrationKey": "<APIRegistrationKey",
          "APIRunAsUsername": "<Username>",
          "FolderPathPrefix": "/", // default is "/", but it can be changed to anything
          "FolderPasswordDelimiter": "/" // default is "/", but it can be changed to anything
        }
      }
    ]
  }
}{
  "Jwt": {
    "Keys": [
      "<YourKey>"
    ]
  },
  "AppSettings": {
    "CredentialsProxyType": "Disconnected",
    "SecureStoreConfigurations": [
      {
        "Key": "SecureStoreKey3",
        "Type": "BeyondTrust Password Safe - Team Passwords",
        "Context": {
          "Hostname": "<Hostname",
          "APIRegistrationKey": "<APIRegistrationKey",
          "APIRunAsUsername": "<Username>",
          "FolderPathPrefix": "/", // default is "/", but it can be changed to anything
          "FolderPasswordDelimiter": "/" // default is "/", but it can be changed to anything
        }
      }
    ]
  }
}

Beispiel 2: Zusätzliche Protokolle und mehrere Konfigurationen

Enthält mehrere Tresore und eine erweiterte Protokollierung.

{
  "Logging": {
    "LogLevel": {
      "Default": "Trace",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information",
      "Microsoft.AspNetCore.HttpLogging.HttpLoggingMiddleware": "Information"
    }
  },
  "Jwt": {
    "Keys": [ "<YourKey>" ]
  },
  "AppSettings": {
    "Plugins.SecureStores": "UiPath.Orchestrator.CyberArk.dll;UiPath.Orchestrator.AzureKeyVault.SecureStore.dll;UiPath.Orchestrator.SecureStore.CyberArkCCP.dll;UiPath.Orchestrator.SecureStore.HashiCorpVault.dll;UiPath.Orchestrator.SecureStore.ThycoticSecretServer.dll;UiPath.Orchestrator.SecureStore.BeyondTrust.dll;UiPath.Orchestrator.SecureStore.AWSSecretsManager.dll",
    "UseInMemorySecureStore": "true",
    "CredentialsProxyType": "Disconnected",
    "SkipValidateSecureStoreConfigurations": "false", // for Testing only; never to be shown to clients or used in prod
    "SecureStoreConfigurations": [
      // AzureKeyVault owned by <username>; contact for more info
      // Robot externalName: "<name>"
      // The expected value of this secret is "<name>"
      {
        "Key": "SecureStoreKey1",
        "Type": "AzureKeyVault (read only)",
        "Context": {
          "KeyVaultUri": "<VaultURL>",
          "DirectoryId": "<DirectoryID>",
          "ClientId": "<ClientID>",
          "ClientSecret": "<ClientSecret>"
        }
      },
      // In case this fails, check our internal documentation on checking if BeyondTrust is down
      // <InternalDocsURL>
      // Robot externalName: "<ExternalName>"
      {
        "Key": "SecureStoreKey2",
        "Type": "BeyondTrust Password Safe - Managed Accounts",
        "Context": {
          "Hostname": "<Hostname>",
          "APIRegistrationKey": "<APIRegistrationKey>",
          "APIRunAsUsername": "<Username>",
          "DefaultManagedSystemName": "",
          "SystemAccountDelimiter": "/",
          "ManagedAccountType": "system"
        }
      },
      // In case this fails, check our internal documentation on checking if BeyondTrust is down
      // <InternalDocsURL>
      // Robot externalName: "<ExternalName>"
      {
        "Key": "SecureStoreKey3",
        "Type": "BeyondTrust Password Safe - Team Passwords",
        "Context": {
          "Hostname": "<Hostname>",
          "APIRegistrationKey": "<APIRegistrationKey>",
          "APIRunAsUsername": "<Username>",
          "FolderPathPrefix": "/", // default is "/", but it can be changed to anything
          "FolderPasswordDelimiter": "/" // default is "/", but it can be changed to anything
        }
      },
      {
        // asset external name: Operating System-WinDomain
        // password: <password>
        "Key": "SecureStoreKey1",
        "Type": "CyberArk Conjur Cloud (read only)",
        "Context": {
          "ServiceUrl": "<ServiceURL>",
          "LoginName": "<LoginName>",
          "ApiKey": "<APIKey>",
          "VariableIdPrefix": "data/vault/Safe"
        }
      },
      // Must have an empty context
      // No values on startup; should add values using the endpoints before trying trying to get anything
      {
        "Key": "InMemoryKey1",
        "Type": "InMemorySecureStore",
        "Context": {
        }
      }
    ]
  }
}{
  "Logging": {
    "LogLevel": {
      "Default": "Trace",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information",
      "Microsoft.AspNetCore.HttpLogging.HttpLoggingMiddleware": "Information"
    }
  },
  "Jwt": {
    "Keys": [ "<YourKey>" ]
  },
  "AppSettings": {
    "Plugins.SecureStores": "UiPath.Orchestrator.CyberArk.dll;UiPath.Orchestrator.AzureKeyVault.SecureStore.dll;UiPath.Orchestrator.SecureStore.CyberArkCCP.dll;UiPath.Orchestrator.SecureStore.HashiCorpVault.dll;UiPath.Orchestrator.SecureStore.ThycoticSecretServer.dll;UiPath.Orchestrator.SecureStore.BeyondTrust.dll;UiPath.Orchestrator.SecureStore.AWSSecretsManager.dll",
    "UseInMemorySecureStore": "true",
    "CredentialsProxyType": "Disconnected",
    "SkipValidateSecureStoreConfigurations": "false", // for Testing only; never to be shown to clients or used in prod
    "SecureStoreConfigurations": [
      // AzureKeyVault owned by <username>; contact for more info
      // Robot externalName: "<name>"
      // The expected value of this secret is "<name>"
      {
        "Key": "SecureStoreKey1",
        "Type": "AzureKeyVault (read only)",
        "Context": {
          "KeyVaultUri": "<VaultURL>",
          "DirectoryId": "<DirectoryID>",
          "ClientId": "<ClientID>",
          "ClientSecret": "<ClientSecret>"
        }
      },
      // In case this fails, check our internal documentation on checking if BeyondTrust is down
      // <InternalDocsURL>
      // Robot externalName: "<ExternalName>"
      {
        "Key": "SecureStoreKey2",
        "Type": "BeyondTrust Password Safe - Managed Accounts",
        "Context": {
          "Hostname": "<Hostname>",
          "APIRegistrationKey": "<APIRegistrationKey>",
          "APIRunAsUsername": "<Username>",
          "DefaultManagedSystemName": "",
          "SystemAccountDelimiter": "/",
          "ManagedAccountType": "system"
        }
      },
      // In case this fails, check our internal documentation on checking if BeyondTrust is down
      // <InternalDocsURL>
      // Robot externalName: "<ExternalName>"
      {
        "Key": "SecureStoreKey3",
        "Type": "BeyondTrust Password Safe - Team Passwords",
        "Context": {
          "Hostname": "<Hostname>",
          "APIRegistrationKey": "<APIRegistrationKey>",
          "APIRunAsUsername": "<Username>",
          "FolderPathPrefix": "/", // default is "/", but it can be changed to anything
          "FolderPasswordDelimiter": "/" // default is "/", but it can be changed to anything
        }
      },
      {
        // asset external name: Operating System-WinDomain
        // password: <password>
        "Key": "SecureStoreKey1",
        "Type": "CyberArk Conjur Cloud (read only)",
        "Context": {
          "ServiceUrl": "<ServiceURL>",
          "LoginName": "<LoginName>",
          "ApiKey": "<APIKey>",
          "VariableIdPrefix": "data/vault/Safe"
        }
      },
      // Must have an empty context
      // No values on startup; should add values using the endpoints before trying trying to get anything
      {
        "Key": "InMemoryKey1",
        "Type": "InMemorySecureStore",
        "Context": {
        }
      }
    ]
  }
}

Beispiel 3: Benutzerdefinierter Protokollpfad und InMemoryStore

{
  "NLog": {
    "throwConfigExceptions": true,
    "targets": {
      "logfile": {
        "type": "File",
        "maxArchiveFiles": 180,
        "fileName": "<FileName>",
        "layout": "${longdate} ${logger} ${message}${onexception:${newline}${exception:maxInnerExceptionLevel=10:format=shortType,message,stacktrace:separator=*:innerExceptionSeparator=&#xD;&#xA;&#x9;}}"
      }
    },
    "rules": [
      {
        "logger": "*",
        "minLevel": "Information",
        "writeTo": "logconsole,logfile,eventLog"
      }
    ]
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "Jwt": {
    "Keys": [
      "<YourKey>"
    ]
  },
  "AppSettings": {
    "Plugins.SecureStores": "UiPath.Orchestrator.CyberArk.dll;UiPath.Orchestrator.AzureKeyVault.SecureStore.dll;UiPath.Orchestrator.SecureStore.CyberArkCCP.dll;UiPath.Orchestrator.SecureStore.CyberArkConjur.dll;UiPath.Orchestrator.SecureStore.HashiCorpVault.dll;UiPath.Orchestrator.SecureStore.ThycoticSecretServer.dll;UiPath.Orchestrator.SecureStore.BeyondTrust.dll;UiPath.Orchestrator.SecureStore.AWSSecretsManager.dll",
    "UseInMemorySecureStore": "true",
    "CredentialsProxyType": "Disconnected",
    "SkipValidateSecureStoreConfigurations": "true",
    "SecureStoreConfigurations": [
      {
        "Key": "InMemoryKey1",
        "Type": "InMemorySecureStore",
        "Context": {}
      }
    ]
  }
}{
  "NLog": {
    "throwConfigExceptions": true,
    "targets": {
      "logfile": {
        "type": "File",
        "maxArchiveFiles": 180,
        "fileName": "<FileName>",
        "layout": "${longdate} ${logger} ${message}${onexception:${newline}${exception:maxInnerExceptionLevel=10:format=shortType,message,stacktrace:separator=*:innerExceptionSeparator=&#xD;&#xA;&#x9;}}"
      }
    },
    "rules": [
      {
        "logger": "*",
        "minLevel": "Information",
        "writeTo": "logconsole,logfile,eventLog"
      }
    ]
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "Jwt": {
    "Keys": [
      "<YourKey>"
    ]
  },
  "AppSettings": {
    "Plugins.SecureStores": "UiPath.Orchestrator.CyberArk.dll;UiPath.Orchestrator.AzureKeyVault.SecureStore.dll;UiPath.Orchestrator.SecureStore.CyberArkCCP.dll;UiPath.Orchestrator.SecureStore.CyberArkConjur.dll;UiPath.Orchestrator.SecureStore.HashiCorpVault.dll;UiPath.Orchestrator.SecureStore.ThycoticSecretServer.dll;UiPath.Orchestrator.SecureStore.BeyondTrust.dll;UiPath.Orchestrator.SecureStore.AWSSecretsManager.dll",
    "UseInMemorySecureStore": "true",
    "CredentialsProxyType": "Disconnected",
    "SkipValidateSecureStoreConfigurations": "true",
    "SecureStoreConfigurations": [
      {
        "Key": "InMemoryKey1",
        "Type": "InMemorySecureStore",
        "Context": {}
      }
    ]
  }
}

Erstellen eines Credentials Proxys

Nachdem Sie den Orchestrator Credentials Proxy installiert haben, können Sie einen benutzerdefinierten Proxy erstellen, der Ihre benutzerdefinierten Anmeldeinformationsspeicher enthält.

Abbildung 3. Seite „Credentials Proxy hinzufügen“ Screenshot der Seite „Credentials Proxy hinzufügen“
Führen Sie dazu die folgenden Schritte aus:
  1. Klicken Sie auf Mandantenebene auf Anmeldeinformationen > Proxys > Credentials Proxy hinzufügen. Das Fenster Credentials Proxy hinzufügen wird angezeigt.
  2. Wählen Sie entweder Verbundener Proxy (verwaltet von Orchestrator) oder Getrennter Proxy (verwaltet vom Proxydienst) aus.
  3. Fügen Sie einen Namen für Ihren Proxy hinzu.
  4. Fügen Sie die URL der virtuellen Maschine hinzu, die im Orchestrator Credentials Proxy-Setup enthalten ist.
  5. Fügen Sie den Schlüssel hinzu.

    Für den verbundenen Proxy ist dies, je nach Installationsmethode, entweder der geheime Schlüssel, der vom .msi-Installationsprogramm generiert wird oder der, den der Parameter „Jwt:Keys“ enthält.

    Für den getrennten Proxy muss dies ein Schlüssel sein, der bereits in einer der lokalen Konfigurationsdateien des getrennten Proxys vorhanden ist.

    Die Informationen, die Sie in den Schritten 4 und 5 angeben, erstellen die Verknüpfung zwischen dem Orchestrator und der Installation, die Ihre benutzerdefinierten Plugins für den Anmeldeinformationsspeicher enthält.

  6. Klicken Sie auf Erstellen.

    Sie können dann den gewünschten Store wie folgt hinzufügen:

  7. Klicken Sie auf Mandantenebene auf Anmeldeinformationen > Speicher > Anmeldeinformationsspeicher hinzufügen.
  8. Wählen Sie aus der Liste Proxy den soeben erstellten Proxy aus.
  9. Wählen Sie aus der Liste Typ den Anmeldeinformationsspeicher eines Drittanbieters aus, der von Ihrem Plugin definiert wird.

Editing a credentials proxy

Um einen Proxy zu bearbeiten, klicken Sie auf Weitere Aktionen > Bearbeiten. Die Seite Credentials Proxy bearbeiten wird angezeigt, auf der Sie den Namen, die URL oder den Schlüssel nach Bedarf ändern können.

Löschen eines Credentials Proxys

Um einen Proxy zu löschen, wählen Sie Weitere Aktionen > Entfernen. Wird der ausgewählte Proxy verwendet, erscheint ein Warndialog mit einer Auflistung mit der Anzahl an betroffenen Robotern und Assets. Wählen Sie Ja, um das Entfernen zu bestätigen oder Nein, um die Aktion abzubrechen.

Abbildung 4. Registerkarte „Proxys“

War diese Seite hilfreich?

Hilfe erhalten
RPA lernen – Automatisierungskurse
UiPath Community-Forum
Uipath Logo
Vertrauen und Sicherheit
© 2005–2025 UiPath. Alle Rechte vorbehalten