Amazon MSK クラスターを SASL/SCRAM 認証で使用する際の一般的な問題のトラブルシューティング方法を教えてください。

最終更新日: 2022 年 2 月 28 日

SASL/SCRAM 認証が有効になっている Amazon Managed Streaming for Apache Kafka (Amazon MSK) クラスターに問題が発生しています。

解決方法

ブローカーのログに 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 を設定しました。

この設定では Apache Kafka の内部レプリケーションが妨げられるため、Amazon MSK クラスターはこの設定をサポートしていません。この設定では、ブローカー間の通信について、ブローカーの ID が ANONYMOUS として表示されます。SASL/SCRAM 認証の使用中にクラスターでこれらの 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 シークレットは 1 人のユーザーに関連付ける必要があります。ユーザーがクラスターにアクセスする必要がなくなった場合は、シークレットの関連付けを解除し、ACL を更新する必要があります。シークレットのユーザー名を更新しても、古いユーザー名の関連付けは自動的には解除されません。そのため、新しいユーザー用に新しいシークレットを作成することをお勧めします。古いシークレットを使用する必要がある場合は、まずシークレットの関連付けを解除し、認証情報を更新してからシークレットを再度関連付けます。詳細については、「ユーザーの操作」を参照してください。

管理者以外のユーザーは、ACL の新規作成や、既存の ACL の変更が可能

デフォルトでは、すべてのユーザーが ACL を作成または変更できます。管理者以外のユーザーが Apache ZooKeeper を使用して ACL を作成または更新できないようにするには、ZooKeeper ノードを別のセキュリティグループに配置して、必ず Apache ZooKeeper へのアクセスを制限してください。また、すべての Apache Kafka コマンドとクライアント接続が、Apache ZooKeeper ではなく、ブートストラップブローカーを介して実行されていることを確認します。Apache Kafka のすべての操作は、ブートストラップ文字列を使用して実行できます。


この記事は役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?