- 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
- Integración de almacenes de credenciales
- Administrar almacenes de credenciales
- El proxy de credenciales de Orchestrator
- Managing credential proxies
- Configuración
- Cloud Robots
- Contexto de carpetas
- Automatizaciones
- Procesos
- Trabajos
- Apps
- Desencadenadores
- Registros
- Supervisión
- Colas
- Activos
- Depósitos de almacenamiento
- Test Suite - Orchestrator
- Servicio de catálogo de recursos
- Integraciones
- Solución de problemas
El proxy de credenciales de Orchestrator
Puede añadir sus propios almacenes de credenciales a Orchestrator para controlar de forma independiente la seguridad de los datos de conexión.
Para ello, puedes cargar los complementos del almacén de credenciales deseados, en forma de archivos .dll, al servicio web Credentials Proxy de Orchestrator. El kit de instalación contiene todos los complementos compatibles con UiPath, pero también puedes desarrollar tus propios archivos .dll de complementopara cargarlos. Este servicio hace que los complementos estén disponibles para Orchestrator a través de un proxy, que se crea en Orchestrator a partir de la URL pública y la clave secreta generada por el proxy.
Esto solo se aplica en escenarios en los que el puerto del proxy de credenciales de Orchestrator se establece en un valor diferente al predeterminado 443.
UiPathOrchestratorCredentialsProxy
se cambia automáticamente a 443, que es el predeterminado. Esto evita que se establezca la conexión al proxy.
Para evitar esto, debes cambiar manualmente el puerto local en la regla de entrada al actualizar.
El proxy de credenciales de Orchestrator se puede instalar a través de un archivo .msi instalador o mediante una imagen de Docker proporcionada por UiPath.
Requisitos de hardware
Estos son los requisitos mínimos para ejecutar el proxy en un servidor Windows con IIS. Las necesidades de recursos reales variarán dependiendo del uso individual.
Núcleos de la CPU |
RAM |
---|---|
2 |
4 GB |
Requisitos de software
Se requieren las siguientes versiones de Windows Server para instalar el proxy:
- 2012 R2
- 2016
- 2019
- 2022
Requisitos previos
Se requiere lo siguiente para poder utilizar el proxy:
- Versiones ASP.NET Core 3.1, 6.0.x o 8.0.x
- IIS versión 8.0 o superior
-
Deben estar instaladas las siguientes características de Windows:
- Documento predeterminado de IIS
- Errores de IIS-Http
- Contenido estático de IIS
- Filtro de solicitudes IIS
- Autorización de IIS
- Autenticación de IIS-Windows
- IIS-ASPNET45
- Extensiones de IIS-ISAPI
- FiltroDeIIS
- IIS-WebSockets
- InicioDeAplicación IIS
- Consola de administración de IIS
Pasos de la instalación
Siga estos pasos para realizar la instalación:
Informacion preliminar
Todos los ajustes del proxy de credenciales de Orchestrator que se pueden editar están disponibles en su archivo appsettings.json. Los siguientes parámetros son importantes en la configuración inicial:
-
Jwt:Keys
: (inicialmente vacía) esta matriz de cadenas se usa para configurar la autenticación del proxy. Esta constituye la clave secreta que utilizará durante el proceso de creación del proxy y que permite a Orchestrator recuperar datos del proxy. Se ignoran los valores no válidos. Si no se encuentran valores válidos, el proxy no se iniciará.Las claves secretas deben estar en base64 y se pueden generar usando uno de los scripts de PowerShell a continuación.
$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
) y los convierte en una cadena 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
: (inicialmente establecido en los almacenes de credenciales predeterminados disponibles en Orchestrator) esta es una cadena CSV que se usa para especificar qué archivos .dll los ensamblados deben cargarse desde el disco (desdepath/plugins
) para permitir que el proxy utilice los almacenes seguros. Agregar ensamblados no válidos a la lista no interrumpirá el inicio, pero recibirá errores de registro cuando intente implementarlo.appSettings:SigningCredentialSettings:FileLocation:SigningCredential:FilePath
yappSettings:SigningCredentialSettings:FileLocation:SigningCredential:Password
: (inicialmente oculto) para cifrar los parámetrosJwt:Keys
ySecureStoreConfigurations:Context
. Esto representa la ruta de archivo a tu certificado de firma.appSettings:SigningCredentialSettings:StoreLocation:Name
,appSettings:SigningCredentialSettings:StoreLocation:Location
,appSettings:SigningCredentialSettings:StoreLocation:NameType
: (inicialmente oculto) para cifrar los parámetrosJwt:Keys
ySecureStoreConfigurations:Context
.
Cifrar el parámetro Jwt:Keys
Jwt:Keys
y SecureStoreConfigurations:Context
en tu archivo appsettings.json
.
UiPath.ConfigProtector.exe
la versión 1.0.9 o superior.
Configurar y ejecutar la imagen de Docker
Para ejecutar el proxy de credenciales de Orchestrator mediante Docker, sigue los pasos que se indican a continuación.
C:\Program Files\UiPath\CredentialsProxy\plugins
.
appsettings.Production.json
del proxy.
CLIPasswordSDKExePath
, UsePowerShellCLI
y AdditionalAllowedCharacters
bajo el parámetro Appsettings
en el archivo appsettings.Production.json
:
{
// ...
"AppSettings": {
"Plugins.SecureStores.CyberArk.CLIPasswordSDKExePath": "D:\\PathName\\CLIPasswordSDK.exe",
// ...
}
// ...
}
{
// ...
"AppSettings": {
"Plugins.SecureStores.CyberArk.CLIPasswordSDKExePath": "D:\\PathName\\CLIPasswordSDK.exe",
// ...
}
// ...
}
appsettings.Production.json
: {
// ...
"AppSettings": {
"Plugins.SecureStores.CyberArkCCP.KeyStorageFlags": "MachineKeySet",
// ...
}
// ...
}
{
// ...
"AppSettings": {
"Plugins.SecureStores.CyberArkCCP.KeyStorageFlags": "MachineKeySet",
// ...
}
// ...
}
appsettings.Production.json
. Puedes encontrar los archivos en la siguiente ubicación: C:\Program Files\UiPath\OrchestratorCredentialsProxy\appsettings.Production.json
.
AppSettings
- SecureStoreConfigurations
:
Key
- la clave del identificador para la configuraciónType
- el tipo de almacén de credenciales, como se identifica en los archivos .dll configurados mediante el parámetroPlugins.SecureStores
encontrado enappsettings.json
(consulta los ejemplos siguientes)Context
- la información de conectividad relacionada con la implementación del almacén seguro
Una vez que edites el archivo de configuración, debes reiniciar el servicio desde IIS.
appsettings.Production.json
para iniciar el proxy desconectado. De lo contrario, el servicio no se iniciará.
Elige el ejemplo adecuado en función de tu tipo de almacén de credenciales o añade varios almacenes de credenciales utilizando el último ejemplo de esta página.
AWS Secrets Manager/AWS Secrets Manager (solo lectura)
"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 (solo lectura)
"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 (lectura/escritura) no es compatible.
BeyondTrust Password Safe - cuentas administradas
"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 - contraseñas de equipos
"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
adicionales de la siguiente manera:
"AppSettings": {
...
"Plugins.SecureStores.CyberArkCCP.KeyStorageFlags": "MachineKeySet",
...
}
"AppSettings": {
...
"Plugins.SecureStores.CyberArkCCP.KeyStorageFlags": "MachineKeySet",
...
}
CyberArk® Conjur Cloud (solo lectura)
"SecureStoreConfigurations": [
{
"Key": "MyCyberArkConjur",
"Type": "CyberArk Conjur Cloud (read only)",
"Context": {
"ServiceUrl": "https://{myCyberArkConjurUrl}/",
"LoginName": "{myLoginName}",
"ApiKey": "{myApiKey}",
"VariableIdPrefix": "{myPrefix}"
}
},
]
"SecureStoreConfigurations": [
{
"Key": "MyCyberArkConjur",
"Type": "CyberArk Conjur Cloud (read only)",
"Context": {
"ServiceUrl": "https://{myCyberArkConjurUrl}/",
"LoginName": "{myLoginName}",
"ApiKey": "{myApiKey}",
"VariableIdPrefix": "{myPrefix}"
}
},
]
HashiCorp Vault / HashiCorp Vault (solo lectura)
"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>"
}
},
]
Secret Server de Thycotic
"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>"
}
},
]
Varios almacenes de credenciales
Si utilizas varios almacenes de credenciales, puedes añadir uno debajo del otro, de la siguiente manera:
{
...
"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"
}
}
]
...
}
}
Esto solo se aplica al credentials proxy desconectado.
Disconnected
.
Estos son algunos de los pasos de validación que realiza el proxy:
-
El proxy garantiza que
appsettings.Production.json
contenga las configuraciones esperadas, como se detalla en la sección Configuración anterior. -
El proxy garantiza que
SecureStoreConfigurations
no contenga ningún parámetroKey
duplicado, es decir, que los almacenes de credenciales configurados en el archivoappsettings.Production.json
sean únicos.
- El parámetro
SecureStoreConfigurations
es una matriz de configuraciones. Puedes añadir tantos almacenes de credenciales como quieras, incluso del mismo tipo. Por ejemplo, puedes tener varias instancias de Azure Key Vault (solo lectura) configuradas, siempre que el campoKey
sea único.
-
El proxy comprueba que todos los valores
Type
son válidos. -
En función de la implementación de cada almacén seguro, el proxy comprueba que se puede acceder al almacén correctamente.
C:\Program Files\UiPath\OrchestratorCredentialsProxy
, si el grupo de aplicaciones del proxy tiene permisos de escritura para esa ruta. Se configuran en IIS.
NLog.targets.logfile.fileName
en appsettings.Production.json
.
En las máquinas de Windows, el proxy también almacena los registros en el Visor de eventos de Windows.
- Orchestrator solo permite direcciones URL seguras (HTTPS) para el proxy. El certificado HTTPS debe ser válido y estar firmado por una autoridad de certificación ampliamente reconocida. No se admiten los certificados autofirmados o firmados por una autoridad interna.
- Orchestrator se valida a través de un secreto de cliente generado por el proxy de credenciales de Orchestrator. El secreto de cliente se almacena en un archivo de configuración en la máquina donde está instalado el Credentials Proxy de Orchestrator, y Orchestrator lo cifra y almacena en la base de datos.
- Al editar un proxy de almacén de credenciales en Orchestrator y cambiar su URL, debes introducir el secreto de cliente.
-
Las acciones de Orchestrator Credentials Proxy 2.0.0+ se registran en el Visor de sucesos de Windows.
- Los binarios deben firmarse en la máquina con Windows.
- La imagen de Docker debe estar firmada.
Si utilizas el proxy en combinación con un equilibrador de carga, asegúrate de mantener la misma configuración en todos los nodos.
- La versión del instalador proxy. Por ejemplo, si utilizas la versión 1.0.0, todos los nodos de equilibrador de carga deben utilizar también 1.0.0.
- La configuración en los archivos de configuración de la aplicación. En la mayoría de los casos, estos son
appsettings.json
yappsettings.Production.json
. Ten en cuenta queappsettings.Production.json
es único para cada instalación, por lo que debes añadirlo manualmente a cada nodo para garantizar la coherencia. - Los complementos del almacén de credenciales añadidos a
path/plugins
. Todos los complementos compatibles con nosotros ya están en esta carpeta, por lo que solo debes tener en cuenta los complementos personalizados que añadas.
- Si quieres realizar algún cambio en la configuración de la imagen de Docker, proporcionamos para instalar el proxy, te recomendamos encarecidamente que crees una imagen de Docker personalizada en su lugar. A continuación, debes utilizar esta imagen personalizada para implementar el proxy en todos los nodos.
- Algunas variables de entorno pueden tener un impacto en el tiempo de ejecución. Por ejemplo, las variables de entorno que anulan los valores de configuración
appsettings.json
o las que afectan al entorno .NET. - Puedes utilizar el punto final no autenticado dedicado
https://{YourOrchestratorCredentialsProxyURL}/api/v1/Health
para comprobar si el Credentials Proxy de Orchestrator sigue ejecutándose.
Para las instalaciones de nodo único, actualiza el certificado SSL de la siguiente manera:
- Importa el nuevo certificado a la carpeta Personal, en Certificados, en la consola de certificados de la máquina local (certlm.msc).
- En la consola de gestión de IIS, expande Sitios y selecciona Proxy de credenciales de UiPath Orchestrator.
- Desde el panel derecho, selecciona Vinculaciones....
- En la vista Vinculaciones..., selecciona el registro predeterminado
https
y luego utiliza el botón Seleccionar... para elegir un certificado. - En la ventana emergente Seleccionar certificado, selecciona el certificado recién añadido.
- Selecciona Aceptar hasta que completes la configuración.
Para las instalaciones multinodo, asegúrate de actualizar el certificado en todas las máquinas.
Para actualizar el certificado para las instalaciones utilizando un equilibrador de carga, utiliza los mismos pasos descritos anteriormente. Dado que Orchestrator Credentials Proxy es sin estado, elimina el nodo del equilibrador de carga al actualizar el certificado.
- Problema conocido
- Instalación
- Requisitos de hardware y software
- A través del archivo .msi instalador
- A través de la imagen de Docker
- Configuración
- Proxy conectado y desconectado
- CyberArk
- CCP de CyberArk
- Solo proxy desconectado
- Ejemplos de configuración
- Validación
- Registro
- Consideraciones de seguridad
- Utilizar el Credentials Proxy de Orchestrator con un equilibrador de carga
- Elementos que deben permanecer idénticos en todos los nodos
- Cosas importantes a considerar
- Actualizar el certificado de Credentials Proxy de Orchestrator