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

为事件中心命名空间配置最低 TLS 版本

Azure 事件中心命名空间允许客户端使用 TLS 1.0 及更高版本发送和接收数据。 若要强制实施更严格的安全措施,可以将事件中心命名空间配置为要求客户端使用较新版本的 TLS 发送和接收数据。 如果事件中心命名空间需要最低版本的 TLS,则使用较旧版本发出的任何请求都会失败。 有关此功能的概念信息,请参阅针对发送到事件中心命名空间的请求强制实施必需的最低版本的传输层安全性 (TLS)

可以使用 Azure 门户或 Azure 资源管理器 (ARM) 模板配置最低 TLS 版本。

在 Azure 门户中指定最低 TLS 版本

在 Azure 门户中的“高级”选项卡上创建事件中心命名空间时,可以指定最低 TLS 版本。

屏幕截图显示的页面用于在创建命名空间时设置最低 TLS 版本。

此外,你还可以在“配置”页上为现有命名空间指定最低 TLS 版本。

屏幕截图显示的页面用于为现有命名空间设置最低 TLS 版本。

创建模板以配置最低 TLS 版本

若要使用模板为事件中心命名空间配置最低 TLS 版本,请创建一个模板,并将 MinimumTlsVersion 属性设置为 1.0、1.1 或 1.2。 使用 Azure 资源管理器模板创建事件中心命名空间时,MinimumTlsVersion 属性默认设置为 1.2,除非显式设置为另一个版本。

注意

使用 2022-01-01-preview 之前的 api-version 创建的命名空间的 MinimumTlsVersion 值为 1.0。 此行为是先前的默认行为,并且仍存在以实现向后兼容性。

以下步骤说明了如何在 Azure 门户中创建模板。

  1. 在 Azure 门户中,选择“创建资源”。

  2. 在“搜索市场”中,输入“自定义部署”,然后按 ENTER。

  3. 依次选择“自定义部署(使用自定义模板进行部署)(预览版)”、“创建”、“在编辑器中生成自己的模板”。

  4. 在模板编辑器中,粘贴以下 JSON 以创建新命名空间,并将最低 TLS 版本设置为 TLS 1.2。 请记得将尖括号中的占位符替换为你自己的值。

    {
        "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {},
        "variables": {
            "eventHubNamespaceName": "[concat(uniqueString(subscription().subscriptionId), 'tls')]"
        },
        "resources": [
            {
            "name": "[variables('eventHubNamespaceName')]",
            "type": "Microsoft.EventHub/namespaces",
            "apiVersion": "2022-01-01-preview",
            "location": "westeurope",
            "properties": {
                "minimumTlsVersion": "1.2"
            },
            "dependsOn": [],
            "tags": {}
            }
        ]
    }
    
  5. 保存模板。

  6. 指定资源组参数,然后选择“查看 + 创建”按钮以部署模板,并创建配置了 MinimumTlsVersion 属性的命名空间。

注意

更新事件中心命名空间的最低 TLS 版本后,最多可能需要 30 秒才能完全传播更改。

配置最低 TLS 版本需要 Azure 事件中心资源提供程序的 api-version 2022-01-01-preview 或更高版本。

检查命名空间所需的最低 TLS 版本

若要检查事件中心命名空间所需的最低 TLS 版本,可以查询 Azure 资源管理器 API。 需要有持有者令牌才能针对 API 进行查询,可以通过执行以下命令来使用 ARMClient 应用进行检索。

.\ARMClient.exe login
.\ARMClient.exe token <your-subscription-id>

拥有持有者令牌后,可以将以下脚本与 REST 客户端等工具结合使用来查询 API。

@token = Bearer <Token received from ARMClient>
@subscription = <your-subscription-id>
@resourceGroup = <your-resource-group-name>
@namespaceName = <your-namespace-name>

###
GET https://management.azure.com/subscriptions/{{subscription}}/resourceGroups/{{resourceGroup}}/providers/Microsoft.EventHub/namespaces/{{namespaceName}}?api-version=2022-01-01-preview
content-type: application/json
Authorization: {{token}}

响应应如下所示,其中在属性下设置了 minimumTlsVersion。

{
  "sku": {
    "name": "Premium",
    "tier": "Premium",
    "capacity": 1
  },
  "id": "/subscriptions/<your-subscription-id>/resourceGroups/<your-resource-group-name>/providers/Microsoft.EventHub/namespaces/<your-namespace-name>",
  "name": "<your-namespace-name>",
  "type": "Microsoft.EventHub/Namespaces",
  "location": "West Europe",
  "properties": {
    "minimumTlsVersion": "1.2",
    "publicNetworkAccess": "Enabled",
    "disableLocalAuth": false,
    "zoneRedundant": true,
    "isAutoInflateEnabled": false,
    "maximumThroughputUnits": 0,
    "kafkaEnabled": true,
    "provisioningState": "Succeeded",
    "status": "Active"
  }
}

测试客户端的最低 TLS 版本

若要测试事件中心命名空间必需的最低 TLS 版本是否禁止使用较旧版本发出的调用,可以将客户端配置为使用较旧版本的 TLS。 若要详细了解如何将客户端配置为使用特定的 TLS 版本,请参阅为客户端应用程序配置传输层安全性 (TLS)

当客户端使用不满足为命名空间配置的最低 TLS 版本的 TLS 版本访问事件中心命名空间时,Azure 事件中心会返回错误代码 401(未经授权)和一条消息,指示不允许所使用的 TLS 版本对此事件中心命名空间发出请求。

注意

由于 confluent 库中的限制,通过 Kafka 协议进行连接时,来自无效 TLS 版本的错误将不会出现, 而是改为显示常规异常。

注意

为事件中心命名空间配置最低 TLS 版本时,会在应用程序层强制实施该最低版本。 尝试在协议层确定 TLS 支持的工具可能会返回 TLS 版本,此外,直接针对事件中心命名空间终结点运行时,可能会返回所需的最低版本。

后续步骤

有关详细信息,请参阅以下文章。