IBM Cloud Docs
管理对 Event Streams 实例的认证

管理对 Event Streams 实例的认证

缺省情况下,Event Streams 支持两种 SASL (简单认证和安全层) 机制作为 Event Streams 实例的认证方法 :PLAIN 和 OAUTHBEARER。

使用 SASL PLAIN 配置的 Kafka 客户机在认证过程中使用 IAM API 密钥作为纯文本密码,Event Streams 将 API 密钥发送到 IAM 以进行验证。 认证后,此客户机将保持已连接,并且在断开连接并希望重新连接之前不需要重新认证。

使用 SASL OAUTHBEARER 配置的 Kafka 客户机在认证过程中使用 IAM 访问令牌,Event Streams 通过 IAM 公用密钥验证令牌。 由于 IAM 访问令牌具有到期时间 (通常为 1 小时),因此需要 Kafka 客户机重新生成新令牌,并在先前令牌接近到期时间时再次执行认证过程。 与 SASL PLAIN 相比,此方法通过两种方式提供更好的安全性:

  1. API 密钥始终停留在客户端以生成访问令牌,并且不再通过网络发送到 Kafka 代理,这将消除 API 密钥暴露的风险。
  2. 当访问令牌到期时,将定期执行认证过程,这将最大程度地降低令牌暴露的风险。

对于更安全的认证,SASL OAUTHBEARER 是 Kafka 客户机唯一建议的认证方法。 请参阅 配置 Kafka API 客户机,以了解如何在 Kafka 客户机中配置 SASL OAUTHBEARER。

企业用户可以选择在其企业实例中禁用 SASL PLAIN。 请使用以下命令:

ibmcloud resource service-instance-update <instance-name> -p '{"iam_token_only":true}'

连接到 Event Streams

有关如何获取外部应用程序的安全密钥凭证的更多信息,请参阅 连接到 Event Streams

管理对 Event Streams 资源的授权

您可以采用细颗粒度方式保护 Event Streams 资源,以管理您想要授予每个用户对每个资源的访问权。

当您更改 IAM 策略和权限时,有时需要几分钟才能在底层服务中反映出来。

我可以保护什么内容?

在Event Streams 中,您可以安全访问以下资源:

  • 群集(集群):您可以控制哪些应用程序和用户可以连接到服务。
  • 主题(topic):您可以控制用户和应用程序创建、删除、读取和写入主题的能力。
  • 用户组(群组):您可以控制应用程序加入消费者组的能力。
  • 生产者事务(txnid):您可以控制在Kafka中使用事务生产者功能的能力(即跨多个分区的单次原子写入)。

用户对每种资源的访问权限级别(也称为角色)如下。

示例Event Streams用户角色和操作
访问角色 操作描述 操作示例
读者 在Event Streams中执行只读操作,如查看资源。 通过为群集资源类型分配读取权限,允许应用程序连接到群集。
写入者 写入者的许可权超过读取者角色,包括编辑 Event Streams 资源。 通过为主题资源和主题名称类型分配写访问权限,允许应用程序生成主题。
管理者 管理者的许可权超过写入者角色,可以完成特权操作。 此外,您可以创建和编辑 Event Streams 资源。 通过分配对 Event Streams 实例的管理访问权,允许对所有资源的完全访问。

我如何分配访问权?

Cloud Identity 和 Access Management (IAM) 策略附加到要进行控制的资源。 每项策略都规定了特定用户必须拥有的访问权限级别,以及访问哪种资源或哪组资源。 策略由以下信息构成:

  • 策略适用的服务类型。 例如,Event Streams。 您可以将策略范围限定为包含所有服务类型。
  • 要保护的服务实例。 您可以将策略范围限定为包含某个服务类型的所有实例。
  • 要保护的资源类型。 有效值为 clustertopicgroupschematxnid。 指定类型是可选操作。 如果不指定类型,那么策略将应用于服务实例中的所有资源。 如果要指定多种资源类型,那么必须为每种资源创建一个策略。
  • 要保护的资源。 为 topicgroupschematxnid 类型的资源指定。 如果不指定资源,那么策略将应用于服务实例中指定类型的所有资源。
  • 分配给用户的角色。 例如,“读取者”、“写入者”或“管理者”。

有关 IAM 的更多信息,请参阅 IBM Cloud Identity and Access Management

有关如何设置策略的示例,请参阅 IBM Cloud IAM Service IDs and API Keys

通配符功能

您可以利用 IAM 通配符功能在 Event Streams 上为资源组设置策略。 例如,如果你给所有主题取了 Dept1_Topic1Dept1_Topic2 这样的名字,你就可以为名为 Dept1_* 的主题设置策略,这些策略将应用于带有该前缀的所有主题。 有关更多信息,请参阅 使用通配符策略分配访问权限

什么是缺省安全设置?

缺省情况下,供应 Event Streams 时,进行供应的用户将被授予对该实例的所有资源的管理者角色。 此外,在同一账户中拥有“所有”服务或“所有”Event Streams服务实例的管理者角色的任何用户也拥有完全访问权限。

然后,您可以应用更多策略,将访问权限扩展到其他用户。 您可以将策略范围限定为适用于整个 Event Streams 或者 Event Streams 中的个别资源。 更多信息,请参阅 常用操作

只有具有账户管理角色的用户才能为用户分配策略。 请使用 IBM Cloud 仪表板或 ibmcloud 命令来分配策略。

常用操作

下表汇总了一些常见的 Event Streams 操作以及需要分配的访问权。

集群需求

通过控制对集群资源的访问,您可以确定哪些应用程序和用户可以连接到服务。 除了以下资源类型所需的策略外,还需要对 ResourceType: ClusterRole: Reader, Writer, Manager 的访问权。

保险销售人操作

下表描述了向 Event Streams生成消息的用户或应用程序所需的角色和资源需求。 除此资源类型所需的策略外,还需要访问 ResourceType: ClusterRole: Reader, Writer, Manager

生产者行动
保险销售人操作 主题 txnid
向主题发送消息。 写入者 写入者 [1]
允许应用程序对主题进行事务性生产。 写入者 读者 写入者
初始化事务。 写入者
落实事务。 写入者 写入者
异常中止事务。 写入者
将偏移量发送到事务。 读者 写入者

使用者操作

下表描述了使用来自 Event Streams的消息的用户或应用程序所需的角色和资源需求。 除此资源类型所需的策略外,还需要访问 ResourceType: ClusterRole: Reader, Writer, Manager

消费者行动
使用者操作 主题 txnid
允许应用程序消费一个主题(消费群)。 读者 读者 [2]
允许应用程序从特定主题(无消费者群体)连接和消费。 读者
允许应用程序从任何主题(无消费者群体)连接和消费。 读者
使用 Kafka Streams。 管理者 读者
删除使用者组。 管理者
分配。 读者
落实异步。 读者 读者
落实同步。 读者 读者
强制重新平衡。 读者
轮询。 读者
订阅。 读者
取消预订。 读者 写入者

管理操作

除此资源类型所需的策略外,还需要访问 ResourceType: ClusterRole: Reader, Writer, Manager

行政部门的行动
管理操作 主题 txnid
更改主题配置。 管理者
变更使用者组偏移量。 读者 读者
创建分区。 管理者
创建主题。 管理者
删除使用者组偏移量。 读者 管理者
删除使用者组。 管理者
删除记录。 管理者
删除主题。 管理者
描述生产者。 读者
篱笆生产者。 写入者
以递增方式更改主题配置。 管理者
从使用者组中除去成员。 读者

模式注册表操作

通过“模式注册表”操作,您可以变更模式版本,例如创建,更新和删除工件或工件版本 (仅限企业套餐)。 工件 是 Event Streams 用于描述相关模式的术语,通常与特定 Kafka 主题相关联并由其使用。 术语 主题 通常用于描述同一概念。 有关更多信息,请参阅 使用 Event Streams 模式注册表。 除此资源类型所需的策略外,还需要访问 ResourceType: ClusterRole: Reader, Writer, Manager

模式登记处行动
模式注册表操作 模式
获取最新工件。 读者
列出版本。 读者
获取版本。 读者
按内容获取元数据。 读者
获取元数据。 读者
获取版本元数据。 读者
获取由输入标识标识的模式字符串。 读者
仅检索输入标识所标识的模式。 读者
获取由输入标识标识的主题/版本对。 读者
获取在指定主题下注册的版本的列表。 读者
获取工件兼容性规则。 读者
获取在此主题下注册的特定模式版本。 读者
获取此主题的指定版本的模式。 读者
在指定主题下注册新模式 (如果版本已存在)。 读者
检查是否已在指定主题下注册模式。 读者
获取引用具有给定主题和版本的模式的模式的标识列表。 读者
针对特定版本的主题模式测试输入模式以实现兼容性。 读者
针对主题中的一个或多个版本对模式执行兼容性检查。 读者
获取主题的兼容性级别。 读者
在指定的主题下注册新模式 (如果要创建版本)。 写入者
创建工件。 写入者
更新工件。 写入者
禁用工件。 写入者
创建版本。 写入者
删除版本。 管理者
更新工件状态。 管理者
更新版本状态。 管理者
删除工件。 管理者
创建工件兼容性规则。 管理者
更新工件兼容性规则。 管理者
更新指定主题的兼容性级别。 管理者
删除工件兼容性规则。 管理者
删除指定的主题及其关联的兼容性级别 (如果已注册)。 管理者
删除在此主题下注册的特定模式版本。 管理者
删除指定的主题级别兼容性级别配置,并还原为全局缺省值。 管理者
更新全局兼容性规则。[3]
更新全局兼容性级别。[4]

模式注册表兼容性操作

对于与现有应用程序的互操作,Event Streams 模式注册表支持 Confluent 模式注册表 API v7.2 的子集。 要执行这些操作,您需要以下资源级别访问权。

兼容性操作表
模式注册表兼容性操作 模式
获取由输入标识标识的模式字符串。 读者
仅检索输入标识所标识的模式。 读者
获取向模式注册表注册的模式类型。
获取由输入标识标识的主题/版本对。 读者
获取已注册主体的列表。
获取在指定主题下注册的版本的列表。 读者
删除指定的主题及其关联的兼容性级别 (如果已注册)。 管理者
获取在此主题下注册的特定模式版本。 读者
获取此主题的指定版本的模式。 读者
在指定的主题下注册新模式。 读者/作家 [5]
检查是否已在指定主题下注册模式。 读者
删除在此主题下注册的特定模式版本。 管理者
获取引用具有给定主题和版本的模式的模式的标识列表。 读者
针对特定版本的主题模式测试输入模式以实现兼容性。 读者
针对主题中的一个或多个版本对模式执行兼容性检查。 读者
更新全局兼容性级别。[6]
获取全局兼容性级别。
更新指定主题的兼容性级别。 管理者
获取主题的兼容性级别。 读者
删除指定的主题级别兼容性级别配置并还原为全局缺省值。 管理者

管理对模式注册表的访问权

模式注册中心的授权模型与本文档“管理对Event Streams资源 的授权”部分中描述的策略风格相同。

IAM 资源

有了新的 schema IAM 资源类型,就可以创建通过不同粒度控制访问的策略,如以下示例所示。

  • 特定模式。
  • 通过通配符表达式选择的一组模式。
  • IBM Event Streams 实例存储的所有模式。
  • 账户中IBM Event Streams的所有实例存储的所有模式。

Event Streams 已具有集群资源类型的概念。 它用于控制对服务实例的所有访问,访问任何Kafka或 HTTPS 端点都需要最低级别的“阅读器”角色。 这种对群集资源类型的使用也适用于模式注册表,访问注册表至少需要一个“阅读器”角色。

授权场景示例

下表描述了与Event Streams交互的一些场景示例,以及相关参与者所需的角色。模式注册表进行交互的示例,以及相关参与者需要扮演的角色。 管理模式的过程与部署应用程序是分开处理的。 因此,管理注册表中模式的服务 ID 和连接注册表的应用程序都需要策略。

授权方案示例
场景 人员或进程角色 人员或进程资源 应用程序角色 应用程序资源
新模式版本由人员或进程放入注册表中(该进程与使用模式的应用程序是分开的)。 Reader
Writer
cluster
schema
Reader
Reader
cluster
schema
在注册表中添加模式时,需要指定一条非默认规则,控制模式版本的演进方式。 Reader
Manager
cluster
schema
不适用 不适用
模式与使用模式的应用程序代码一起管理。 新模式版本在应用程序尝试使用新模式版本时创建。 不适用 不适用 Reader
Writer
cluster
schema
更改了用于控制模式演化的全局缺省规则。 Manager cluster 不适用 不适用

  1. 仅事务生成需要 txnid 上的写程序。 ↩︎

  2. 仅当分配导致使用者离开其当前组时,才需要组上的阅读器。 ↩︎

  3. 您不需要对模式资源的访问权,而是需要对集群资源的“管理者”访问权。 ↩︎

  4. 您不需要对模式资源的访问权,而是需要对集群资源的“管理者”访问权。 ↩︎

  5. 读者 (如果版本已存在),写入者 (如果版本将由 API 调用创建)。 ↩︎

  6. 您不需要对模式资源的访问权,而是需要对集群资源的“管理者”访问权。 ↩︎