启用 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 Antwort
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
EXPERTE
beantwortet vor 5 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen