UiPath Documentation
orchestrator
latest
false
Importante :
A localização de um conteúdo recém-publicado pode levar de 1 a 2 semanas para ficar disponível.

Guia do usuário do Orchestrator

Última atualização 14 de mai de 2026

Managing credential proxies

Você pode criar e gerenciar proxies para seus próprios armazenamentos de credenciais personalizados, permitindo controlar individualmente a segurança de suas credenciais.

Tipos de proxy

Você pode escolher entre esses dois tipos:

  • Proxy conectado (gerenciado pelo Orchestrator)
    • quando um robô solicita credenciais, o Orchestrator as recupera do proxy e as passa para o robô.

Figura 1. Arquitetura de proxy conectada

  • Proxy desconectado (gerenciado pelo serviço de proxy) - quando um robô solicita credenciais, elas são recuperadas diretamente do proxy, sem precisar passar pelo Orchestrator. Esse tipo é compatível apenas com a versão 23.10+.

Figura 2. Arquitetura de proxy desconectada

Importante:
  • O proxy de credenciais desconectadas só está disponível se você estiver no plano de licenciamento Enterprise - Avançado .
  • Se quiser recuperar credenciais de proxy desconectadas, você precisa usar as seguintes versões mínimas: 2.0.1 para o proxy e 24.3 para o pacote de atividades do sistema.

Configuração desconectada

O Credentials Proxy do Orchestrator na versão desconectada funciona de maneira semelhante à configuração conectada, com algumas diferenças importantes.

Especifique no arquivo appsettings.json que o proxy deve iniciar em seu modo desconectado. Para fazer isso em AppSettings defina o parâmetro CredentialsProxyType com o valor Disconnected.

Isso instruirá o proxy a operar de forma um pouco diferente na inicialização e a ler sua configuração de armazenamento seguro no appsettings.json arquivo. Se o parâmetro estiver ausente ou se o valor for diferente, o proxy iniciará em seu modo conectado.

Especifique no arquivo appsettings.json que o proxy deve começar em seu modo desconectado. Para fazer isso, em AppSettings, defina o parâmetro CredentialsProxyType com o valor Disconnected.

{
...
  "AppSettings": {
  ...
    "CredentialsProxyType": "Disconnected",
  ...
  }
}
{
...
  "AppSettings": {
  ...
    "CredentialsProxyType": "Disconnected",
  ...
  }
}

Isso instruirá o proxy a operar de maneira um pouco diferente na inicialização e a ler sua configuração de armazenamento seguro no arquivo appsettings.json. Se o parâmetro estiver ausente ou se o valor for diferente, o proxy começará em seu modo conectado.

Configurações de armazenamento seguro

Cada entrada de configuração deve conter:

  • Chave: identificador exclusivo usado no Orchestrator ao vincular armazenamentos. Deve ser único na lista de configurações
  • Tipo: o tipo de armazenamento seguro (como Azure Key Vault, BeyondTrust, CyberArk, HashiCorp Vault, InMemory e outros).
  • Contexto: os dados necessários pela implementação do armazenamento seguro, que varia dependendo do tipo de armazenamento.

Confira o seguinte exemplo de configuração de armazenamento 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": {
        }
      }
    ]
  ...
  }
}
Observação:

O parâmetro SecureStoreConfigurations é um array de configurações para que você possa ter quantas configurações quiser. Várias configurações do mesmo tipo são compatíveis, desde que os valores Key sejam exclusivos.

Validação de inicialização

Ao executar no modo desconectado, o proxy executa a validação na inicialização:

  • Valida que as configurações necessárias existem em appsettings.json.
  • Verifica se nenhuma chave duplicada é localizada em SecureStoreConfigurations.
  • Confirma que todos os valores Type são válidos.
  • Valida a conectividade do cofre (chamadas ValidateContextAsync para cada armazenamento).

Configurações do nível do proxy

Alguns armazenamentos de credenciais seguros exigem configuração no nível do host que precisa ser especificada em appsettings.Production.json:

  • CyberArk: configurações como CLIPasswordSDKExePath, UsePowerShellCLI e AdditionalAllowedCharacters devem ser definidas em AppSettings.
    {
    // ...
      "AppSettings": {
        "Plugins.SecureStores.CyberArk.CLIPasswordSDKExePath": "D:\\SomePath\\CLIPasswordSDK.exe",
        // ...
      }
      // ...
    }
    {
    // ...
      "AppSettings": {
        "Plugins.SecureStores.CyberArk.CLIPasswordSDKExePath": "D:\\SomePath\\CLIPasswordSDK.exe",
        // ...
      }
      // ...
    }
    
  • CyberArkCCP: pode exigir Plugins.SecureStores.CyberArkCCP.KeyStorageFlags = "MachineKeySet".
    {
    // ...
      "AppSettings": {
        "Plugins.SecureStores.CyberArkCCP.KeyStorageFlags": "MachineKeySet",
        // ...
      }
      // ...
    }
    {
    // ...
      "AppSettings": {
        "Plugins.SecureStores.CyberArkCCP.KeyStorageFlags": "MachineKeySet",
        // ...
      }
      // ...
    }
    

Exemplos de teste de configuração

Confira os seguintes exemplos appsettings.Production.json práticos.

Observação:

Antes de fazer alterações no arquivo appsettings.Production.json certifique-se de criar um backup do arquivo original. Isso permite que você restaure facilmente a configuração inicial ou compare alterações se surgirem problemas durante a configuração.

Exemplo 1: básico

Configuração com o BeyondTrust e o 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
        }
      }
    ]
  }
}

Exemplo 2: logs extras e várias configurações

Inclui vários cofres e registro avançado.

{
  "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": {
        }
      }
    ]
  }
}

Exemplo 3: caminho de log personalizado 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=&#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",
    "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",
    "SecureStoreConfigurations": [
      {
        "Key": "InMemoryKey1",
        "Type": "InMemorySecureStore",
        "Context": {}
      }
    ]
  }
}

Criação de um Credentials Proxy

Depois de instalar o Orchestrator Credentials Proxy, você pode criar um proxy personalizado, que mantém seus armazenamentos de credenciais personalizados.

Figura 3. página Adicionar Credentials Proxy

Para fazer isso, siga as etapas abaixo:

  1. No nível do tenant, selecionar Credenciais > Proxies > Adicionar Credentials Proxy. A janela Adicionar Credentials Proxy é exibida.
  2. Escolha proxy conectado (Gerenciado pelo Orchestrator) ou proxy desconectado (Gerenciado pelo serviço de proxy).
  3. Adicione um nome para seu proxy.
  4. Adicione o URL pertencente à máquina virtual incluída na configuração do Orchestrator Credentials Proxy.
  5. Adicione a chave.

Para o proxy conectado, dependendo do método de instalação, esta é a chave secreta gerada pelo instalador .msi, instalador ou aquele mantido pelo parâmetro Jwt:Keys.

Para o proxy desconectado, esta deve ser uma chave que já exista em um dos arquivos de configuração local do proxy desconectado.

As informações fornecidas nas etapas 4 e 5 criam o link entre o Orchestrator e a instalação que contém seus plugins de armazenamento de credenciais personalizados.

  1. Selecione Criar.

Você pode adicionar a loja desejada da seguinte maneira:

  1. No nível do tenant, selecionar Credenciais > Armazenamentos > Adicionar armazenamento de credenciais para adicionar um armazenamento de credenciais..
  2. Na lista Proxy , selecione o proxy que você acabou de criar.
  3. Na lista Tipo , selecione o armazenamento de credenciais de terceiros definido pelo seu plug-in.
  4. Forneça a chave de configuração correspondente à do arquivo de configuração local do proxy.
    Observação:

    Para configurações desconectadas, certifique-se de que as chaves usadas no Orchestrator correspondam às definidas no arquivo de configuração do proxy. Para configurações conectadas, o Orchestrator gerencia as configurações automaticamente.

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.

Como excluir um Credentials Proxy

Para excluir um proxy, selecione Mais ações > Remover. Se o proxy selecionado estiver em uso, será exibida uma caixa de diálogo de aviso, listando o número de robôs e ativos que serão afetados. Selecione Sim para confirmar a remoção ou Não para abortar.

Figura 4. Aba Proxies

Esta página foi útil?

Conectar

Precisa de ajuda? Suporte

Quer aprender? Academia UiPath

Tem perguntas? Fórum do UiPath

Fique por dentro das novidades