你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure 负载测试对安全终结点进行负载测试

在本文中,你将了解如何将 Azure 负载测试与需要进行身份验证的应用程序终结点结合使用。 根据应用程序实施情况,你可能会使用访问令牌、用户凭据或客户端证书来验证请求。

Azure 负载测试支持对经过身份验证的终结点使用以下选项:

先决条件

  • 具有活动订阅的 Azure 帐户。 如果没有 Azure 订阅,请在开始之前创建一个免费帐户
  • 一个 Azure 负载测试资源。 若要创建负载测试资源,请参阅创建并运行负载测试

使用共享机密或凭据进行身份验证

在这种情况下,应用程序终结点要求你使用共享机密(例如访问令牌、API 密钥或用户凭据)进行身份验证。

下图显示了如何在负载测试中使用共享机密或凭据向应用程序终结点进行身份验证。

显示如何将共享机密身份验证与 Azure 负载测试一起使用的图表。

使用共享密钥或用户凭据进行身份验证的流程如下:

  1. 安全存储机密或凭据,例如存储在 Azure 密钥保管库或 CI/CD 机密存储区。
  2. 在负载测试配置中引用机密。
  3. 在 JMeter 脚本中,使用 GetSecret 函数检索机密值,并将机密值传递给应用程序请求。

安全存储机密

为避免在 JMeter 脚本中存储和泄露安全信息,可以将机密安全地存储在 Azure 密钥保管库或 CI/CD 机密存储中。

可以通过以下两种方式之一在机密存储区添加安全信息:

在负载测试配置中引用机密

在 JMeter 测试脚本中检索机密值之前,必须在负载测试配置中引用该机密。

在 Azure 门户中,可以引用存储在 Azure 密钥保管库中的机密。 若要在 Azure 门户中添加和配置负载测试机密,请执行以下操作:

  1. 导航到 Azure 门户中的负载测试资源,然后选择“测试”以查看负载测试列表。

  2. 从列表中选择测试,然后选择“编辑”来编辑负载测试配置。

    显示如何在 Azure 门户中编辑负载测试的屏幕截图。

  3. 在“参数”选项卡上,输入机密的详细信息。

    字段
    Name 机密的名称。 可以将此名称提供给 GetSecret 函数以检索 JMeter 脚本中的机密值。
    匹配 Azure 密钥保管库的机密标识符。

    显示如何将机密添加到 Azure 门户中的负载测试的屏幕截图。

  4. 选择“应用”以保存负载测试配置更改。

在 JMeter 脚本中检索并使用机密值

现在,可以使用 GetSecret 自定义函数检索 JMeter 脚本中的机密值,并将其传递给应用程序请求。 例如,使用 Authorization HTTP 标头将 OAuth 令牌传递给请求。

  1. 创建一个用户定义的变量,该变量使用自定义函数 GetSecret 来检索机密值:

    GetSecret 函数会将从 Azure 密钥保管库或 CI/CD 机密存储区中检索值的过程抽象化。

    显示如何在 JMeter 中添加使用 GetSecret 函数的用户定义变量的屏幕截图。

  2. 更新 JMeter 采样器组件以在请求中传递机密。

    例如,要提供 OAuth2 访问令牌,可以通过添加 HTTP Header Manager 来配置 Authorization HTTP 标头:

    显示如何向 JMeter 中的请求添加授权标头的屏幕截图。

使用客户端证书进行身份验证

在这种情况下,应用程序终结点要求你使用客户端证书进行身份验证。 Azure 负载测试支持公钥证书标准 #12 (PKCS12) 类型的证书。 在负载测试中只能使用一个客户端证书。

下图显示了如何在负载测试中使用客户端证书对应用程序终结点进行身份验证。

显示如何将客户端证书身份验证与 Azure 负载测试一起使用的图表。

使用客户端证书进行身份验证的流程如下:

  1. 将客户端证书安全存储在 Azure 密钥保管库中。
  2. 在负载测试配置中引用该证书。
  3. Azure 负载测试以透明方式将证书传递给 JMeter 中的所有应用程序请求。

将客户端证书存储在 Azure 密钥保管库中

为避免与 JMeter 脚本一起存储和披露客户端证书,请将证书存储在 Azure 密钥保管库中。

按照导入证书中的步骤将证书存储在 Azure 密钥保管库中。

重要

Azure 负载测试仅支持 PKCS12 证书。 以 PFX 文件格式上传客户端证书。

授予对 Azure Key Vault 的访问权限

在 Azure Key Vault 中存储负载测试机密或证书时,负载测试资源使用托管标识来访问密钥保管库。 配置管理标识后,需要向负载测试资源的托管标识授予从密钥保管库读取这些值的权限。

若要为 Azure 负载测试资源授予从 Azure Key Vault 中读取机密或证书的权限,请执行以下操作:

  1. Azure 门户中,转到你的 Azure 密钥保管库资源。

    如果你没有密钥保管库,请按照 Azure 密钥保管库快速入门中的说明创建一个。

  2. 在左侧窗格中,选择“访问策略”,然后选择“+ 创建”

  3. 在“权限”选项卡上的“机密权限”下,选择“获取”,然后选择“下一步”

    注意

    Azure 负载测试将证书作为机密检索,以确保证书的私钥可用。

  4. 在“主体”选项卡上,搜索并选择负载测试资源的托管标识,然后选择“下一步”

    如果使用系统分配的托管标识,托管标识的名称与 Azure 负载测试资源的名称匹配。

  5. 再次选择“下一步”。

    测试运行时,与负载测试资源关联的托管标识现在可以从密钥保管库读取负载测试的机密或证书。

在负载测试配置中引用证书

若要将客户端证书传递给应用程序请求,需要在负载测试配置中引用该证书。

要将客户端证书添加到 Azure 门户中的负载测试:

  1. 导航到 Azure 门户中的负载测试资源。 如果你还没有负载测试,请使用 JMeter 脚本创建一个新的负载测试

  2. 在左侧窗格中,选择“测试”以查看负载测试列表

  3. 从列表中选择你的测试,然后选择“编辑”以编辑负载测试配置。

    显示如何在 Azure 门户中编辑负载测试的屏幕截图。

  4. 在“参数”选项卡上,输入证书的详细信息。

    字段
    Name 证书的名称。
    匹配证书的 Azure 密钥保管库机密标识符。
  5. 选择“应用”以保存负载测试配置更改。

运行负载测试时,Azure 负载测试会从 Azure 密钥保管库中检索客户端证书,并自动将其注入每个 JMeter Web 请求中。