我要如何疑難排解使用 Amazon MSK 叢集 (具有 SASL/SCRAM 身分驗證) 時的常見問題?

1 分的閱讀內容
0

我在使用 Amazon Managed Streaming for Apache Kafka (Amazon MSK) 叢集 (已啟用 SASL/SCRAM 身分驗證) 時遇到問題。

解決方案

您在代理程式日誌中收到 ClusterAuthorizationException 錯誤

存取 Amazon MSK 叢集時,您可能會看見下列錯誤訊息:

org.apache.kafka.common.errors.ClusterAuthorizationException: Request Request(processor=11, connectionId=INTERNAL_IP-INTERNAL_IP-0, session=Session(User:ANONYMOUS,/INTERNAL_IP), listenerName=ListenerName(REPLICATION_SECURE), securityProtocol=SSL, buffer=null) is not authorized.

您會在下列兩項條件同時成立時收到此錯誤訊息:

  • 您的 Amazon MSK 叢集已啟用 Simple Authentication and Security Layer (SASL)/Salted Challenge Response Mechanism (SCRAM) 身分驗證。
  • 您已將叢集的存取控制清單 (ACL) 設為 resourceType=CLUSTERoperation=CLUSTER_ACTION

Amazon MSK 叢集不支援此設定,因為此設定會防止內部 Apache Kafka 複寫。使用此設定,對於代理程式之間的通訊,代理程式的身分會顯示為 ANONYMOUS (匿名)。如果您需要叢集在使用 SASL/SCRUM 身分驗證時支援這些 ACL,則必須將所有操作的許可授與 ANONYMOUS (匿名) 使用者。如此可防止代理程式之間複寫的限制。使用下列命令,將此許可授與 ANONYMOUS (匿名) 使用者:

./kafka-acls.sh --authorizer-properties
zookeeper.connect=example-ZookeeperConnectString --add --allow-principal
User:ANONYMOUS --operation ALL --cluster

您已變更 AWS Secrets Manager 機密的使用者名稱和/或密碼,但舊的登入憑證仍在作用中

AWS Secrets Manager 機密必須與單一使用者關聯。如果使用者不再需要存取叢集,則必須解除與機密的關聯,且必須更新 ACL。當您更新機密上的使用者名稱時,舊的使用者名稱不會自動解除關聯。因此,最佳實務是為新的使用者建立新的機密。如果您需要使用舊機密,請先解除關聯機密;接著,再次與機密建立關聯之前,請先更新登入憑證。如需詳細資訊,請參閱設定使用者

非管理員使用者可以建立新的 ACL 並修改現有的 ACL

根據預設,任何使用者都可以建立或修改 ACL。若要防止非管理員使用者使用 Apache ZooKeeper 建立或更新 ACL,請務必透過將 ZooKeeper 節點放置在獨立安全群組中的方式來限制 Apache ZooKeeper 的存取。此外,請確保所有 Apache Kafka 命令和用戶端連線均會透過 Bootstrap 代理程式而不是 Apache ZooKeeper 來執行。請注意,所有 Apache Kafka 操作都可以使用 Bootstrap 字串來執行。


相關資訊

Apache Kafka ACL

Scram 機密

AWS 官方
AWS 官方已更新 2 年前