使用 Visual Studio 连接服务将 Key Vault 添加到 Web 应用程序
本教程介绍如何轻松添加所需的设置,以开始使用 Azure Key Vault 在 Visual Studio 中管理 Web 项目的机密,不管使用的是 ASP.NET Core 还是任何类型的 ASP.NET 项目。 使用 Visual Studio 中的连接服务功能,可让 Visual Studio 自动添加所需的所有 NuGet 包和配置设置,以连接到 Azure 中的 Key Vault。
先决条件
- 一个 Azure 帐户。 如果没有 Azure 帐户,请激活你的 Visual Studio 订阅者 Azure 权益或注册免费试用版。
- Visual Studio 2019 版本 16.3 或更高版本 立即下载。
将 Key Vault 支持添加到项目
开始之前,请确保已登录 Visual Studio。 登录时使用的帐户与用于 Azure 订阅的帐户相同。 然后打开 ASP.NET 4.7.1 或更高版本或 ASP.NET Core Web 项目,执行以下步骤。 所示的步骤适用于 Visual Studio 2022 版本 17.4。 对于其他版本的 Visual Studio,流程可能略有不同。
在解决方案资源管理器中,右键单击要添加密钥保管库支持的项目,然后选择添加>连接的服务,或右键单击“连接的服务”节点,然后选择“添加”。
如果未看到“连接的服务”节点,请选择项目>连接的服务>添加。
在“服务依赖项”下,选择 + 图标。 此时会显示“连接服务”页,其中包含可添加到项目的服务。
在可用服务的菜单中,选择“Azure Key Vault”,然后单击“下一步”。
选择要使用的订阅;接下来,如果已有要使用的 Key Vault,请选择并单击下一步。
如果没有现有密钥库,或者需要具有与现有权限不同的密钥库,请单击“创建新密钥库”。 系统会要求你提供资源组、位置和 SKU。
在“配置密钥保管库”屏幕中,可以更改引用密钥保管库 URI 的环境变量的名称。 此处不存储连接字符串;它存储在密钥保管库中。
注意
为了提高安全性,在 Visual Studio 17.12 及更高版本中,此步骤将创建连接设置名称;以前的版本创建连接字符串。 如果连接字符串无意中暴露,则存储在本地的连接字符串可能会导致安全风险。
单击“下一步”,直到看到更改摘要,然后单击“完成”。
开始之前,请确保已登录 Visual Studio。 登录时使用的帐户与用于 Azure 订阅的帐户相同。 然后打开 ASP.NET 4.7.1 或更高版本或 ASP.NET Core Web 项目,执行以下步骤。
在解决方案资源管理器中,右键单击要添加密钥保管库支持的项目,然后选择添加>连接的服务,或右键单击“连接的服务”节点,然后选择“添加”。
如果未看到“连接的服务”节点,请选择项目>连接的服务>添加。
在“服务依赖项”下,选择 + 图标。 此时会显示“连接服务”页,其中包含可添加到项目的服务。
在可用服务的菜单中,选择“Azure Key Vault”,然后单击“下一步”。
选择要使用的订阅;接下来,如果已有要使用的 Key Vault,请选择并单击下一步。
如果没有现有的 Key Vault,请单击“新建 Key Vault”。 系统会要求你提供资源组、位置和 SKU。
在“配置密钥保管库”屏幕中,可以更改引用密钥保管库 URI 的环境变量的名称。 此处不存储连接字符串;它存储在密钥保管库中。
单击“下一步”以查看更改摘要,然后单击“完成”。
现在已建立与 Key Vault 的连接,你可以通过代码访问机密了。 如果你刚刚创建了新的密钥保管库,请通过创建可在代码中引用的机密来测试该密钥保管库。 可以使用 Azure 门户、PowerShell 或 Azure CLI 来创建机密。
参阅适用于 .NET 的 Azure 密钥保管库机密客户端库 - 代码示例中有关处理机密的代码示例。
配置对密钥保管库的访问
如果已使用 Visual Studio 2022 版本 17.11 或更早版本遵循本教程,则密钥库权限设置为使用自己的 Azure 订阅运行,但对于生产方案来说可能不需要这样做。 可以创建托管标识来管理应用的 Key Vault 访问权限。 请参阅如何向 Key Vault 进行身份验证和分配 Key Vault 访问策略。
如果运行密钥保管库的 Microsoft 帐户不是用于登录 Visual Studio 的帐户(例如,密钥保管库在工作帐户中运行,但 Visual Studio 使用的是私人帐户),则 Program.cs 文件中会出现一条错误,指出 Visual Studio 无法访问密钥保管库。 若要解决此问题,请转到 Azure 门户,打开密钥保管库,然后选择“访问控制 (IAM)”以设置权限。 请参阅使用 Azure 基于角色的访问控制 (RBAC) 提供对密钥保管库密钥、证书和机密的访问权限。
注意
旧密钥保管库可能会使用旧访问策略模型。 建议迁移较旧密钥保管库以使用 Azure RBAC。 请参阅 Azure 基于角色的访问控制 (RBAC) 与访问策略。
后续步骤
在 Key Vault 开发人员指南中了解如何使用 Key Vault 进行开发。
如果目标是在 Azure Key Vault 中存储 ASP.NET Core 应用的配置,请参阅 ASP.NET Core 中的 Azure Key Vault 配置提供程序。