根据租户设置加密密钥
可以使用 Microsoft Azure 密钥保险库,使用自己的唯一密钥对 Orchestrator 实例中的每个租户进行加密。Orchestrator 使用密钥保险库以安全的方式存储和管理密钥,确保在租户之间更好地隔离数据。
在 Microsoft Azure 中安装或内部部署的 Orchestrator 可利用此功能。但是,后者要求您将 Orchestrator 实例连接到互联网和 Azure 密钥保险库。
需要 Orchestrator 身份验证才能通过应用注册使用 Azure 密钥保险库。应用注册可以为应用程序授予一系列特权。在我们的例子中,Orchestrator 是应用程序,Azure 密钥保险库是目标权限。
您首先需要配置对 Azure 密钥保险库的应用注册权限。使用 Orchestrator 证书存储中可用的 SSL 私钥和上传到应用注册的 SSL 公钥,可以通过应用注册对 Orchestrator 进行身份验证。配置了应用注册和密钥保险库之后,您需要对 Orchestrator 的配置文件进行一些更改。满足这些条件后,Orchestrator 可以使用 Azure 密钥保险库加密每个租户。
- 您自己的 Microsoft Azure 密钥保管库
- 全新的 Orchestrator 安装
-
Orchestrator 实例的有效 SSL 证书:
- 私钥证书 - 需要在“应用程序服务”>“SSL 设置”>“私钥证书”中上传并导入到安装 Orchestrator 的计算机上。请记住,生成和安装证书的域必须与运行 Orchestrator 的用户域相匹配。
- 公钥证书 - 需要在“应用注册”>“设置”>“密钥”>“公钥”中上载
-
(可选)自签名证书
注意:不得由用户在 Azure 密钥保管库端编辑加密密钥,例如启用/禁用密码或编辑激活日期和到期日期。如果禁用了密码,则 Orchestrator 为该租户存储的数据将不再解密。
在 Azure 门户的“应用注册”窗格中,请按照下列步骤操作:
- 创建一个新的应用注册。
- 复制应用程序(客户端)ID,以供以后使用。
- 转到“管理”>“证书和密码”,然后上传必备程序中提到的公共 SSL 证书密钥。
- 复制此证书的指纹以供以后使用。
如果您在应用程序池身份下运行 Orchestrator,请执行以下步骤:
- 将 SSL 私钥证书导入到本地计算机个人证书存储中。
- 向应用程序池身份授予对私钥的访问权限。以下步骤说明了如何执行此操作。
- 打开 MMC。
- 转到“文件”>“添加/删除管理单元”。
- 选择“证书”,然后单击“添加”>“计算机帐户”>“本地计算机”。
- 单击“确定”。
- 导航到“证书(本地计算机)”>“个人”>“证书”,单击“完成”,然后单击“确定”。
- 在 MMC 的主窗口中,右键单击您感兴趣的证书,然后选择“所有任务”>“管理私钥”。
- 单击“添加”按钮。
- 在“输入要选择的对象名称”字段中,输入 IIS AppPool<AppPoolName>。示例:
IIS AppPool\UiPath Orchestrator
。 - 授予完全控制权。
如果您使用自定义帐户运行 Orchestrator,请执行以下步骤:
- 将必备程序中提到的 SSL 私钥证书导入运行 Orchestrator 流程的用户的“个人证书存储”中。
如果您的 Orchestrator 是 Azure 应用程序服务安装,请执行以下步骤:
- 将必备程序中提到的 SSL 私钥证书导入“Orchestrator 应用服务”>“SSL 设置”>“私钥证书”。
UiPath.Orchestrator.dll.config
文件进行以下更改:
- 打开 Orchestrator 实例的
UiPath.Orchestrator.dll.config
文件。 - 在
AppSettings
部分中,执行以下操作:- 将
Database.EnableAutomaticMigrations
参数设置为true
。否则,对UiPath.Orchestrator.dll.config
文件进行的所有后续更改都不会生效。 - 将
EncryptionKeyPerTenant.Enabled
设置为true
。 - 将
EncryptionKeyPerTenant.KeyProvider
设置为AzureKeyVault
。 - 对于使用应用程序池身份的 Orchestrator,将
CertificatesStoreLocation
设置为LocalMachine
。
- 将
- 在
secureAppSettings
部分中,执行以下操作:- 删除或注释掉
EncryptionKey
键。 - 从“应用注册”页面复制输入应用程序(客户端)ID,并将其作为
Azure.KeyVault.ClientId
参数的值提供。示例:<add key="Azure.KeyVault.ClientId" value="ae11aa1a-1234-1234-a123-a12a12aaa1aa" />
。 - 从“应用注册”页面复制您组织的“目录 (租户) ID”,并将其作为
Azure.KeyVault.DirectoryId
参数的值提供。示例:<add key="Azure.KeyVault.DirectoryId" value="d8353d2a-b153-4d17-8827-902c51f72357" />
。 - 从“应用注册”页面复制指纹,并将其作为
Azure.KeyVault.CertificateThumbprint
参数的值提供。示例:<add key="Azure.KeyVault.CertificateThumbprint" value="1234123412341234123412341234124312341234" />
。 - 复制“密钥保险库概述”页面中的“DNS 名称”,并将其作为
Azure.KeyVault.VaultAddress
参数的值提供。示例:<add key="Azure.KeyVault.VaultAddress" value="https://CustomVaultName.vault.azure.net/" />
。
- 删除或注释掉