环境变量允许引用存储在 Azure 密钥保管库中的机密。 然后,这些机密可在 Power Automate 流和自定义连接器中使用。 请注意,这些机密不能用于其他自定义,或在一般情况下通过 API 使用。
实际机密存储在 Azure 密钥保管库中,环境变量将引用密钥保管库机密的位置。 将 Azure 密钥保管库机密与环境变量一起使用需要配置 Azure 密钥保管库,以使 Power Platform 可以读取您要引用的特定机密。
在 Power Automate 流中使用动态内容选择器时,引用密码的环境变量目前不可用。
配置 Azure 密钥保管库
要将 Azure 密钥保管库机密与 Power Platform 一起使用,具有该保管库的 Azure 订阅必须注册 PowerPlatform
资源提供程序,并且创建环境变量的用户必须对 Azure 密钥保管库资源具有适当的权限。
重要提示
- 最近对用于在 Azure Key Vault 中断言访问权限的安全角色进行了更改。 以前的说明包括分配密钥保管库读者角色。 如果之前使用密钥保管库阅读器角色设置了密钥保管库,请确保添加密钥保管库密码用户角色,以确保用户和 Microsoft Dataverse 有足够权限检索密码。
- 我们认识到,我们的服务在使用 Azure 基于角色的访问控制 API 来评估安全角色分配,即使您的密钥保管库仍配置为使用保管库访问策略权限模型。 要简化配置,我们建议您将保管库权限模型切换到 Azure 基于角色的访问控制。 您可以在访问配置选项卡上进行此操作。
在您的 Azure 订阅中注册
Microsoft.PowerPlatform
资源提供程序。 按照以下步骤验证和配置:资源提供程序和资源类型创建 Azure 密钥保管库。 考虑为每个 Power Platform 环境使用单独的保管库,来最大程度地减少违规情况带来的威胁。 考虑将您的密钥保管库配置为对权限模型使用 Azure 基于角色的访问控制。 详细信息:使用 Azure Key Vault 的最佳做法、快速入门 - 使用 Azure 门户创建 Azure Key Vault
创建或使用机密类型的环境变量的用户必须具有检索机密内容的权限。 要授予新用户使用机密的能力,选择访问控制 (IAM) 区域,选择添加,然后从下拉列表中选择添加角色分配。 详细信息:通过 Azure 基于角色的访问控制提供对密钥保管库机密、证书和机密的访问
在添加角色分配向导中,将默认分配类型保留为工作职能角色,然后继续转到角色选项卡。找到密钥保管库机密用户角色,选择它。 继续转到成员选项卡,选择选择成员链接,在侧面板中找到用户。 选择用户并在成员部分显示用户后,继续查看和分配选项卡并完成向导。
Azure Key Vault 必须将密钥保管库机密用户角色授予 Dataverse 服务主体。 如果此保管库不存在,使用与您以前用于最终用户权限的相同方法添加新的访问策略,只使用 Dataverse 应用程序标识而不是用户。 如果您的租户中有多个 Dataverse 服务主体,我们建议您将其全部选中并保存角色分配。 分配角色后,查看角色分配列表中列出的每个 Dataverse 项目,然后选择 Dataverse 名称查看详细信息。 如果应用程序 ID 不是00000007-0000-0000-c000-000000000000**,请选择身份,然后选择移除将其从列表中删除。
如果启用了 Azure 密钥保管库防火墙,则必须允许 Power Platform IP 地址访问密钥保管库。 Power Platform 不包含在“仅受信任的服务”选项中。 请访问 Power Platform URL 和 IP 地址范围查看当前服务使用的 IP 地址。
如果还没有,请向您的新保管库添加密码。 详细信息:Azure 快速入门 - 使用 Azure 门户设置机密以及从密钥保管库检索机密
为密钥保管库机密创建新环境变量
配置 Azure 密钥保管库并在您的保管库中注册机密后,您现在可以使用环境变量在 Power Apps 中引用它。
备注
- 将在后台执行机密的用户访问验证。 如果用户没有最基本的读取权限,将显示此验证错误:“此变量未正确保存。 用户无权从'Azure Key Vault path'读取机密。
- 目前,Azure 密钥保管库是环境变量唯一支持的机密存储。
- Azure 密钥保管库必须与 Power Platform 订阅处于相同的租户中。
登录到 Power Apps,然后在解决方案区域,打开您用于开发的非托管解决方案。
选择新建>更多>环境变量。
为环境变量输入显示名称以及(可选)说明 。
选择数据类型为机密,机密存储为 Azure 密钥保管库。
可从以下选项中选择:
- 选择新 Azure 密钥保管库值引用。 在下一步添加信息并保存后,会创建一个环境变量值记录。
- 展开显示默认值,以显示用于创建默认 Azure 密钥保管库机密的字段。 在下一步中添加信息并保存后,在环境变量定义记录中添加默认值界限。
输入以下信息:
Azure 订阅 ID:与密钥保管库关联的 Azure 订阅 ID。
资源组名称:包含机密的密钥保管库所在的 Azure 资源组。
Azure 密钥保管库名称:包含机密的密钥保管库的名称。
机密名称:位于 Azure 密钥保管库中的机密的名称。
小费
订阅 ID、资源组名称和密钥保管库名称可在密钥保管库的 Azure 门户概览页上找到。 通过选择设置下的机密可以在 Azure 门户的密钥保管库页面上找到机密名称。
选择保存。
创建 Power Automate 流来测试环境变量机密
演示如何使用从 Azure 密钥保管库获取的机密的一个简单场景,是创建一个 Power Automate 流使用该机密对 Web 服务进行身份验证。
备注
本例中网络服务的 URI 并不是一个正常运行的网络服务。
登录 Power Apps,选择解决方案,然后打开所需的非托管解决方案。 如果项目不在侧面板窗格中,请选择 …更多,然后选择所需项目。
选择新建>自动化>云端流>即时。
为流输入名称,选择手动触发流,然后选择创建。
选择新建步骤,选择 Microsoft Dataverse 连接器,然后在操作选项卡上选择执行未绑定操作。
从下拉列表中选择名为 RetrieveEnvironmentVariableSecretValue 的操作。
提供上一节中添加的环境变量唯一名称(不是显示名称),本示例使用 new_TestSecret。
选择 ...>重命名重命名操作,以可以在下一个操作中更容易地引用。 在本截图中,它被重命名为 GetSecret。
选择 ...>设置显示 GetSecret 操作设置。
在设置中启用安全输出选项,然后选择完成。 这是为了防止操作的输出暴露在流运行历史记录中。
选择新步骤,搜索并选择 HTTP 连接器。
选择方法为 GET,为 Web 服务输入 URI。 在此示例中,使用虚构的 Web 服务 httpbin.org。
选择显示高级选项,选择身份验证为基本,然后输入用户名。
选择密码字段,然后在上述流步骤名称(本示例中为 GetSecret)下的动态内容选项卡上选择 RetrieveEnvironmentVariableSecretValueResponse EnvironmentVariableSecretValue,它之后将添加为表达式
outputs('GetSecretTest')?['body/EnvironmentVariableSecretValue']
或body('GetSecretTest')['EnvironmentVariableSecretValue']
。选择 ...>设置显示 HTTP 操作设置。
在设置中启用安全输入和安全输出选项,然后选择完成。 启用这些选项可防止操作的输入和输出暴露在流运行历史记录中。
选择保存流创建流。
手动运行流对其进行测试。
使用流的运行历史记录,可以验证输出。
使用 Microsoft Copilot Studio 中的环境变量密码
Microsoft Copilot Studio 中的环境变量密码的工作方式有些不同。 您需要执行配置 Azure 密钥保管库和为密钥保管库密码创建新环境变量中的步骤,才能使用环境变量密码。
允许 Copilot Studio 访问 Azure 密钥保管库
请按照以下步骤进行操作:
返回到 Azure Key Vault。
Copilot Studio 需要访问密钥保管库。 要授予 Copilot Studio 使用密码的权限,请选择左侧导航栏中的访问控制 (IAM),选择添加,然后选择添加角色分配。
选择密钥保管库密码用户角色,然后选择下一步。
选择选择成员,搜索 Power Virtual Agents Service,选中它,然后选中选择。
选择屏幕底部的查看 + 分配。 查看信息,如果全部正确,请再次选择查看 + 分配。
添加标记以允许助手访问 Azure Key Vault 中的机密
完成本节前面的步骤后,Copilot Studio 现在可以访问 Azure 密钥保管库,但还不能使用。 要完成任务,请按照以下步骤操作:
转到 Microsoft Copilot Studio,打开要用于环境变量密码的代理或创建一个新代理。
打开一个代理主题或创建一个新主题。
选择 + 图标添加节点,然后选择发送消息。
在发送消息节点中选择插入变量 {x} 选项。
选择环境选项卡。选择在为密钥保管库密码创建新环境变量步骤中创建的环境变量密码。
选择保存以保存您的主题。
在测试窗格中,使用刚刚添加了环境变量密码的发送消息节点的主题开始短语之一测试主题。 您应该会遇到如下所示的错误:
这意味着需要返回到 Azure Key Vault 并编辑机密。 不要关闭 Copilot Studio,因为您稍后还会回到这里。
转到 Azure 密钥保管库。 在左侧导航中,选择对象下的密码。 选择要在 Copilot Studio 中提供的密码名称。
选择密码的版本。
选择标记旁边的 0 标记。 添加标记名称和标记值。 Copilot Studio 中的错误消息应该会给出这两个属性的准确值。 在标记名称下添加 AllowedBots,在标记值下添加错误消息中显示的值。 该值采用的格式为
{envId}/{schemaName}
。 如果需要允许多个助手,请用逗号分隔这些值。 完成后,选择确定。选择应用,将标记应用到密码中。
返回 Copilot Studio。 在测试助手窗格中选择刷新。
在测试窗格中,使用主题的起始短语之一再次测试主题。
密码的值应该会显示在测试面板中。
添加标签,允许环境中的所有助手访问 Azure 密钥保管库中的密码
或者,也可以允许环境中的所有助手访问 Azure 密钥保管库中的密码。 要完成任务,请按照以下步骤操作:
- 转到 Azure 密钥保管库。 在左侧导航中,选择对象下的密码。 选择要在 Copilot Studio 中提供的密码名称。
- 选择密码的版本。
- 选择标记旁边的 0 标记。 添加标记名称和标记值。 在标签名称下添加 AllowedEnvironments,在标签值中添加要允许的环境 ID。 完成后,选择确定
- 选择应用,将标记应用到密码中。
限制
引用 Azure 密钥保管库密码的环境变量目前仅限于与 Power Automate 流、Copilot Studio 代理和自定义连接器一起使用。
将 Azure Key Vault 专用链接与环境变量集成
通过环境变量使用 Azure 密钥保管库密码需要配置 Azure 密钥保管库,以便 Power Platform 可以读取要引用的特定密码。 此功能支持通过专用链接连接具有 Azure Key Vault 机密的环境变量,从而增强安全性并提供更强大的集成。
为 Power Platform 设置 Azure 虚拟网络支持,以便将环境变量与 Azure 密钥保管库密码集成,而不会将它们暴露在公共互联网上。 有关详细说明,请访问设置虚拟网络。
确保密钥保管库和 Power Platform 虚拟网络的 Azure 订阅在同一租户中,因为不支持跨租户集成。
确保创建环境变量的用户对 Azure Key Vault 资源具有适当的权限。 有关详细信息,请访问配置 Azure 密钥保管库
创建密钥保管库并建立专用链接连接。 创建密钥保管库的步骤应包括以下操作:
- 禁用公共访问。
- 创建专用端点。
- 选择要在其中创建此专用终结点的虚拟网络和子网。 确保连接委托给 Power Platform 的虚拟网络(虚拟网络)。
- 验证专用链接的连接性。
有关详细步骤,请参阅为 Power Platform 设置虚拟网络支持。
通过链接到 Azure 密钥保管库,创建环境变量密码。