Amazon MSK 클러스터를 SASL/SRAM 인증과 함께 사용할 때 발생하는 일반적인 문제를 해결하려면 어떻게 해야 합니까?

2분 분량
0

SASL/SCRAM 인증이 활성화된 Amazon Managed Streaming for Apache Kafka(Amazon MSK) 클러스터에 문제가 있습니다.

해결 방법

브로커 로그에 클러스터 권한 부여 예외 오류가 표시됨

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 클러스터에 Security Layer (SASL)/Salted Challenge Response Mechanism (SCRAM) 인증이 활성화되어 있습니다.
  • resourceType=CLUSTERoperation=CLUSTER_ACTION을 클러스터에 대한 액세스 제어 목록(ACL)에 설정했습니다.

Amazon MSK 클러스터는 이 설정이 내부 Apache Kafka 복제를 차단하기 때문에 지원하지 않습니다. 이 설정을 사용하면 브로커 간 통신에 대해 브로커의 ID가 ANONYMOUS로 표시됩니다. SASL/SRAM 인증을 사용하는 동안 클러스터가 이러한 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 명령과 클라이언트 연결이 Apache ZooKeeper 대신 부트스트랩 브로커를 통해 실행되는지 확인하십시오. 모든 Apache Kafka 작업은 부트스트랩 문자열을 사용하여 수행할 수 있습니다.


관련 정보

Apache Kafka ACL

Scram 암호

AWS 공식
AWS 공식업데이트됨 2년 전