默认情况下,只要请求附带有效的身份验证和授权,事件中心命名空间即可从 Internet 访问。 使用 IP 防火墙,可以进一步将其限制为 CIDR 中的一组 IPv4 和 IPv6 地址或地址范围(无分类 Inter-Domain 路由)
此功能适用于仅可从某些已知站点访问 Azure 事件中心的情况。 防火墙规则允许你配置规则以接受源自特定 IPv4 和 IPv6 地址的流量。 例如,如果将事件中心与 Azure Express Route 配合使用,则可以创建 防火墙规则 以仅允许来自本地基础结构 IP 地址的流量。
IP 防火墙规则
在事件中心命名空间级别指定 IP 防火墙规则。 因此,规则适用于使用任何受支持的协议的客户端的所有连接。 来自与事件中心命名空间上允许的 IP 规则不匹配的 IP 地址的任何连接尝试都会被拒绝为未授权。 响应未提及 IP 规则。 IP 筛选器规则按顺序应用,与 IP 地址匹配的第一条规则决定了接受或拒绝作。
要点
- 基本层不支持此功能。
- 默认情况下,为事件中心命名空间启用防火墙规则会阻止传入请求,除非请求源自从允许的公共 IP 地址运行的服务。 阻止的请求包括来自其他 Azure 服务、Azure 门户、日志记录和指标服务等的请求。 例外情况是,即使启用了 IP 筛选,也可以允许从某些 受信任的服务 访问事件中心资源。 有关受信任服务的列表,请参阅 受信任的 Azure 服务。
- 为命名空间 指定至少一个 IP 防火墙规则或虚拟网络规则 ,以仅允许来自虚拟网络的指定 IP 地址或子网的流量。 如果没有 IP 和虚拟网络规则,则可以通过公共 Internet(使用访问密钥)访问命名空间。
使用 Azure 门户配置防火墙规则
创建命名空间时,可以仅允许对该命名空间进行公共访问(从所有网络进行访问),也可以仅允许对命名空间进行专用访问(仅通过专用终结点进行访问)。 创建命名空间后,可以允许从特定 IP 地址或特定虚拟网络进行的访问(使用网络服务终结点)。
创建命名空间时配置公共访问
若要启用公共访问,请在命名空间创建向导的“网络”页上选择“公共访问”。
创建命名空间后,在“事件中心命名空间”页的左侧菜单中选择“网络”。 你会看到“所有网络”选项处于选中状态。 可以选择“所选网络”选项,允许来自特定 IP 地址或特定虚拟网络的访问。 下一部分提供有关配置 IP 防火墙以指定允许访问的 IP 地址的详细信息。
为现有命名空间配置 IP 防火墙
本部分介绍如何使用 Azure 门户为事件中心命名空间创建 IP 防火墙规则。
在 Azure 门户中导航到事件中心命名空间。
在左侧菜单中的“设置”下选择“网络”。
在 “网络 ”页上,对于 公用网络访问,请选择 “所选网络 ”选项,以仅允许从指定的 IP 地址进行访问。
下面是有关 公共网络访问 页中可用选项的更多详细信息:
Disabled. 此选项禁用对命名空间的任何公共访问。 只能通过专用终结点访问命名空间。
所选网络。 此选项允许使用选定网络的访问密钥对命名空间进行公共访问。
重要
如果选择“选定网络”,请添加至少一个 IP 防火墙规则或有权访问命名空间的虚拟网络。 如果希望仅通过专用终结点限制流向此命名空间的所有流量,请选择“禁用”。
所有网络(默认)。 此选项允许使用访问密钥从所有网络进行公共访问。 如果选择“ 所有网络 ”选项,事件中心将接受来自任何 IP 地址的连接(使用访问密钥)。 此设置等效于一个接受 0.0.0.0/0 IP 地址范围的规则。
若要限制对 特定 IP 地址的访问,请选择 “所选网络 ”选项,然后执行以下步骤:
在 “防火墙 ”部分中,选择 “添加客户端 IP 地址 ”选项,为当前客户端 IP 提供对命名空间的访问权限。
对于 地址范围,请输入 CIDR 表示法中的特定 IPv4 或 IPv6 地址或地址范围。
重要
当服务将来开始支持 IPv6 连接并且客户端会自动切换到使用 IPv6 时,如果只有 IPv4 地址而不是 IPv6 地址,则客户端会中断。 因此,建议现在将 IPv6 地址添加到允许的 IP 地址列表中,这样当服务最终切换到支持 IPv6 时,客户端不会中断。
指定是否允许 受信任的 Azure 服务绕过此防火墙。 有关详细信息,请参阅 受信任的 Azure 服务 。
在工具栏上选择“保存”,保存这些设置。 等待几分钟,确认会显示在门户通知上。
注释
若要限制对特定虚拟网络的访问,请参阅 “允许从特定网络进行访问”。
受信任的 Azure 服务
启用 “允许受信任的 Azure 服务绕过此防火墙 ”设置时,将向同一租户中的以下服务授予对事件中心资源的访问权限。
受信任的服务 | 支持的使用方案 |
---|---|
Azure 事件网格 | 允许 Azure 事件网格将事件发送到事件中心命名空间中的事件中心。 还需要执行以下步骤:
有关详细信息,请参阅使用托管标识进行事件传递 |
Azure 流分析 | 允许 Azure 流分析作业从事件中心命名空间中的(输入)读取数据或将数据写入(输出)事件中心。 重要说明:流分析作业应配置为使用 托管标识 访问事件中心。 有关详细信息,请参阅使用托管标识从 Azure 流分析作业访问事件中心(预览版)。 |
Azure IoT 中心 | 允许 IoT 中心将消息发送到事件中心命名空间中的事件中心。 还需要执行以下步骤:
|
Azure API 管理 | API 管理服务允许将事件发送到事件中心命名空间中的事件中心。
|
Azure Monitor(诊断设置和操作组) | 允许 Azure Monitor 将诊断信息和警报通知发送到事件中心命名空间中的事件中心。 Azure Monitor 可以从事件中心读取数据,还可以将数据写入事件中心。 |
Azure Synapse | 允许 Azure Synapse 使用 Synapse 工作区托管标识连接到事件中心。 将 Azure 事件中心数据发送方、接收方或所有者角色添加到事件中心命名空间上的标识。 |
Azure 数据资源管理器 | 允许 Azure 数据资源管理器使用群集的托管标识从事件中心接收事件。 需要执行以下步骤:
|
下面提供了 Azure 事件中心的其他受信任服务:
- Azure Arc
- Azure Kubernetes
- Azure 机器学习
- Azure Purview
使用资源管理器模板配置防火墙规则
重要
基本层不支持防火墙功能。
以下资源管理器模板允许将 IP 筛选器规则添加到现有事件中心命名空间。
模板中的 ipMask 是单个 IPv4 地址或 CIDR 表示法中的 IP 地址块。 例如,在 CIDR 表示法 70.37.104.0/24 中,表示从 70.37.104.0 到 70.37.104.255 的 256 个 IPv4 地址,其中 24 个表示范围的重要前缀位数。
注释
defaultAction
的默认值为 Allow
。 添加虚拟网络或防火墙规则时,请确保将 defaultAction
的值设置为 Deny
。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"namespace_name": {
"defaultValue": "contosoehub1333",
"type": "String"
}
},
"variables": {},
"resources": [
{
"type": "Microsoft.EventHub/namespaces",
"apiVersion": "2022-01-01-preview",
"name": "[parameters('namespace_name')]",
"location": "China East",
"sku": {
"name": "Standard",
"tier": "Standard",
"capacity": 1
},
"properties": {
"minimumTlsVersion": "1.2",
"publicNetworkAccess": "Enabled",
"disableLocalAuth": false,
"zoneRedundant": true,
"isAutoInflateEnabled": false,
"maximumThroughputUnits": 0,
"kafkaEnabled": true
}
},
{
"type": "Microsoft.EventHub/namespaces/authorizationrules",
"apiVersion": "2022-01-01-preview",
"name": "[concat(parameters('namespace_name'), '/RootManageSharedAccessKey')]",
"location": "chinaeast",
"dependsOn": [
"[resourceId('Microsoft.EventHub/namespaces', parameters('namespace_name'))]"
],
"properties": {
"rights": [
"Listen",
"Manage",
"Send"
]
}
},
{
"type": "Microsoft.EventHub/namespaces/networkRuleSets",
"apiVersion": "2022-01-01-preview",
"name": "[concat(parameters('namespace_name'), '/default')]",
"location": "China East",
"dependsOn": [
"[resourceId('Microsoft.EventHub/namespaces', parameters('namespace_name'))]"
],
"properties": {
"publicNetworkAccess": "Enabled",
"defaultAction": "Deny",
"virtualNetworkRules": [],
"ipRules": [
{
"ipMask": "10.1.1.1",
"action": "Allow"
},
{
"ipMask": "11.0.0.0/24",
"action": "Allow"
},
{
"ipMask": "172.72.157.204",
"action": "Allow"
}
]
}
}
]
}
若要部署模板,请按照 Azure 资源管理器的说明进行操作。
重要
如果没有 IP 和虚拟网络规则,则所有流量都将流向命名空间,即使你将 defaultAction
设置为 deny
。 可以通过公共 Internet(使用访问密钥)访问命名空间。 为命名空间指定至少一个 IP 规则或虚拟网络规则,以便仅允许来自虚拟网络的指定 IP 地址或子网的流量。
使用 Azure CLI 配置防火墙规则
使用 az eventhubs namespace network-rule-set
添加、列出、更新和删除命令来管理事件中心命名空间的 IP 防火墙规则。
使用 Azure PowerShell 配置防火墙规则
使用 Set-AzEventHubNetworkRuleSet
cmdlet 添加一个或多个 IP 防火墙规则。 文章中的一个示例:
$ipRule1 = New-AzEventHubIPRuleConfig -IPMask 2.2.2.2 -Action Allow
$ipRule2 = New-AzEventHubIPRuleConfig -IPMask 3.3.3.3 -Action Allow
$virtualNetworkRule1 = New-AzEventHubVirtualNetworkRuleConfig -SubnetId '/subscriptions/subscriptionId/resourcegroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVirtualNetwork/subnets/default'
$networkRuleSet = Get-AzEventHubNetworkRuleSet -ResourceGroupName myResourceGroup -NamespaceName myNamespace
$networkRuleSet.IPRule += $ipRule1
$networkRuleSet.IPRule += $ipRule2
$networkRuleSet.VirtualNetworkRule += $virtualNetworkRule1
Set-AzEventHubNetworkRuleSet -ResourceGroupName myResourceGroup -NamespaceName myNamespace -IPRule $ipRule1,$ipRule2 -VirtualNetworkRule $virtualNetworkRule1,$virtualNetworkRule2,$virtualNetworkRule3
默认操作和公用网络访问
REST API
API 为 2021-01-01-preview 版本及更早版本时,defaultAction
属性的默认值为 Deny
。 但是,除非已设置 IP 筛选器或虚拟网络规则,否则不会强制实施拒绝规则。 即,如果没有任何 IP 筛选器或虚拟网络规则,系统会将该属性值视为 Allow
。
从 2021-06-01-preview 及之后的 API 版本开始, 属性的默认值为 defaultAction
,以准确反映服务端强制要求。 如果将默认操作设置为 Deny
,则系统会强制执行 IP 筛选器和虚拟网络规则。 如果将默认操作设置为 Allow
,则系统不会强制执行 IP 筛选器和虚拟网络规则。 关闭这些规则并重新打开后,服务会记住这些规则。
2021-06-01-preview 及之后的 API 版本还引入了一个名为 的新属性。 如果将其设置为 Disabled
,则操作仅限于专用链接。 如果将其设置为 Enabled
,则可通过公共 Internet 执行操作。
有关这些属性的详细信息,请参阅 “创建或更新网络规则集 ”和 “创建或更新专用终结点连接”。
注释
以上设置都不会绕过通过 SAS 或 Microsoft Entra 身份验证对声明进行的验证。 身份验证检查始终在服务验证由 defaultAction
、publicNetworkAccess
、privateEndpointConnections
设置配置的网络检查后运行。
Azure 门户
Azure 门户始终使用最新的 API 版本来获取和设置属性。 如果已使用 2021-01-01-preview 和更早defaultAction
版本配置命名空间,并且已设置为Deny
并指定了零个 IP 筛选器和虚拟网络规则,则门户之前会在命名空间的“网络”页上检查“所选网络”。 现在,Azure 门户将检查“所有网络”选项。
后续步骤
若要限制对事件中心对 Azure 虚拟网络的访问,请参阅以下链接: