- Primeros pasos
- Mejores prácticas
- Tenant
- Acerca del contexto de tenant
- Buscar recursos en un tenant
- Gestionar robots
- Conexión de los robots a Orchestrator
- Almacenar credenciales de robots en CyberArk
- Almacenar contraseñas de robots desatendidos en Azure Key Vault (solo lectura)
- Almacenar las credenciales de robots desatendidos en HashiCorp Vault (solo lectura)
- Almacenamiento de credenciales de Unattended Robot en AWS Secrets Manager (solo lectura)
- Eliminar sesiones desconectadas y sin respuesta no atendidas
- Autenticación de Robot
- Autenticación de robots con credenciales de cliente
- Configurar las capacidades de automatización
- Soluciones
- Auditoría
- Configuración
- Registro
- Cloud Robots
- Descripción general de Cloud Robots
- Ejecución de automatizaciones unattended utilizando robots en la nube: VM
- Cargar tu propia imagen
- Reutilizar imágenes de máquina personalizadas (para grupos manuales)
- Restablecer credenciales para una máquina (para grupos manuales)
- Supervisión
- Actualizaciones de seguridad
- Pedir una prueba
- Preguntas frecuentes
- Configuración de VPN para robots en la nube
- Configurar una conexión de ExpressRoute
- Transmisión en vivo y control remoto
- Automation Suite Robots
- Contexto de carpetas
- Procesos
- Trabajos
- Apps
- Desencadenadores
- Registros
- Supervisión
- Índices
- Colas
- Activos
- Sobre los activos
- Gestión de Activos en Orchestrator
- Gestión de Activos en Studio
- Almacenar activos en Azure Key Vault (solo lectura)
- Almacenamiento de activos en HashiCorp Vault (solo lectura)
- Almacenamiento de activos en AWS Secrets Manager (solo lectura)
- Almacenamiento de activos en Google Secret Manager (solo lectura)
- Conexiones
- Reglas empresariales
- Depósitos de almacenamiento
- Servidores MCP
- Pruebas de Orchestrator
- Servicio de catálogo de recursos
- Integraciones
- Solución de problemas

Guía del usuario de Orchestrator
Managing credential proxies
Puedes crear y administrar proxies para tus propios almacenes de credenciales personalizadas, lo que te permite controlar individualmente la seguridad de tus credenciales.
Tipos de proxy
Puedes elegir entre estos dos tipos:
- Proxy conectado (administrado por Orchestrator)
- cuando un robot solicita credenciales, Orchestrator las recupera del proxy y las pasa al robot.
Figura 1. Arquitectura de proxy conectada

- Proxy desconectado (gestionado por el servicio de proxy) : cuando un robot solicita credenciales, se recuperan directamente del proxy, sin tener que pasar por Orchestrator. Este tipo solo es compatible con la versión 23.10+ de Robots.
Figura 2. Arquitectura de proxy desconectada 
- El proxy de credenciales desconectado solo está disponible si estás en el plan de licencias Enterprise - Avanzado .
- Si quieres recuperar las credenciales de proxy desconectadas, debes utilizar las siguientes versiones mínimas: 2.0.1 para el proxy y 24.3 para el paquete de actividades del sistema.
Configuración desconectada
El proxy de credenciales de Orchestrator en la variante desconectada funciona de forma similar a la configuración conectada, con algunas diferencias clave.
Especifica en el archivo appsettings.json que el proxy debe iniciarse en su modo desconectado. Para hacer esto, bajo AppSettings establece el parámetro CredentialsProxyType con el valor Disconnected.
Esto le dirá al proxy que haga las cosas de forma un poco diferente al iniciar y que lea su configuración de almacén seguro en el archivo appsettings.json. Si falta el parámetro o el valor es diferente, el proxy se iniciará en su modo conectado.
Especifica en el archivo appsettings.json que el proxy debe iniciarse en su modo desconectado. Para hacer esto, bajo AppSettings establece el parámetro CredentialsProxyType con el valor Disconnected.
{
...
"AppSettings": {
...
"CredentialsProxyType": "Disconnected",
...
}
}
{
...
"AppSettings": {
...
"CredentialsProxyType": "Disconnected",
...
}
}
Esto le dirá al proxy que haga las cosas de forma un poco diferente al iniciar y que lea su configuración de almacén seguro del archivoappsettings.json. Si falta el parámetro o el valor es diferente, el proxy se iniciará en su modo conectado.
Configuraciones de almacén seguro
Cada entrada de configuración debe contener:
- Clave: identificador único utilizado en Orchestrator al vincular almacenes. Debe ser único en la lista de configuraciones
- Tipo: el tipo de almacén seguro (como Azure Key Vault, BeyondTrust, CyberArk, HashiCorp Vault, InMemory y otros).
- Contexto: los datos que necesita la implementación de almacén seguro, que varían dependiendo del tipo de almacén.
Consulta el siguiente ejemplo de configuración de almacén seguro:
{
...
"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": {
}
}
]
...
}
}
El parámetro SecureStoreConfigurations es una matriz de configuraciones para que puedas tener tantas configuraciones como quieras. Se admiten varias configuraciones del mismo tipo, siempre que los valores Key sean únicos.
Validación de inicio
Al ejecutarse en modo desconectado, el proxy realiza la validación al iniciarse:
- Valida que existen las configuraciones necesarias en
appsettings.json. - Verifica que no se encuentren claves duplicadas en
SecureStoreConfigurations. - Confirma que todos los valores
Typeson válidos. - Valida la conectividad de almacén (llamadas
ValidateContextAsyncpara cada almacén).
Configuración de nivel de proxy
Algunos almacenes de credenciales seguros requieren configuración en el nivel de host que debe especificarse en appsettings.Production.json:
- CyberArk: ajustes como
CLIPasswordSDKExePath,UsePowerShellCLIyAdditionalAllowedCharactersdeben definirse enAppSettings.{ // ... "AppSettings": { "Plugins.SecureStores.CyberArk.CLIPasswordSDKExePath": "D:\\SomePath\\CLIPasswordSDK.exe", // ... } // ... }{ // ... "AppSettings": { "Plugins.SecureStores.CyberArk.CLIPasswordSDKExePath": "D:\\SomePath\\CLIPasswordSDK.exe", // ... } // ... } - CyberArkCCP: puede requerir
Plugins.SecureStores.CyberArkCCP.KeyStorageFlags = "MachineKeySet".{ // ... "AppSettings": { "Plugins.SecureStores.CyberArkCCP.KeyStorageFlags": "MachineKeySet", // ... } // ... }{ // ... "AppSettings": { "Plugins.SecureStores.CyberArkCCP.KeyStorageFlags": "MachineKeySet", // ... } // ... }
Ejemplos de pruebas de configuración
Consulta los siguientes ejemplos prácticos appsettings.Production.json.
Antes de realizar cualquier cambio en el archivo appsettings.Production.json, asegúrate de crear una copia de seguridad del archivo original. Esto te permite restaurar fácilmente la configuración inicial o comparar los cambios si surgen incidencias durante la configuración.
Ejemplo 1: básico
Configuración con BeyondTrust y Azure Key Vault:
{
"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
}
}
]
}
}
Ejemplo 2: registros adicionales y varias configuraciones
Incluye varios almacenes y registro avanzado.
{
"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",
"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",
"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": {
}
}
]
}
}
Ejemplo 3: ruta de registro personalizada e 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=
	}}"
}
},
"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",
"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=
	}}"
}
},
"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",
"SecureStoreConfigurations": [
{
"Key": "InMemoryKey1",
"Type": "InMemorySecureStore",
"Context": {}
}
]
}
}
Creación de un proxy de credenciales
Una vez que hayas instalado Credentials Proxy de Orchestrator, puedes crear un proxy personalizado, que contenga tus almacenes de credenciales personalizados.
Figura 3. Página Añadir Credentials Proxy 
Para ello, sigue los siguientes pasos:
- A nivel de tenant, selecciona Credenciales > Proxies > Agregar Credentials Proxy. Se muestra la ventana Agregar Credentials Proxy.
- Elige Proxy conectado (gestionado por Orchestrator) o Proxy desconectado (gestionado por el servicio de proxy).
- Agregue un nombre para su proxy.
- Añade la URL perteneciente a la máquina virtual incluida en la configuración del proxy de credenciales de Orchestrator.
- Añade la clave.
Para el proxy conectado, dependiendo del método de instalación, esta es la clave secreta generada por el instalador .msi o la que está asociada al parámetro Jwt:Keys.
Para el proxy desconectado, debe ser una clave que ya existe en uno de los archivos de configuración local del proxy desconectado.
La información que proporcionas en los pasos 4 y 5 crea el enlace entre Orchestrator y la instalación que contiene tus complementos de almacén de credenciales personalizados.
- Selecciona Crear.
A continuación, puedes añadir el almacén deseado de la siguiente manera:
- A nivel de tenant, selecciona Credenciales > Almacenes > Agregar almacén de credenciales para añadir un almacén de credenciales.
- En la lista Proxy , selecciona el proxy que acabas de crear.
- En la lista Tipo , selecciona el almacén de credenciales de terceros definido por tu complemento.
- Proporciona la misma clave de configuración que la del archivo de configuración local del proxy.
Nota:
En las configuraciones desconectadas, asegúrate de que las claves utilizadas en Orchestrator coincidan con las definidas en el archivo de configuración del proxy. En las configuraciones conectadas, Orchestrator gestiona automáticamente las configuraciones.
Editing a credentials proxy
To edit a proxy, click More Actions > Edit. The Edit Credentials Proxy page is displayed, allowing you to change the name, URL, or key as needed.
Eliminar un proxy de credenciales
Para eliminar un proxy, selecciona Más acciones > Eliminar. Si el proxy seleccionado está en uso, se mostrará un cuadro de diálogo de advertencia con el número de UiPath Robots y activos que se verán afectados. Selecciona Sí para confirmar la eliminación o No para abortar.
Figura 4. Pestaña Proxies

- Tipos de proxy
- Configuración desconectada
- Configuraciones de almacén seguro
- Validación de inicio
- Configuración de nivel de proxy
- Ejemplos de prueba de configuración
- Ejemplo 1: básico
- Ejemplo 2: registros adicionales y varias configuraciones
- Ejemplo 3: ruta de registro personalizada e InMemoryStore
- Creación de un proxy de credenciales
- Editing a credentials proxy
- Eliminar un proxy de credenciales