启用 IAM 和 SCRAM 时的 Aws MSK 安全行为

0

【以下的问题经过翻译处理】 当同时启用 IAM 和 SASL/SCRAM 时,Authn 和 Authz 机制是什么?

| Authn & Authz mech | MSK authn | MSK authz | Kafka client authn | Kafka client authz | Kafka ACL behaviour | Property allow.everyone.if.no.acl.found | | --- | --- | --- | --- | --- | --- | | SASL/IAM clients | IAM | IAM | SASL/IAM | IAM | No effect | No effect | | SASL/SCRAM clients | IAM | IAM | SASL/SCRAM | ? | ? | ? |

有人可以澄清上表中的问号吗?

Amazon MSK 允许在同一集群中同时使用 IAM 和 SASL/SCRAM。 当同时启用 IAM 基于角色和 SASL/SCRAM 时,Authn 和 Authz for Kafka API 的行为不明确。

  1. 对于 SASL/SCRAM 客户端,这是否意味着我们可以使用 SASL/SCRAM 进行身份验证,使用 IAM 进行主题级别的授权? (文档说 Kafka ACL 在为 MSK 集群启用 IAM 身份验证时无效)
  2. 或者这是否意味着(对于 SASL/SCRAM 客户端)我们使用 SASL/SCRAM 进行身份验证,但在主题级别没有 authz(因为 Kafka ACL 不起作用)?
  3. Amazon MSK 允许这两种机制,并且在集群中实际只允许其中一种机制,这是一个bug吗?

不幸的是,这些在文档中并不清楚。

1 回答
0

【以下的回答经过翻译处理】 当在 MSK 集群上启用多重身份验证时,授权取决于客户端使用哪些访问控制方法来访问 MSK 集群。

让我们以上面的示例为例,其中启用了 IAM 和 SASL/SCRAM,假设“客户端 A”正在通过 IAM 身份验证访问 MSK 集群,而“客户端 B”正在通过 SASL/SCRAM 访问集群。您仍然可以调用 Apache Kafka ACL API 并为使用 IAM 访问控制的 MSK 集群添加 ACL,但存储在 Apache ZooKeeper 中的 ACL 对 IAM 角色的授权没有影响。因此,使用 IAM 身份验证的“客户端 A”的访问/授权将由 IAM 策略控制,因为即使添加了 ACL,ACL 对“客户端 A”也没有影响。

但是当客户端使用非 IAM 身份验证时,这些添加的 ACL(和 allow.everyone.if.no.acl.found)将生效,即在这种情况下授权将由 ACL 控制。因此,当使用 SASL/SCRAM 的“客户端 B”尝试执行任何操作时,它会根据添加的 ACL 进行验证。

简而言之,填补您提到的上表中的空白

| Authn & Authz mech | Kafka client authn | Kafka client authz | Kafka ACL behaviour | Property allow.everyone.if.no.acl.found | | --- | --- | --- | --- | --- | --- | | SASL/IAM clients | SASL/IAM | IAM | No effect | No effect | | SASL/SCRAM clients | SASL/SCRAM | ACLs | Applies/Does have an effect | Applies/Does have an effect |

profile picture
专家
已回答 6 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则