- Introdução
- Melhores práticas
- Tenant
- Sobre o contexto do tenant
- Pesquisa de recursos em um tenant
- Gerenciamento de robôs
- Conectar Robôs ao Orchestrator
- Armazenamento de credenciais do robô no CyberArk
- Armazenamento de senhas do Unattended Robot no Azure Key Vault (somente leitura)
- Armazenamento de credenciais do Unattended Robot no HashiCorp Vault (somente leitura)
- Armazenando credenciais de Unattended Robots no AWS Secrets Manager (somente leitura)
- Exclusão de sessões não assistidas desconectadas e não responsivas
- Autenticação do robô
- Autenticação de robôs com credenciais de cliente
- Configuração de recursos de automação
- Soluções
- Auditar
- Configurações
- Registro
- Notificações
- Contexto de Pastas
- Processos
- Trabalhos
- Apps
- Gatilhos
- Logs
- Monitoramento
- Índices
- Filas
- Ativos
- Sobre ativos
- Gerenciamento de ativos no Orchestrator
- Gerenciamento de ativos no Studio
- Armazenamento de ativos no Azure Key Vault (somente leitura)
- Armazenamento de ativos no HashiCorp Vault (somente leitura)
- Armazenando ativos no AWS Secrets Manager (somente leitura)
- Armazenamento de ativos no Google Secret Manager (somente leitura)
- Conexões
- Regras de Negócios
- Armazenar Buckets
- Gateway do agente
- Teste do Orquestrador
- Serviço Catálogo de recursos
- Integrações
- Solução de problemas
Configure o Orchestrator Credentials Proxy para conectar plug-ins de armazenamento de credenciais personalizados ao Orchestrator.
Você pode adicionar seus próprios armazenamentos de credenciais ao Orchestrator, para controlar independentemente a segurança de seus dados de conexão.
Para fazê-lo, você pode carregar seus plug-ins de armazenamento de credenciais desejados, na forma de arquivos .dll, para o serviço da Web Orchestrator Credentials Proxy. O kit de instalação contém todos os plug-ins compatíveis com o UiPath, mas você também pode desenvolver seus próprios arquivos .dll de plug-in para carregar.
Esse serviço torna seus plugins disponíveis para o Orchestrator por meio de um proxy, que é criado no Orchestrator com base no URL público e na chave secreta gerada pelo proxy.
Problema conhecido
Porta personalizada redefinida para 443 após uma atualização
Esse problema aplica-se apenas se o Credentials Proxy do Orchestrator estiver configurado para usar uma porta diferente da padrão 443.
Quando você atualiza a partir de qualquer versão entre a 1.0.0 e a 2.0.1 e você usa uma porta personalizada, a porta local na regra de entrada UiPathOrchestratorCredentialsProxy é alterada automaticamente para 443, que é o padrão. Isso impede que a conexão com o proxy seja estabelecida.
Para contornar isso, você precisa alterar manualmente a porta local na regra de entrada após a atualização.
Instalação
O Orchestrator Credentials Proxy pode ser instalado por meio de um arquivo .msi instalador ou por meio de uma imagem do Docker fornecida pela UiPath.
Por meio do instalador .msi instalador
Pré-requisitos
O Credentials Proxy do Orchestrator é um aplicativo da Web ASP.NET Core hospedado no IIS, portanto, você pode instalá-lo em qualquer edição do Windows que possa hospedar o IIS 8.0 ou posterior. Isso inclui o Windows Server e os clientes do Windows 10 e Windows 11. O Windows Server não é um requisito.
Requisitos de Hardware
Esses são os requisitos mínimos para executar o proxy em uma máquina Windows com IIS. As necessidades reais de recursos variam dependendo do uso individual.
| Núcleos da CPU | BATER |
|---|---|
| 2 | 4GB |
Requisitos de software
A máquina que hospeda o proxy deve atender aos seguintes requisitos:
- Sistema operacional - qualquer edição do Windows que suporte o IIS 8.0 ou posterior. O Windows Server 2012 R2, 2016, 2019, 2022 e 2025 atendem a esse requisito, assim como o Windows 10 e o Windows 11.
- IIS - versão 8.0 ou posterior.
- Pacote de hospedagem.NET - versão 10.0 ou posterior para o Credentials Proxy 2.2.2 e posterior do Orchestrator, que é executado no.NET 10. Versões de proxy anteriores à 2.2.2 exigem a versão 3.1 ou posterior. O pacote instala o ASP.NET Core Runtime e o Módulo ASP.NET Core IIS, do qual o proxy precisa para ser executado no IIS.
Importante:
Se você atualizar para o Orchestrator Credentials Proxy 2.2.2 ou posterior a partir de uma versão anterior, instale o Pacote de Hospedagem do.NET 10 na máquina host e reinicie o IIS antes de iniciar o proxy atualizado. Sem ele, o proxy falha ao iniciar no IIS.
Além disso, os seguintes recursos do IIS devem ser habilitados:
- IIS-DefaultDocument
- IIS-HttpErrors
- IIS-StaticContent
- IIS-RequestFiltering
- IIS-URLAuthorization
- IIS-WindowsAuthentication
- IIS-ASPNET45
- IIS-ISAPIExtensions
- IIS-ISAPIFilter
- IIS-WebSockets
- IIS-ApplicationInit
- IIS-ManagementConsole
O modo como você habilita essas funcionalidades depende da edição do Windows:
- Windows Server — use Gerenciador do servidor > Adicionar funções e funcionalidades.
- Windows 10 e Windows 11 - use o utilitário Ativar ou desativar recursos do Windows , em Painel de Controle > Programas.
O instalador verifica a versão do IIS, o Módulo ASP.NET Core IIS e os recursos do IIS listados acima antes de instalar qualquer coisa. Se algum deles estiver ausente, a instalação será interrompida e relatará o que precisa ser adicionado.
Passos de instalação
Siga estas etapas para realizar a instalação:
- Baixe o instalador Credential Proxy do UiPath Orchestrator no Customer Portal.
- Instale o proxy.
Proxy conectado
- URL pública - a URL do Credentials Proxy do Orchestrator que é exposta publicamente
- Certificado SSL - o Assunto ou Impressão digital do certificado SSL usado para proteger conexões com o Credentials Proxy do Orchestrator. Este é o certificado SSL instalado no computador ou servidor web que hospeda o proxy. Observe que deve ser emitido por um provedor de certificados públicos e precisa ser válido para o URL Público.
- Port - the port corresponding to the Public URL
- Secret Key - (automatically generated) the key needed for configuring a custom proxy in the Orchestrator interface; make sure to copy it to your clipboard for future use.
Isso pode ser alterado manualmente e também é adequado para rotação de chave.
Proxy desconectado
Essa funcionalidade só estará disponível se você estiver no plano de licenciamento Enterprise - Advanced para o Plano de Preços Flex ou Enterprise ou Application Test Enterprise para o Unified Pricing Plan.
- Certificado SSL - o Assunto ou Impressão digital do certificado SSL usado para proteger conexões com o Credentials Proxy do Orchestrator. Este é o certificado SSL instalado no computador ou servidor web que hospeda o proxy. Como os robôs se conectam ao proxy dentro de sua própria infraestrutura, esse certificado pode ser autoassinado ou emitido por sua autoridade de certificação interna, desde que as máquinas que executam seus robôs confiem nele.
- Porta - a porta correspondente ao URL
- Secret Key - (automatically generated) the key needed for configuring a custom proxy in the Orchestrator interface; make sure to copy it to your clipboard for future use.
Isso pode ser alterado manualmente e também é adequado para rotação de chave.
Para o proxy desconectado, os robôs se conectam diretamente ao proxy, sem passar pelo Orchestrator. Essa conexão usa HTTPS, na porta configurada para a URL pública do proxy (443 por padrão). Consulte Gerenciamento de proxies de armazenamento de credenciais para obter mais informações sobre tipos de proxy conectados e desconectados.
Após a instalação, o parâmetro
A opção Autenticação anônima deve ser definida como habilitada no IIS para que o proxy funcione.
Criptografando o parâmetro Jwt:Keys
Para adicionar uma camada extra de segurança, você pode criptografar os parâmetros Jwt:Keys e SecureStoreConfigurations:Context em seu arquivo appsettings.json .
Isso requer UiPath.ConfigProtector.exe versão 1.0.9 ou superior.
Por meio da imagem do Docker
Informação preliminar
Todas as configurações do Credentials Proxy do Orchestrator que podem ser editadas estão disponíveis em seu arquivo appsettings.json. Os seguintes parâmetros são importantes na configuração inicial:
Jwt:Keys- (inicialmente vazio) este array de strings é usado para configurar a autenticação do proxy. Isso constitui a chave secreta que você usará durante o processo de criação do proxy e que permite ao Orchestrator recuperar dados do proxy com êxito. Quaisquer valores inválidos são ignorados. Se nenhum valor válido for encontrado, o proxy não será iniciado.
As chaves secretas devem estar em base64 e podem ser geradas usando um dos scripts do PowerShell abaixo.
$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
O script acima gera 64 bytes aleatórios (usando SeccureRandom) e os converte em uma string 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 definido para os armazenamentos de credenciais padrão disponíveis no Orchestrator) esta é uma string CSV usada para especificar o que .dll os assemblies devem ser carregados do disco (depath/plugins) para permitir que armazenamentos seguros sejam usados pelo proxy. Adicionar assemblies inválidos à lista não interromperá a inicialização, mas você receberá erros de log ao tentar implantá-lo.appSettings:SigningCredentialSettings:FileLocation:SigningCredential:FilePatheappSettings:SigningCredentialSettings:FileLocation:SigningCredential:Password- (inicialmente oculto) para serem usados para criptografar os parâmetrosJwt:KeyseSecureStoreConfigurations:Context. Isso representa o caminho do arquivo para seu certificado de assinatura.appSettings:SigningCredentialSettings:StoreLocation:Name,appSettings:SigningCredentialSettings:StoreLocation:Location,appSettings:SigningCredentialSettings:StoreLocation:NameType- (inicialmente oculto) para ser usado para criptografar os parâmetrosJwt:KeyseSecureStoreConfigurations:Context.
Configurando e executando a imagem do Docker
Para executar o Orchestrator Credentials Proxy usando o Docker, siga as etapas abaixo.
- Baixe a imagem do Docker
A imagem está disponível para download em http://registry.uipath.com/.
Certifique-se de incluir a versão necessária do Orchestrator Credentials Proxy no URL. Por exemplo, para baixar a imagem da versão 2.1.4, use:
http://registry.uipath.com/orchestrator-credentialsproxy:2.1.4
http://registry.uipath.com/orchestrator-credentialsproxy:2.1.4
Este URL aponta para uma imagem do Docker e deve ser acessado por meio da CLI do Docker, não por meio de um navegador da web.
Observe que a versão 1.0.0 Apenas oferece suporte ao proxy conectado, enquanto as versões 2.0.0+ também oferecem suporte ao proxy desconectado.
Use este comando para obter a imagem:
$bytes = [System.Security.Cryptography.RandomNumberGenerator]::GetBytes(64);
$jwtSigningKey = [Convert]::ToBase64String($bytes);
docker run -e LICENSE_AGREEMENT=accept -e Jwt__Keys__0=$jwtSigningKey -p 8000:8080 registry.uipath.com/orchestrator-credentialsproxy:1.0.0
$bytes = [System.Security.Cryptography.RandomNumberGenerator]::GetBytes(64);
$jwtSigningKey = [Convert]::ToBase64String($bytes);
docker run -e LICENSE_AGREEMENT=accept -e Jwt__Keys__0=$jwtSigningKey -p 8000:8080 registry.uipath.com/orchestrator-credentialsproxy:1.0.0
Essa é a imagem UiPath padrão, que contém os armazenamentos de credenciais que já estão disponíveis em sua conta de nuvem. Você pode implantar a imagem no ambiente de nuvem da sua escolha.
O comando acima também gera a chave secreta.
- Crie sua própria imagem personalizada do Docker
Você pode criar sua própria imagem do Docker, com assemblies adicionais, com base na imagem fornecida pelo UiPath e baixada na etapa 1. Fazer isso:
- Crie um novo Dockerfile (para fins de ilustração, vamos chamá-lo de
CustomDockerfile) e adicione o seguinte a ele:FROM {docker-image-path} RUN rm -rf ./plugins COPY --chown=1001:0 {path of your custom assemblies} ./plugins ENTRYPOINT ["dotnet", "UiPath.OrchestratorCredentialsProxy.dll"]FROM {docker-image-path} RUN rm -rf ./plugins COPY --chown=1001:0 {path of your custom assemblies} ./plugins ENTRYPOINT ["dotnet", "UiPath.OrchestratorCredentialsProxy.dll"]- Substitua
{docker-image-path}pelo caminho para a imagem inicial do Docker, fornecido por UiPath. - Substitua
{path of your custom assemblies}pelo caminho para seu próprio arquivo de armazenamento de credenciais .dll. Descubra como o Visual Studio usa esse Dockerfile para criar suas imagens para uma depuração mais rápida.
- Substitua
- Gere a imagem do Docker usando este comando, que inclui o nome do Dockerfile recém-criado:
docker build -f CustomDockerfile . -t customproxydocker build -f CustomDockerfile . -t customproxy - Execute a imagem do Docker:
docker run --publish 8000:8080 -e LICENSE_AGREEMENT="accept" -e Jwt__Keys__0=$jwtSigningKey -e appSettings__Plugins.SecureStores="{your-list-of-assemblies}" customproxydocker run --publish 8000:8080 -e LICENSE_AGREEMENT="accept" -e Jwt__Keys__0=$jwtSigningKey -e appSettings__Plugins.SecureStores="{your-list-of-assemblies}" customproxy- Substitua
{your-list-of-assemblies}pelo .dll arquivos dos armazenamentos de credenciais personalizados que você deseja adicionar ao Orchestrator.
- Substitua
Para executar a imagem com um parâmetro Jwt:Keys :
```
docker run --publish 8000:8080 -e LICENSE_AGREEMENT="accept" -e Jwt__Keys__0=$jwtSigningKey {docker-image-name}
```
```
docker run --publish 8000:8080 -e LICENSE_AGREEMENT="accept" -e Jwt__Keys__0=$jwtSigningKey {docker-image-name}
```
Para executar a imagem com vários parâmetros Jwt:Keys:
```
docker run --publish 8000:8080 -e LICENSE_AGREEMENT="accept" -e Jwt__Keys__0==$jwtSigningKey" -e Jwt__Keys__1==$jwtSigningKey" -e Jwt__Keys__2==$jwtSigningKey ... {docker-image-name}
```
* Replace `{docker-image-name}` with the name you set for your custom Docker image.
```
docker run --publish 8000:8080 -e LICENSE_AGREEMENT="accept" -e Jwt__Keys__0==$jwtSigningKey" -e Jwt__Keys__1==$jwtSigningKey" -e Jwt__Keys__2==$jwtSigningKey ... {docker-image-name}
```
* Replace `{docker-image-name}` with the name you set for your custom Docker image.
Para executar a imagem com um valor personalizado para o parâmetro appSettings:Plugins.SecureStores (ou seja, com o armazenamento de credenciais desejado), substitua o conteúdo desse parâmetro por seu próprio armazenamento de credenciais .dll arquivos:
```
docker run --publish 8000:8080 -e LICENSE_AGREEMENT="accept" -e Jwt__Keys__0=$jwtSigningKey -e appSettings__Plugins.SecureStores="UiPath.Orchestrator.CyberArk.dll;UiPath.Orchestrator.AzureKeyVault.SecureStore.dll" {docker-image-name}
```
```
docker run --publish 8000:8080 -e LICENSE_AGREEMENT="accept" -e Jwt__Keys__0=$jwtSigningKey -e appSettings__Plugins.SecureStores="UiPath.Orchestrator.CyberArk.dll;UiPath.Orchestrator.AzureKeyVault.SecureStore.dll" {docker-image-name}
```
4. (Opcional) Teste a nova imagem do Docker
Para testar sua imagem, acesse sua interface Swagger em http://localhost:8000/swagger/index.html e verifique se o ponto de extremidade dedicado não autenticado /Health está funcionando. Uma solicitação bem-sucedida retorna uma resposta em branco com um código de status HTTP 200 OK.
Configuração
Proxy conectado e desconectado
A primeira etapa na configuração de seu proxy é adicionar quaisquer plugins .dll personalizados que você deseja usar na pasta
Alguns armazenamentos de credenciais podem exigir que você defina configurações no nível do aplicativo, host ou proxy.As configurações são equivalentes a suas equivalentes no Orchestrator.Você deve especificar essas configurações no arquivo appsettings.Production.json do proxy.
CyberArk
Você deve adicionar quaisquer configurações no nível do host, como CLIPasswordSDKExePath, UsePowerShellCLI e AdditionalAllowedCharacters no parâmetro Appsettings no arquivo appsettings.Production.json:
{
// ...
"AppSettings": {
"Plugins.SecureStores.CyberArk.CLIPasswordSDKExePath": "D:\\PathName\\CLIPasswordSDK.exe",
// ...
}
// ...
}
{
// ...
"AppSettings": {
"Plugins.SecureStores.CyberArk.CLIPasswordSDKExePath": "D:\\PathName\\CLIPasswordSDK.exe",
// ...
}
// ...
}
CyberArk CCP
O Credentials Proxy é executado em uma conta de serviço que não tem perfil de usuário carregado. Por padrão, ele usa um armazenamento de chaves que requer um perfil de usuário carregado, que não está disponível para a conta de serviço; portanto, a chave privada do certificado do cliente do CyberArk CCP falha ao carregar e a recuperação de credenciais por meio do CyberArk CCP falha. Para carregar o certificado corretamente nesse contexto, você deve adicionar o seguinte a appsettings.Production.json:
{
// ...
"AppSettings": {
"Plugins.SecureStores.CyberArkCCP.KeyStorageFlags": "MachineKeySet",
// ...
}
// ...
}
{
// ...
"AppSettings": {
"Plugins.SecureStores.CyberArkCCP.KeyStorageFlags": "MachineKeySet",
// ...
}
// ...
}
HashiCorp Vault
Dois tipos de configurações controlam os armazenamentos de credenciais do HashiCorp Vault e do HashiCorp Vault (somente leitura) :
- As configurações no nível do host governam o comportamento do plug-in para todo o proxy. Você os adiciona sob
AppSettingsno arquivoappsettings.Production.json, prefixados com o nome do armazenamento. Eles se aplicam a ambos os tipos de proxy. - Os parâmetros de contexto descrevem uma conexão com o Vault. Um proxy desconectado os lê na seção
SecureStoreConfigurationsdo mesmo arquivo, conforme mostrado na seção Exemplos de configuração . Um proxy conectado os recebe do Orchestrator.
Para o que cada parâmetro de contexto significa e para como SecretsEngineMountPath e DataPath resolvem o caminho de um segredo individual, consulte HashiCorp Vault em Gerenciamento de armazenamentos de credenciais. Cada chave JSON é o rótulo de campo dessa página sem os espaços, exceto para LdapUseDynamicCredentials, que é (Ldap) Usar Credenciais Dinâmicas e KerberosSPN, que é SPN totalmente qualificado do Kerberos.
Configurações ao nível do host
Cada armazenamento lê apenas seu próprio prefixo — Plugins.SecureStores.HashiCorp Vault. ou Plugins.SecureStores.HashiCorp Vault (read only). — então, para configurar ambos os armazenamentos, adicione cada configuração duas vezes.
| Configuração | Padrão | Description |
|---|---|---|
KerberosEnabled | false | Disponibiliza os tipos de autenticação KerberosUserPassword e KerberosDefaultCredentials. O Kerberos não está disponível quando o proxy é executado a partir da imagem do Docker, independentemente do que essa configuração definir. |
ForwardToActiveNode | false | Adiciona o cabeçalho X-Vault-Forward: active-node a cada solicitação, para que um nó de espera de desempenho o encaminhe para o nó ativo. Apenas no Vault Enterprise. |
ClientCacheDurationSeconds | 600 | Por quanto tempo um cliente do Vault autenticado permanece em cache entre operações. |
MaxRetries | 5 | Quantas vezes o plug-in repete uma solicitação do Vault que retorna HTTP 403, 412, 429, 500 ou 503. |
RetryDelayMilliseconds | 3000 | Atraso entre novas tentativas. Com os valores padrão, um erro de permissão leva cerca de 15 segundos para aparecer. |
Para habilitar o protocolo de autenticação Kerberos e ativar o encaminhamento de nós para o HashiCorp Vault, adicione os seguintes parâmetros ao arquivo appsettings.Production.json:
{
// ...
"AppSettings": {
"Plugins.SecureStores.HashiCorp Vault.KerberosEnabled": "true", // Optional, for Kerberos enablement
"Plugins.SecureStores.HashiCorp Vault.ForwardToActiveNode": "true", // Optional, for forwarding to active node
// ...
}
// ...
}
{
// ...
"AppSettings": {
"Plugins.SecureStores.HashiCorp Vault.KerberosEnabled": "true", // Optional, for Kerberos enablement
"Plugins.SecureStores.HashiCorp Vault.ForwardToActiveNode": "true", // Optional, for forwarding to active node
// ...
}
// ...
}
Se o proxy alcançar o Vault por meio de um proxy de encaminhamento, configure-o com as seguintes configurações:
HttpProxy.Outbound.EnabledHttpProxy.Outbound.AddressHttpProxy.Outbound.UsernameHttpProxy.Outbound.Password
Eles não são prefixados com um nome de armazenamento e se aplicam a todos os plug-in de armazenamento de credenciais carregados pelo proxy.
HashiCorp Vault (somente leitura)
O armazenamento somente leitura utiliza os mesmos parâmetros de contexto e as mesmas configurações no nível do host que o armazenamento leitura-gravação, com duas diferenças:
- Ele também aceita
ActiveDirectory,OpenLDAPeLDAPcomo o valorSecretsEngine. - Você mesmo provisiona os segredos no Vault, no layout que o Orchestrator espera. Consulte Armazenamento de ativos no HashiCorp Vault (somente leitura) e Armazenamento de credenciais de robô não assistido no HashiCorp Vault (somente leitura).
Para habilitar o protocolo de autenticação Kerberos e ativar o encaminhamento de nós para o HashiCorp Vault (somente leitura), adicione os seguintes parâmetros ao arquivo appsettings.Production.json:
{
// ...
"AppSettings": {
"Plugins.SecureStores.HashiCorp Vault (read only).KerberosEnabled": "true", // Optional, for Kerberos enablement
"Plugins.SecureStores.HashiCorp Vault (read only).ForwardToActiveNode": "true", // Optional, for forwarding to active node
// ...
}
// ...
}
{
// ...
"AppSettings": {
"Plugins.SecureStores.HashiCorp Vault (read only).KerberosEnabled": "true", // Optional, for Kerberos enablement
"Plugins.SecureStores.HashiCorp Vault (read only).ForwardToActiveNode": "true", // Optional, for forwarding to active node
// ...
}
// ...
}
Somente proxy desconectado
Esse tipo de proxy é completamente separado do Orchestrator, então você deve fornecer as informações relacionadas aos cofres de credenciais localmente, no arquivo de configuração appsettings.Production.json. Você pode encontrar os arquivos no seguinte local: C:\Program Files\UiPath\OrchestratorCredentialsProxy\appsettings.Production.json.
Você deve editar os seguintes campos no referido arquivo, na AppSettings - seção SecureStoreConfigurations:
Key" id="1"/> - a chave de identificador para a configuração Type" id="1"/> - o tipo de cofre de credenciais, conforme identificado no .dll arquivos configurados por meio do parâmetro Plugins.SecureStores" id="2"/> encontrado em appsettings.json" id="3"/> (consulte os exemplos abaixo) Context" id="1"/> - as informações de conectividade relacionadas à implementação de armazenamento seguro Importante:Depois de editar o arquivo de configuração, você precisa reiniciar o serviço a partir do IIS.
Exemplos de configuração
Você precisa adicionar os seguintes exemplos ao arquivo de configuração appsettings.Production.json para iniciar o proxy desconectado. Caso contrário, o serviço não será iniciado.
Escolha o exemplo apropriado com base em seu tipo de armazenamento de credenciais ou adicione vários armazenamentos de credenciais usando o último exemplo nesta página.
Você deve editar os seguintes campos no referido arquivo, na AppSettings - seção SecureStoreConfigurations:
Key" id="1"/> - a chave de identificador para a configuração Type" id="1"/> - o tipo de cofre de credenciais, conforme identificado no .dll arquivos configurados por meio do parâmetro Plugins.SecureStores" id="2"/> encontrado em appsettings.json" id="3"/> (consulte os exemplos abaixo) Context" id="1"/> - as informações de conectividade relacionadas à implementação de armazenamento seguro Importante:Depois de editar o arquivo de configuração, você precisa reiniciar o serviço a partir do IIS.
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.
AWS Secrets Manager/AWS Secrets Manager (somente leitura)
...
"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 (somente leitura)
...
"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 (leitura/gravação) não é compatível.
BeyondTrust Password Safe - Managed Accounts
...
"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 Passwords
...
"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>"
}
},
]
...
Quaisquer configurações no nível do Host, como CLIPasswordSDKExePath, UsePowerShellCLI, ou AdditionalAllowedCharacters precisam ser colocadas sob o parâmetro Appsettings, semelhante à forma como é feito para o Orchestrator.
{
// ...
"AppSettings": {
"Plugins.SecureStores.CyberArk.CLIPasswordSDKExePath": "D:\\<MyPath>\\CLIPasswordSDK.exe",
"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;UiPath.Orchestrator.SecureStore.GoogleSecretManager.dll;UiPath.Orchestrator.SecureStore.DelineaSecretServer.dll",
"CredentialsProxyType": "Disconnected"
// ...
}
// ...
{
// ...
"AppSettings": {
"Plugins.SecureStores.CyberArk.CLIPasswordSDKExePath": "D:\\<MyPath>\\CLIPasswordSDK.exe",
"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;UiPath.Orchestrator.SecureStore.GoogleSecretManager.dll;UiPath.Orchestrator.SecureStore.DelineaSecretServer.dll",
"CredentialsProxyType": "Disconnected"
// ...
}
// ...
CyberArk - CCP
...
"SecureStoreConfigurations": [
{
"Key": "<MyCyberArkCCPStore>",
"Type": "CyberArkCCP",
"Context": {
"ApplicationId": "<ApplicationId>",
"Safe": "<CyberArkSafe>",
"Folder": "<CyberArkFolder>",
"WebServiceUrl": "<CentralCredentialProviderUrl>",
"WebServiceName": "<WebServiceName>",
"SerializedClientCertificate": "<ClientCertificate>", // must be the ".pfx" file's content as base64 string
"ClientCertificatePassword": "<ClientCertificatePassword>",
"SerializedRootCA": "<someServerRootCA>" // must be the ".crt" or ".cer" file's content as base64 string
}
},
]
...
...
"SecureStoreConfigurations": [
{
"Key": "<MyCyberArkCCPStore>",
"Type": "CyberArkCCP",
"Context": {
"ApplicationId": "<ApplicationId>",
"Safe": "<CyberArkSafe>",
"Folder": "<CyberArkFolder>",
"WebServiceUrl": "<CentralCredentialProviderUrl>",
"WebServiceName": "<WebServiceName>",
"SerializedClientCertificate": "<ClientCertificate>", // must be the ".pfx" file's content as base64 string
"ClientCertificatePassword": "<ClientCertificatePassword>",
"SerializedRootCA": "<someServerRootCA>" // must be the ".crt" or ".cer" file's content as base64 string
}
},
]
...
Com base em sua configuração do IIS, você pode precisar configurar KeyStorageFlags adicional da seguinte forma:
"AppSettings": {
...
"Plugins.SecureStores.CyberArkCCP.KeyStorageFlags": "MachineKeySet",
...
}
"AppSettings": {
...
"Plugins.SecureStores.CyberArkCCP.KeyStorageFlags": "MachineKeySet",
...
}
Você pode transferir um arquivo PFX, CRT ou CER para uma string base64 da seguinte forma:
$fileContentBytes = get-content 'C:\path\to\the.pfx' -Encoding Byte
[System.Convert]::ToBase64String($fileContentBytes) | Out-File 'C:\path\to\the.txt'
$fileContentBytes = get-content 'C:\path\to\the.pfx' -Encoding Byte
[System.Convert]::ToBase64String($fileContentBytes) | Out-File 'C:\path\to\the.txt'
CyberArk® Conjur Cloud (somente leitura)
...
"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}"
}
},
]
...
CyberArk® Conjur (SomenteLeitura)
...
"SecureStoreConfigurations": [
{
"Key": "MyCyberArkConjur",
"Type": "CyberArk Conjur (read only)",
"Context": {
"ApplianceUrl": "https://{company}.secretsmgr.cyberark.cloud/api",
"Account": "{myAccount}",
"AuthenticationType": "{Jwt|ApiKey}",
"JWT": {
"JwtServiceId": "{myJwtServiceId}",
"IdentityProviderUrl": "{myIdentityProviderUrl}",
"ClientId": "{myClientId}",
"ClientSecret": "{myClientSecret}",
"Scope": "{myScope}"
},
"ApiKey": {
"LoginName": "{myLoginName}",
"Key": "{myApiKey}"
},
"HostId": "{myHostId}",
"VariableIdPrefix": "{myPrefix}"
}
},
]
...
...
"SecureStoreConfigurations": [
{
"Key": "MyCyberArkConjur",
"Type": "CyberArk Conjur (read only)",
"Context": {
"ApplianceUrl": "https://{company}.secretsmgr.cyberark.cloud/api",
"Account": "{myAccount}",
"AuthenticationType": "{Jwt|ApiKey}",
"JWT": {
"JwtServiceId": "{myJwtServiceId}",
"IdentityProviderUrl": "{myIdentityProviderUrl}",
"ClientId": "{myClientId}",
"ClientSecret": "{myClientSecret}",
"Scope": "{myScope}"
},
"ApiKey": {
"LoginName": "{myLoginName}",
"Key": "{myApiKey}"
},
"HostId": "{myHostId}",
"VariableIdPrefix": "{myPrefix}"
}
},
]
...
Servidor secreto Delinea (somente leitura)
O Delinea Secret Server (somente leitura) requer o Orchestrator Credentials Proxy 2.2.2 ou posterior. Seu plug-in, UiPath.Orchestrator.SecureStore.DelineaSecretServer.dll, é enviado com o kit de instalação e está listado em Plugins.SecureStores por padrão, portanto, você não precisa adicioná-lo manualmente.
Este é um armazenamento de credenciais somente leitura. O proxy pode recuperar valores de ativos e credenciais de robôs, mas não pode criar, atualizar ou excluir segredos.
...
"SecureStoreConfigurations": [
{
"Key": "<MyDelineaServer>",
"Type": "Delinea Secret Server (read only)",
"Context": {
"PlatformServerUrl": "<PlatformServerUrl>",
"SecretServerUrl": "<SecretServerUrl>",
"RuleName": "<Rule>",
"RuleKey": "<Key>",
"UsernameField": "<Username>",
"PasswordField": "<Password>"
}
},
]
...
...
"SecureStoreConfigurations": [
{
"Key": "<MyDelineaServer>",
"Type": "Delinea Secret Server (read only)",
"Context": {
"PlatformServerUrl": "<PlatformServerUrl>",
"SecretServerUrl": "<SecretServerUrl>",
"RuleName": "<Rule>",
"RuleKey": "<Key>",
"UsernameField": "<Username>",
"PasswordField": "<Password>"
}
},
]
...
Os campos Context são os seguintes:
PlatformServerUrl- (obrigatório) seu URL da plataforma Delinea, por exemplo,https://<tenant>.delinea.app.SecretServerUrl- (obrigatório) o URL do Secret Server, por exemplohttps://<tenant>.secretservercloud.eu. Para recuperá-lo, acesse a página Conexão com o Secret Server em seu tenant Delinea.RuleName- (obrigatório) o nome da regra de integração do cliente SDK criada no Delinea.RuleKey- (opcional) a chave de integração para a regra. Deixe em branco se Exigir chave de integração não estiver habilitado em Delinea. Embora esse campo seja opcional, recomendamos configurá-lo para maior segurança.UsernameField- (obrigatório) o nome do campo de dados dinâmico do campo Modelo Secreto do qual o nome de usuário é lido, por exemplousername.PasswordField- (obrigatório) o nome do campo de dados dinâmico do campo Modelo secreto do qual a senha é lida, por exemplopassword.
Durante a migração de plataforma em andamento da Delinea, tanto PlatformServerUrl quanto SecretServerUrl são necessários. O proxy usa PlatformServerUrl para verificar se a plataforma Delinea é acessível e SecretServerUrl para recuperar os próprios segredos.
Você pode encontrar o nome do campo de dados dinâmico de um campo Modelo secreto em Admin > Modelos secretos > Modelo > Campos. Os valores de UsernameField e PasswordField não diferenciam maiúsculas de minúsculas.
Os ativos e credenciais de Robôs vinculados a esse armazenamento devem usar o ID numérico do Secret do Delinea Secret Server como seu Nome Externo. Nomes de strings não são compatíveis.
Para os pré-requisitos e a configuração do lado do Delinea, como habilitar o Gerenciamento do cliente SDK e criar a regra de integração, consulte a seção Integração do Delinea Secret Server na página Integração de armazenamentos de credenciais .
HashiCorp Vault / HashiCorp Vault (somente leitura)
O exemplo a seguir usa a autenticação AppRole em um mecanismo de segredos KeyValueV2. Para o que cada parâmetro significa, quais seu método de autenticação e mecanismo de segredos precisam, e como SecretsEngineMountPath e DataPath resolvem o caminho de um segredo individual, consulte HashiCorp Vault em Gerenciamento de armazenamentos de credenciais.
...
"SecureStoreConfigurations": [
{
"Key": "<MyHashiCorp>",
"Type": "HashiCorp Vault", // or "HashiCorp Vault (read only)"
"Context": {
"VaultUri": "https://vault.example.com:8200",
"AuthenticationType": "AppRole", // or "UsernamePassword", "Ldap", "Token"
"AuthenticationMountPath": "", // optional, defaults to the name of the authentication method
"RoleId": "<RoleId>",
"SecretId": "<SecretId>",
"Username": "", // with "UsernamePassword" or "Ldap"
"Password": "", // with "UsernamePassword" or "Ldap"
"Token": "", // with "Token"
"SecretsEngine": "KeyValueV2", // or "KeyValueV1"; read-only also accepts "ActiveDirectory", "OpenLDAP", "LDAP"
"SecretsEngineMountPath": "uipath/kv", // the mount only - no "data" segment, no secret path
"DataPath": "orchestrator/assets", // the prefix inside the mount - no mount, no "data" segment
"Namespace": "", // Vault Enterprise only
"LdapUseDynamicCredentials": "false", // with the "LDAP" secrets engine
"KerberosSPN": "" // with Kerberos authentication
}
}
]
...
...
"SecureStoreConfigurations": [
{
"Key": "<MyHashiCorp>",
"Type": "HashiCorp Vault", // or "HashiCorp Vault (read only)"
"Context": {
"VaultUri": "https://vault.example.com:8200",
"AuthenticationType": "AppRole", // or "UsernamePassword", "Ldap", "Token"
"AuthenticationMountPath": "", // optional, defaults to the name of the authentication method
"RoleId": "<RoleId>",
"SecretId": "<SecretId>",
"Username": "", // with "UsernamePassword" or "Ldap"
"Password": "", // with "UsernamePassword" or "Ldap"
"Token": "", // with "Token"
"SecretsEngine": "KeyValueV2", // or "KeyValueV1"; read-only also accepts "ActiveDirectory", "OpenLDAP", "LDAP"
"SecretsEngineMountPath": "uipath/kv", // the mount only - no "data" segment, no secret path
"DataPath": "orchestrator/assets", // the prefix inside the mount - no mount, no "data" segment
"Namespace": "", // Vault Enterprise only
"LdapUseDynamicCredentials": "false", // with the "LDAP" secrets engine
"KerberosSPN": "" // with Kerberos authentication
}
}
]
...
As configurações no nível do host vão no parâmetro AppSettings, da mesma forma que fazem no Orchestrator. Cada armazenamento lê apenas seu próprio prefixo; portanto, para configurar ambos os armazenamentos, adicione cada configuração duas vezes. Para obter a lista completa de configurações e seus padrões, consulte Configurações ao nível do host.
{
// ...
"AppSettings": {
// Optional, for Kerberos enablement
"Plugins.SecureStores.HashiCorp Vault.KerberosEnabled": "true",
"Plugins.SecureStores.HashiCorp Vault (read only).KerberosEnabled": "true",
// Optional, for forwarding to the active node
"Plugins.SecureStores.HashiCorp Vault.ForwardToActiveNode": "true",
"Plugins.SecureStores.HashiCorp Vault (read only).ForwardToActiveNode": "true"
// ...
}
// ...
}
{
// ...
"AppSettings": {
// Optional, for Kerberos enablement
"Plugins.SecureStores.HashiCorp Vault.KerberosEnabled": "true",
"Plugins.SecureStores.HashiCorp Vault (read only).KerberosEnabled": "true",
// Optional, for forwarding to the active node
"Plugins.SecureStores.HashiCorp Vault.ForwardToActiveNode": "true",
"Plugins.SecureStores.HashiCorp Vault (read only).ForwardToActiveNode": "true"
// ...
}
// ...
}
Thycotic Secret Server
O armazenamento do Thycotic Secret Server está sendo bem-sucedido pelo armazenamento do Delinea Secret Server (somente leitura) , documentado na seção acima. Ambos os armazenamentos compartilham o mesmo SDK subjacente e o mesmo mecanismo de integração baseado em regras, portanto, os campos Context são em grande parte idênticos. Incentivamos você a migrar os armazenamentos de credenciais do Thycotic existentes para o novo armazenamento do Delinea.
...
"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>"
}
},
]
...
Google Secret Manager
...
"SecureStoreConfigurations": [
{
"Key": "<GoogleSecretManager>",
"Type": "Google Secret Manager",
"Context": {
"ProjectId": "<ProjectId>",
"ServiceAccountKeyJson": "<ServiceAccountKeyJson>",
}
},
]
...
...
"SecureStoreConfigurations": [
{
"Key": "<GoogleSecretManager>",
"Type": "Google Secret Manager",
"Context": {
"ProjectId": "<ProjectId>",
"ServiceAccountKeyJson": "<ServiceAccountKeyJson>",
}
},
]
...
Google Secret Manager (somente leitura)
...
"SecureStoreConfigurations": [
{
"Key": "<GoogleSecretManager>",
"Type": "Google Secret Manager (read only)",
"Context": {
"ProjectId": "<ProjectId>",
"ServiceAccountKeyJson": "<ServiceAccountKeyJson>",
}
},
]
...
...
"SecureStoreConfigurations": [
{
"Key": "<GoogleSecretManager>",
"Type": "Google Secret Manager (read only)",
"Context": {
"ProjectId": "<ProjectId>",
"ServiceAccountKeyJson": "<ServiceAccountKeyJson>",
}
},
]
...
Vários armazenamentos de credenciais
Se você usar vários armazenamentos de credenciais, você pode adicionar um abaixo do outro, da seguinte forma:
{
...
"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"
}
}
]
...
}
}
Validação
Isso se aplica apenas ao Credentials Proxy desconectado.
O proxy valida a configuração na inicialização, se o tipo que ele detecta for Disconnected.
Essas são algumas das etapas de validação que o proxy realiza:
- O proxy garante que
appsettings.Production.jsonconhenha as configurações esperadas, como detalhado na seção Configuração acima. - O proxy garante que
SecureStoreConfigurationsnão contenha parâmetrosKeyduplicados, ou seja, que os armazenamentos de credenciais configurados no arquivoappsettings.Production.jsonsejam exclusivos. - O parâmetro
SecureStoreConfigurationsé um array de configurações. Você pode adicionar quantos armazenamentos de credenciais quiser, mesmo do mesmo tipo. Por exemplo, você pode ter várias instâncias do Azure Key Vault (somente leitura) configuradas, desde que campoKeyseja exclusivo. - O proxy verifica se todos os valores
Typesão válidos. - Com base na implementação de cada armazenamento seguro, o proxy verifica se o cofre pode ser alcançado com sucesso.
Geração de logs
Os logs de Credentials Proxy do Orchestrator serão armazenados localmente, na pasta C:\Program Files\UiPath\OrchestratorCredentialsProxy, se o pool de aplicativos do proxy tiver permissões de gravação para esse caminho. Estes são configurados no IIS.
Se você não quiser dar permissões de gravação a essa pasta, forneça um caminho relativo ou absoluto de sua escolha por meio do parâmetro NLog.targets.logfile.fileName em appsettings.Production.json.
Em máquinas Windows, o proxy também armazena logs no Visualizador de eventos do Windows.
Considerações de segurança
- O Orchestrator permite apenas URLs seguras (HTTPS) para o proxy. Os requisitos de certificado dependem do tipo de proxy:
- Proxy conectado - o certificado HTTPS deve ser válido para o URL Público e assinado por uma autoridade de certificação que o Orchestrator possa validar, ou seja, um provedor de certificados públicos amplamente reconhecido. Certificados autoassinados não são compatíveis.
- Proxy desconectado - a comunicação permanece dentro de sua própria infraestrutura; portanto, os certificados assinados por sua autoridade de certificação interna, bem como os certificados autoassinados, são compatíveis, desde que as máquinas que executam seus robôs confiem neles.
- O Orchestrator é validado por meio de um segredo do cliente gerado pelo Credentials Proxy do Orchestrator. O segredo do cliente é armazenado em um arquivo de configuração na máquina onde o Credentials Proxy do Orchestrator está instalado e é criptografado e armazenado no banco de dados pelo Orchestrator.
- Quando você edita um proxy de armazenamento de credenciais no Orchestrator e altera sua URL, você deve inserir o segredo do cliente.
- Orchestrator Credentials Proxy 2.0.0+ as ações são registradas em log no Visualizador de Eventos do Windows.
- Os binários devem ser assinados na máquina Windows.
- A imagem do Docker deve ser assinada.
Uso do Credentials Proxy do Orchestrator com um balanceador de carga
Se você usar o proxy em combinação com um balanceador de carga, certifique-se de manter a mesma configuração em todos os nós.
Elementos que devem permanecer idênticos entre os nós
- A versão do instalador de proxy. Por exemplo, se você usar a versão 1.0.0, todos os nós do balanceador de carga também precisarão usar a 1.0.0.
- As configurações nos arquivos de configuração do aplicativo. Na maioria dos casos, eles são
appsettings.jsoneappsettings.Production.json. Observe queappsettings.Production.jsoné exclusivo para cada instalação, então você deve adicioná-lo manualmente a cada nó para garantir a consistência. - Os plug-ins de armazenamento de credenciais adicionados a
path/plugins. Todos os plug-ins suportados por nós já estão nessa pasta, então você só precisa estar atento a quaisquer plug-ins personalizados que você adicionar.
Fatores importantes a considerar
- Se você quiser fazer quaisquer alterações na configuração da imagem do Docker que fornecemos para instalar o proxy, é altamente recomendável que você crie uma imagem do Docker personalizada. Você deve usar essa imagem personalizada para implantar o proxy em todos os nós.
- Algumas variáveis de ambiente podem ter um impacto durante a execução.Por exemplo, variáveis de ambiente que substituem valores de configuração
appsettings.jsonou aquelas que afetam o ambiente do .NET. - Você pode usar o endpoint dedicado não autenticado
https://{YourOrchestratorCredentialsProxyURL}/api/v1/Healthpara verificar se o Credentials Proxy do Orchestrator ainda está em execução.
Atualização do certificado Credentials Proxy do Orchestrator
Para instalações de nó único, atualize o certificado SSL da seguinte forma:
- Importe o novo certificado para a pasta Pessoal, em Certificados, no console de certificados da máquina local (certlm.msc).
- No Console de Gerenciamento IIS, expanda Sites e selecione Credential Proxy do UiPath Orchestrator.
- No painel do lado direito, selecione Ligações....
- Na visualização Ligações... selecione o registro padrão
httpse, em seguida, use o botão Selecionar... para escolher um certificado. - Na janela pop-up Selecionar certificado, selecione o certificado recém-adicionado.
- Selecione OK até concluir a configuração.
Observação:
Para instalações de vários nós, certifique-se de atualizar o certificado em todas as máquinas.
Para atualizar o certificado para instalações usando um balanceador de carga, use as mesmas etapas descritas acima. Como o Orchestrator Credentials Proxy é sem estado, remova o nó do balanceador de carga ao atualizar o certificado.
Rodízio de chaves
Rotação de chaves com tempo de inatividade
Esta operação requer a interrupção e reinicialização do Orchestrator Credentials Proxy em execução. Isso pode ter um impacto em quaisquer solicitações ativas feitas pelo Orchestrator.
- Gere uma nova chave secreta de acordo com os padrões do Credentials Proxy do Orchestrator.
- Pare seu Credentials Proxy do Orchestrator.
- Edite o arquivo
appsettings.Production.jsone substitua sua chave existente pela nova chave. - Inicie seu Credentials Proxy do Orchestrator.
- No Orchestrator, acesse o Credentials Proxy do Orchestrator e edite o campo
Secretcom seu novo segredo.
Rotação de chaves sem tempo de inatividade
Esta operação requer um Orchestrator Credentials Proxy com um balanceador de carga e no mínimo duas instâncias do Orchestrator Credentials Proxy. Para obter mais informações, consulte a seção Instalação .
- Gere uma nova chave secreta de acordo com os padrões do Credentials Proxy do Orchestrator.
- Adicione a chave recém-gerada a suas instâncias de Credentials Proxy. Siga este procedimento para cada instância:
- Retire uma instância do Credentials Proxy do Orchestrator do balanceador de carga.
- Pare essa instância do Credentials Proxy do Orchestrator.
- Abra o arquivo
appsettings.Production.json. O arquivo deve conter um código semelhante ao seguinte:{ "Jwt": { "Keys": [ "{{OldKey}}" ],{ "Jwt": { "Keys": [ "{{OldKey}}" ], - Adicione a chave recém-gerada, mantendo a existente. O parâmetro
Keysé compatível com vários valores separados por vírgulas:{ "Jwt": { "Keys": [ "{{OldKey}}", "{{NewKey}}" ],{ "Jwt": { "Keys": [ "{{OldKey}}", "{{NewKey}}" ], - Inicie o Credentials Proxy do Orchestrator.
- Traga a instância Credentials Proxy do Orchestrator de volta ao balanceador de carga.
- No Orchestrator, acesse o Credentials Proxy do Orchestrator e edite o campo
Secretcom seu novo segredo. - Após algum tempo, tire sua chave antiga das instâncias de Credentials Proxy.Siga este procedimento para cada instância:
- Retire uma instância do Credentials Proxy do Orchestrator do balanceador de carga.
- Pare essa instância do Credentials Proxy do Orchestrator.
- Abra o arquivo
appsettings.Production.json. O arquivo deve conter duas chaves conforme mencionado nas etapas anteriores:{ "Jwt": { "Keys": [ "{{OldKey}}", "{{NewKey}}" ],{ "Jwt": { "Keys": [ "{{OldKey}}", "{{NewKey}}" ], - Remova a chave antiga do arquivo: { "Jwt": { "Keys": [ "{{NewKey}}" ],
- Inicie o Credentials Proxy do Orchestrator.
- Traga a instância Credentials Proxy do Orchestrator de volta ao balanceador de carga.
- Problema conhecido
- Porta personalizada redefinida para 443 após uma atualização
- Instalação
- Por meio do instalador .msi instalador
- Por meio da imagem do Docker
- Configuração
- Proxy conectado e desconectado
- CyberArk
- CyberArk CCP
- HashiCorp Vault
- HashiCorp Vault (somente leitura)
- Somente proxy desconectado
- Exemplos de configuração
- Validação
- Geração de logs
- Considerações de segurança
- Uso do Credentials Proxy do Orchestrator com um balanceador de carga
- Elementos que devem permanecer idênticos entre os nós
- Fatores importantes a considerar
- Atualização do certificado Credentials Proxy do Orchestrator
- Rodízio de chaves
- Rotação de chaves com tempo de inatividade
- Rotação de chaves sem tempo de inatividade