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

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

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

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

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

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

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

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

TLS 1.3 作为 Azure 门户中的最低 TLS 版本可用。

TLS版本1.0、1.1、1.2和1.3的截图显示在最小TLS版本列表中。

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

要使用模板配置事件中心命名空间的最低 TLS 版本,请创建一个将 MinimumTlsVersion 属性设置为 1.2 或 1.3 的模板。 当你用 Azure 资源管理器 模板创建事件中心命名空间时,属性 MinimumTlsVersion 默认设置为 1.2,除非你明确将其设置为其他版本。

说明

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

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

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

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

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

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

    {
        "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
            "eventHubNamespaceName": {
                "type": "string",
                "defaultValue": "[concat(uniqueString(subscription().subscriptionId), 'tls')]",
                "metadata": {
                    "description": "Name of the Event Hubs namespace"
                }
            },
            "location": {
                "type": "string",
                "defaultValue": "chinanorth",
                "metadata": {
                    "description": "Location for all resources."
                }
            },
            "minimumTlsVersion": {
                "type": "string",
                "defaultValue": "1.2",
                "allowedValues": [
                    "1.2",
                    "1.3"
                ],
                "metadata": {
                    "description": "Minimum TLS version"
                }
            }
        },
        "resources": [{
            "type": "Microsoft.EventHub/namespaces",
            "apiVersion": "2024-01-01",
            "name": "[parameters('eventHubNamespaceName')]",
            "location": "[parameters('location')]",
            "sku": {
                "name": "Standard"
            },
            "properties": {
                "minimumTlsVersion": "[parameters('minimumTlsVersion')]"
            },
            "tags": {}
        }]
    }
    
  5. 保存模板。

  6. 将1.3参数设置为minimumTlsVersion,以要求使用 TLS 1.3。

  7. 指定资源组参数,然后选择 “Review + create ”按钮部署模板,并创建带有 MinimumTlsVersion 属性的命名空间。

说明

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

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

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

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

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

获得 Bearer Token 后,可以将以下脚本与 REST 客户端等工具结合使用来查询 API。

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

###
GET https://management.chinacloudapi.cn/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": "China North 3",
  "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 版本。

后续步骤

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