将 Apache Kafka SASL OUTHBEARER 与 Python 一起使用

SASL/Oauthbearer 比在客户端应用程序中配置用户名/密码的 SASL/PLAIN 更安全。万一用户凭据被泄露,爆炸半径会更显着,因为用户可能拥有其他访问权限。在 SASL/OAUTHBEARER 中,首选服务帐户,这会减少泄漏的爆炸半径。建议每个客户端应用程序有一个服务帐户。使用服务帐户,可以快速将重置凭据与用户凭据进行比较。 

您还可以通过OAuth在 SASL/PLAIN 中使用服务帐户,这解决了密钥轮换问题。在图 1 中,您可以看到这两个流程。起初,建立一个连接需要 4 次往返,而在 OAuth over SASL 中,客户端向授权服务器发出令牌请求并将令牌发送到 Kafka 代理/资源服务器,这样既高效又减少了爆炸半径更少的啤酒花。要更好地了解线程模型和风险,请参阅OAuth 2.0 威胁模型和安全注意事项

架构概述 

在图 2 中,我使用了两个Python客户端:producer producer_oauth.pyconsumer consumer_oauth.py。对于 Apache Kafka 和服务注册表,Red Hat OpenShift Streams for Apache Kafka 和 Red Hat OpenShift Service Registry 允许创建即用型开发人员实例,并支持开箱即用的 SASL/OAUTHBEARER 和 SASL/PLAIN 安全机制通过 OAuth 和轻松的配置管理。

Apache Kafka 和服务注册表 

创建一个 Kafka 实例并登录到 RedHat 混合云控制台。在应用程序和数据服务目录下选择“Stream for Apache Kafka”。单击“Kafka 实例”。在图 3 中,您可以看到我已经创建了一个名为kafka-instance 的实例。您可以使用任何允许的名称。

一旦状态显示为就绪状态,单击 kebab 图标(三个垂直点)以查看连接详细信息,如图 3 所示。 

复制 Bootstrap Server URL 并为其创建导出或复制以供以后使用,可用于运行生产者/消费者客户端。

现在,单击“创建服务帐户”按钮以创建服务客户端 ID 和密码。使用服务帐户 clientId 和密钥。您可以通过向授权服务器(在本例中为 Red Hat SSO)发出客户端凭据授予请求来检索访问令牌。

导航到 Kafka Instances 部分,然后单击您创建的实例。让我们创建一个主题。在图 6 中,我创建了一个名为“test”的主题。您可以选择任何首选名称。

分配对上一节中创建的服务帐户的访问权限。在图 7 中,我分配了对主题“test”的访问权限,并为 Consumer 组添加了权限。为简单起见,我分配了通配符 (*) 权限;但您可以分配细粒度的权限。 

让我们通过导航到应用程序和数据服务目录中的“服务注册表”来创建一个服务注册表。在图 8 中,我创建了一个“test-registry”实例。

对于 Confluence Python 客户端,复制“Schema Registry compatible API”,如图 11 所示。该 API URL 可以供模式注册表客户端在执行序列化/反序列化时访问模式。

分配服务帐户访问此架构注册表的权限。如图 12 所示,导航到Access仪表板,然后单击“Grant access”按钮。

帐户下拉部分中选择服务帐户,并根据图 13 中所示的用例将其分配为“查看器”或“管理器”。

Python 生产者和消费者

在图 14 中,您可以看到 Python 生产者客户端使用“SASL/OAUTHBEARER”的配置要求,服务帐户通过命令行参数传递为client_idclient_secrets和授权服务器令牌 URL。 

当客户端尝试建立连接时,该方法get_token将使用授权服务器令牌 URLclient credentials向授权服务器发出授权请求。在这种情况下,授权服务器是 Red Hat SSO。请求成功后,返回一个访问令牌,该令牌可以与生产消息请求一起发送到 Kafka 代理。  client_idclient_secrets

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wouderw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值