Apache Kafka ACL - Amazon Managed Streaming for Apache Kafka

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Apache Kafka ACL

Apache Kafka에는 플러그 가능한 권한 부여자가 있으며 권한 부여자 구현이 함께 제공됩니다. out-of-box Amazon MSK는 브로커의 server.properties 파일에서 이 권한 부여자를 활성화합니다.

Apache Kafka ACL의 형식은 “주 P는 RP와 일치하는 모든 리소스 R에 대한 호스트 H의 작업 [허용/거부] 입니다.” ResourcePattern RP가 특정 리소스 R과 일치하지 않으면 R에 연결된 ACL이 없으므로 수퍼유저 이외의 누구도 R에 액세스할 수 없습니다. 이 Apache Kafka 동작을 변경하려면 속성 allow.everyone.if.no.acl.found를 true로 설정합니다. Amazon MSK는 이 속성을 기본적으로 true로 설정합니다. 즉, Amazon MSK 클러스터를 사용할 때 리소스에 ACL을 명시적으로 설정하지 않으면 모든 보안 주체가 이 리소스에 액세스할 수 있습니다. 리소스에 대해 ACL을 활성화하면 권한이 부여된 보안 주체만 ACL에 액세스할 수 있습니다. TLS 상호 인증을 사용하여 주제에 대한 액세스를 제한하고 클라이언트에 권한을 부여하려면 Apache Kafka 권한 부여자 CLI를 사용하여 ACL을 추가합니다. ACL 추가, 제거 및 나열 방법에 대한 자세한 내용은 Kafka 인증 명령줄 인터페이스를 참조하십시오.

클라이언트 외에도 브로커가 기본 파티션에서 메시지를 복제할 수 있도록 모든 브로커에게도 주제에 대한 액세스 권한을 부여해야 합니다. 브로커가 주제에 액세스할 수 없는 경우 주제에 대한 복제가 실패합니다.

주제에 대한 읽기 및 쓰기 액세스 권한을 추가하거나 제거하려면
  1. 브로커가 ACL이 있는 모든 주제에서 읽을 수 있도록 ACL 테이블에 브로커를 추가합니다. 브로커에게 주제에 대한 읽기 액세스 권한을 부여하려면 MSK 클러스터와 통신할 수 있는 클라이언트 머신에서 다음 명령을 실행합니다.

    Distinguished-Name을 해당 클러스터의 부트스트랩 브로커의 DNS로 바꾼 다음 이 고유 이름의 첫 번째 마침표 앞에 있는 문자열을 별표(*)로 바꿉니다. 예를 들어, 클러스터의 부트스트랩 브로커 중 하나에 DNS b-6.mytestcluster.67281x.c4.kafka.us-east-1.amazonaws.com이 있는 경우 다음 명령의 Distinguished-Name*.mytestcluster.67281x.c4.kafka.us-east-1.amazonaws.com으로 바꿉니다. 부트스트랩 브로커를 가져오는 방법에 대한 자세한 내용은 Amazon MSK 클러스터를 위한 부트스트랩 브로커 가져오기 단원을 참조하십시오.

    <path-to-your-kafka-installation>/bin/kafka-acls.sh --authorizer-properties --bootstrap-server BootstrapServerString --add --allow-principal "User:CN=Distinguished-Name" --operation Read --group=* --topic Topic-Name
  2. 주제에 대한 읽기 액세스 권한을 부여하려면 클라이언트 머신에서 다음 명령을 실행합니다. 상호 TLS 인증을 사용하는 경우 프라이빗 키를 생성할 때 사용한 것과 동일한 Distinguished-Name을 사용합니다.

    <path-to-your-kafka-installation>/bin/kafka-acls.sh --authorizer-properties --bootstrap-server BootstrapServerString --add --allow-principal "User:CN=Distinguished-Name" --operation Read --group=* --topic Topic-Name

    읽기 액세스 권한을 제거하려면 --add--remove로 바꾸어 같은 명령을 실행하면 됩니다.

  3. 주제에 대한 쓰기 액세스 권한을 부여하려면 클라이언트 머신에서 다음 명령을 실행합니다. 상호 TLS 인증을 사용하는 경우 프라이빗 키를 생성할 때 사용한 것과 동일한 Distinguished-Name을 사용합니다.

    <path-to-your-kafka-installation>/bin/kafka-acls.sh --authorizer-properties --bootstrap-server BootstrapServerString --add --allow-principal "User:CN=Distinguished-Name" --operation Write --topic Topic-Name

    쓰기 액세스 권한을 제거하려면 --add--remove로 바꾸어 같은 명령을 실행하면 됩니다.