限制网络访问
缺省情况下,Event Streams 实例配置为使用 IBM Cloud® 公用网络,因此可以通过公用因特网进行访问。
如果需要,可以使用网络类型或基于上下文的限制来限制网络连接,如下所示:
- 网络类型
-
IBM Cloud 提供专用网络和公用网络。 如果您的工作负载完全在 IBM Cloud 中运行,并且不需要对服务进行公共访问,则可将 Event Streams 实例配置为只能通过 IBM Cloud 专用网络访问。 这可提高隔离度,并且不会产生与公共流量关联的出口带宽费用。 此外,还可以将实例配置为通过 IBM Cloud 公用和专用网络进行访问,这样工作负载可以针对其位置使用最合适的接口。 您可以在 IBM Cloud上的虚拟路由和转发中找到有关专用网络的更多信息。
- 基于上下文的限制 (CBR)
-
您可以定义访问规则,以限制接受连接的网络位置。 例如,网络类型,IP 范围,VPC 或其他服务。 有关更多信息,请参阅 什么是基于上下文的限制。
-
基于上下文的限制的审计事件在基于上下文的限制下发布 IBM Cloud Activity Tracker 事件 基于上下文的限制规则事件。 与 CBR 实施相关的 Activity Tracker 事件在专用端点上不可用。
配置网络类型
您可以将企业服务实例配置为在 IBM Cloud 专用,公用或专用和公用网络上可用。 以下信息描述了如何选择和更新所需的联网类型。 缺省情况下,已选择公用网络。
先决条件
确保完成以下任务:
-
通过在其中一个受支持的多专区位置中使用企业套餐来创建服务实例。 有关更多信息,请参阅选择套餐。
-
对 IBM Cloud 帐户启用 虚拟路由转发(VRF)。
-
运行以下命令启用服务端点连接:
ibmcloud account update --service-endpoint-enable true
要检查先决条件是否已完成,请运行以下命令,然后检查以下两个属性是否为真:
ibmcloud account show VRF Enabled: true Service Endpoint Enabled: true
在供应期间选择网络配置
在选择企业集群的网络配置时,您有多种选择。
-
使用 IBM Cloud 公用网络。 可以在公用因特网上访问端点。 这是缺省值。
-
使用 IBM Cloud 专用网络。 端点在公共因特网上不可见。
-
使用 IBM Cloud 公用和专用网络。 端点在公用因特网上以及在 IBM Cloud内部都可见。
您可以在供应时通过 Event Streams 目录供应页面进行此选择。 使用 Service Endpoints 下拉菜单选择 Public (默认)、Private 或 Public and Private。
或者,如果要使用 CLI 供应 Event Streams 服务,请使用以下命令:
-
启用公共端点(默认值):
ibmcloud resource service-instance-create <instance-name> messagehub ibm.message.hub.enterprise.3nodes.2tb <region> --service-endpoints public
-
仅启用专用端点:
ibmcloud resource service-instance-create <instance-name> messagehub ibm.message.hub.enterprise.3nodes.2tb <region> --service-endpoints private
-
要启用专用和公用端点:
ibmcloud resource service-instance-create <instance-name> messagehub ibm.message.hub.enterprise.3nodes.2tb <region> --service-endpoints public-and-private
更新网络配置
您还可以在调配后切换企业集群使用的端点。 为此,请使用以下 CLI 命令:
要直接从公共或专用端点迁移到公共和专用端点,请执行以下操作:
ibmcloud resource service-instance-update <instance-name> --service-endpoints public-and-private
要从公共和专用端点迁移到公共端点,请执行以下操作:
ibmcloud resource service-instance-update <instance-name> --service-endpoints public
要从公用和专用端点迁移到专用端点:
ibmcloud resource service-instance-update <instance-name> --service-endpoints private
不支持直接从公共端点切换到专用端点或从专用端点切换到公共端点。 交换机将禁用所有公共端点,并且应用程序将失去对集群的访问权。 要避免这种情况,首先要同时启用公共端点和专用端点,然后重新配置应用程序以使用专用端点,最后切换到仅使用专用端点。
例如,要从公共端点迁移到专用端点:
首先,启用公共和专用端点:
ibmcloud resource service-instance-update <instance-name> --service-endpoints public-and-private
接下来,创建包含专用端点和新 API 密钥的新凭证,如下所示:
ibmcloud resource service-key-create <private-key-name> <role> --instance-name <instance-name> --service-endpoint private
然后,更新使用具有新服务密钥和端点详细信息的实例的任何应用程序。
最后,在将应用程序迁移到专用端点之后,运行以下命令以关闭公共端点:
ibmcloud resource service-instance-update <instance-name> --service-endpoints private
指定 IP 允许列表 (不推荐)
现在不推荐使用此功能,而是使用基于上下文的限制 配置 CBR。
当您供应企业套餐的实例,选择专用端点并希望进一步限制仅对具有特定 VPC 的已知 VSI 的访问时,可以使用 CLI 添加 IP 允许列表并附加如下:
ibmcloud resource service-instance-create <instance-name> <plan-name> <region> --service-endpoints private -p '{"private_ip_allowlist":["CIDR1","CIDR2"]}' "
其中 CIDR1, CIDR2 为 a.b.c.d/e 形式的 IP 地址。 CIDR 数组可以具有任意数量的元素。
或者,要更新现有服务实例的 IP 允许列表,请完成以下步骤:
-
获取应用于实例的原始 IP 允许列表:
$ibmcloud es init -i <instance-name> API Endpoint: https://mh-cktmqpdbvkfczhmn.us-south.containers.appdomain.cloud Service endpoints: public-and-private Private IP allowlist: "10.243.0.8/32","10.243.128.8/32","10.243.64.4/32" Storage size: 4096 GB Throughput: 300 MB/s OK
-
将 CIDR 添加到
Private IP allowlist
中或从中删除 CIDR -
运行以下命令以使用新列表更新服务实例:
ibmcloud resource service-instance-update <instance-name> --service-endpoints private -p '{"private_ip_allowlist":["CIDR1","CIDR2"]}'
其中,CIDR1、CIDR2 是形式为 a.b.c.d/e 的 IP 地址
如果使用 CLI 启用了专用端点,那么下次更新专用 IP 允许列表时,可以省略 --service-endpoints private
。
切换 IP 允许列表会禁用任何不在新列表中的允许 IP 地址。 从这些地址访问群集的应用程序将失去对群集的访问权限。
检索端点信息
服务实例的端点信息特定于网络类型。 同时选择了公用和专用网络的服务实例具有每个实例的端点。
您可以使用 service-key-create
CLI 命令的 --service-endpoint
选项检索所需网络类型的端点信息,如下所示:
ibmcloud resource service-key-create <private-key-name> <role> --instance-name <instance-name> --service-endpoint private
访问 IBM Event Streams 控制台
如果实例可用公共网络(包括公共网络和公私网络),则控制台仍可访问。
由于技术限制,如果只选择了专用网络并设置了基于上下文的限制,则无法访问控制台。 建议使用 CLI 执行任何管理操作。例如,ibmcloud es topic-create [--name] TOPIC_NAME [--partitions PARTITIONS] [--config KEY=VALUE[;KEY=VALUE]* ]*
配置基于上下文的限制
您可以定义用于限制接受连接的网络位置的规则。 例如,按网络类型,IP 范围,VPC 或其他服务。 有关更多信息,请参阅 什么是基于上下文的限制?
可以为标准和企业套餐 Event Streams 实例定义基于上下文的限制。 定义基于上下文的限制规则时,以下规则适用:
-
管理 REST API,REST 生产者 API,模式注册表 API 和 Kafka 客户机调用都在针对 Event Streams 实例创建的基于上下文的限制规则范围内。
-
服务实例本身的管理功能 (例如,IBM Cloud CLI
service-instance-create
,service-instance-delete
或service-instance-update
命令或等效命令) 不在针对 Event Streams 实例创建的基于上下文的限制规则的范围内。
管理基于上下文的限制设置
创建基于上下文的限制规则是一个两步过程:
-
创建具有允许的 IP 地址列表,允许的 VPC 或引用服务的网络区域。 有关更多信息,请参阅 创建网络区域。
-
创建针对 Event Streams 资源指定一个或多个网络区域的规则。 有关规则创建的更多信息,请参阅 创建规则。
接下来,请注意以下几点:
- 您必须是帐户所有者或具有对所有帐户管理服务的管理员角色的访问策略,才能限制访问权。
- 创建或更新区域或规则后,可能需要几分钟 (最多 10 分钟) 才能使更改生效。
- 应用基于上下文的限制后,将仅对创建规则后进行认证的客户机实施这些限制。 现有客户机应重新认证以强制实施限制规则。
支持具有基于上下文的限制的服务 (服务到服务) 之间的连接
如果 Event Streams 服务实例配置为使用 客户管理的加密,那么还必须授予该服务连接到所选 IBM 密钥管理服务的能力。
该帐户的管理员可按如下所示设置此值:
- 将 Event Streams 服务的服务引用添加到所需的网络区域。
- 通过适用于其他云服务的基于上下文的限制规则,确保允许从此区域进行访问。
有关服务引用创建的更多信息,请参阅 服务引用。
基于上下文的限制规则与专用 IP 允许列表共存
基于上下文的限制规则现在取代了使用专用 IP 允许列表作为针对 Event Streams 实例实现允许列表的建议方法。 继续支持使用专用 IP 允许列表,但现在已不推荐使用。
如果针对同一 Event Streams 实例定义了基于上下文的限制规则和 IP 允许列表,那么将忽略 IP 允许列表,因为基于上下文的限制规则会覆盖任何先前的专用 IP 允许列表。
从专用 IP 允许列表迁移到基于上下文的限制
客户负责迁移。 您可以再次创建 IP 允许列表定义作为基于上下文的限制网络区域,并通过创建基于上下文的限制规则将其应用于服务实例。 然后,可以删除先前的专用 IP 允许列表。