6.4. 권한 부여


Kafka 브로커의 권한 부여는 승인자 플러그인을 사용하여 구현됩니다.

이 섹션에서는 Kafka와 함께 제공된 StandardAuthorizer 플러그인을 사용하는 방법을 설명합니다.

또는 고유한 권한 부여 플러그인을 사용할 수 있습니다. 예를 들어 OAuth 2.0 토큰 기반 인증을 사용하는 경우 OAuth 2.0 인증을 사용할 수 있습니다.

6.4.1. ACL 승인자 활성화

Kafka 구성 속성 파일을 편집하여 ACL 승인자를 추가합니다. authorizer.class.name 속성에 정규화된 이름을 지정하여 승인자를 활성화합니다.

승인자 활성화

authorizer.class.name=org.apache.kafka.metadata.authorizer.StandardAuthorizer

6.4.1.1. ACL 규칙

ACL 승인자는 ACL 규칙을 사용하여 Kafka 브로커에 대한 액세스를 관리합니다.

ACL 규칙은 다음 형식으로 정의됩니다.

기본 P 는 호스트 H의 <kafka_resource> R 에서 / denied <operation> O 입니다.

예를 들어, 사용자 존이 호스트 127.0.0.1 의 주제 주석 수 있도록 규칙이 설정될 수 있습니다. host는 존스가 연결 중인 시스템의 IP 주소입니다.

대부분의 경우 사용자는 생산자 또는 소비자 애플리케이션입니다.

Consumer01 은 호스트 127.0.0.1에서 소비자 그룹 계정에 수 있습니다.

지정된 리소스에 ACL 규칙이 없으면 모든 작업이 거부됩니다. Kafka 구성 파일에서 allow.everyone.if.no.acl.found 속성을 true 로 설정하여 이 동작을 변경할 수 있습니다.

6.4.1.2. 보안 주체

보안 주체 는 사용자의 ID를 나타냅니다. ID 형식은 클라이언트가 Kafka에 연결하는 데 사용하는 인증 메커니즘에 따라 달라집니다.

  • 인증 없이 연결할 때 사용자:ANONYMOUS.
  • user:<username >은 PLAIN 또는 SCRAM과 같은 간단한 인증 메커니즘을 사용하여 연결된 경우입니다.

    예: User:admin 또는 User:user1.

  • TLS 클라이언트 인증을 사용하여 연결된 경우 user :<DistinguishedName >입니다.

    예를 들면 User:CN=user1,O=MyCompany,L=Prague,C=CZ 입니다.

  • User:<Kerberos username& gt; when connected using Kerberos.

DistinguishedName 은 클라이언트 인증서와 고유 이름입니다.

Kerberos 사용자 이름은 Kerberos 주체의 기본 부분이며 Kerberos를 사용하여 연결할 때 기본적으로 사용됩니다. sasl.kerberos.principal.to.local.rules 속성을 사용하여 Kerberos 주체에서 Kafka 주체를 빌드하는 방법을 구성할 수 있습니다.

6.4.1.3. 사용자 인증

승인을 사용하려면 클라이언트가 인증을 활성화하고 사용해야 합니다. 그렇지 않으면 모든 연결에 주체 User:ANONYMOUS 가 있습니다.

인증 방법에 대한 자세한 내용은 6.3절. “인증” 을 참조하십시오.

6.4.1.4. 슈퍼유저

슈퍼유저는 ACL 규칙에 관계없이 모든 작업을 수행할 수 있습니다.

슈퍼 사용자는 super.users 속성을 사용하여 Kafka 구성 파일에 정의되어 있습니다.

예를 들면 다음과 같습니다.

super.users=User:admin,User:operator

6.4.1.5. 복제본 브로커 인증

권한 부여가 활성화되면 모든 리스너 및 모든 연결에 적용됩니다. 여기에는 브로커 간 데이터 복제에 사용되는 inter-broker 연결이 포함됩니다. 따라서 권한 부여를 활성화하는 경우 브랜드 간 연결에 인증을 사용하고 브로커에서 사용하는 사용자에게 충분한 권한을 부여해야 합니다. 예를 들어 브로커 간 인증이 kafka-broker 사용자를 사용하는 경우 슈퍼 사용자 구성에 사용자 이름 super.users=User:kafka-broker 가 포함되어야 합니다.

참고

ACL을 사용하여 제어할 수 있는 Kafka 리소스에 대한 자세한 내용은 Apache Kafka 설명서 를 참조하십시오.

6.4.2. ACL 규칙 추가

ACL 승인자를 사용하여 ACL(액세스 제어 목록)을 기반으로 Kafka에 대한 액세스를 제어하는 경우 kafka-acls.sh 유틸리티를 사용하여 새 ACL 규칙을 추가할 수 있습니다.

kafka-acls.sh 매개변수 옵션을 사용하여 ACL 규칙을 추가, 나열 및 제거하고 기타 기능을 수행합니다. 매개 변수에는 --add 와 같은 이중-하이프 규칙(예: --add )이 필요합니다.

사전 요구 사항

프로세스

  • --add 옵션을 사용하여 kafka-acls.sh 를 실행합니다.

    예:

  • MyConsumerGroup 소비자 그룹을 사용하여 user1user2 액세스가 myTopic 에서 읽을 수 있도록 허용합니다.

    opt/kafka/bin/kafka-acls.sh --bootstrap-server localhost:9092 --add --operation Read --topic myTopic --allow-principal User:user1 --allow-principal User:user2
    
    opt/kafka/bin/kafka-acls.sh --bootstrap-server localhost:9092 --add --operation Describe --topic myTopic --allow-principal User:user1 --allow-principal User:user2
    
    opt/kafka/bin/kafka-acls.sh --bootstrap-server localhost:9092 --add --operation Read --operation Describe --group MyConsumerGroup --allow-principal User:user1 --allow-principal User:user2
  • user1 액세스를 거부하여 IP 주소 127.0.0.1 에서 myTopic 을 읽습니다.

    opt/kafka/bin/kafka-acls.sh --bootstrap-server localhost:9092 --add --operation Describe --operation Read --topic myTopic --group MyConsumerGroup --deny-principal User:user1 --deny-host 127.0.0.1
  • MyConsumerGroup 을 사용하여 myTopic 의 소비자로 user1 을 추가합니다.

    opt/kafka/bin/kafka-acls.sh --bootstrap-server localhost:9092 --add --consumer --topic myTopic --group MyConsumerGroup --allow-principal User:user1

6.4.3. ACL 규칙 나열

ACL 승인자를 사용하여 ACL(액세스 제어 목록)을 기반으로 Kafka에 대한 액세스를 제어하는 경우 kafka-acls.sh 유틸리티를 사용하여 기존 ACL 규칙을 나열할 수 있습니다.

사전 요구 사항

프로세스

  • --list 옵션을 사용하여 kafka-acls.sh 를 실행합니다.

    예를 들면 다음과 같습니다.

    opt/kafka/bin/kafka-acls.sh --bootstrap-server localhost:9092 --list --topic myTopic
    
    Current ACLs for resource `Topic:myTopic`:
    
    User:user1 has Allow permission for operations: Read from hosts: *
    User:user2 has Allow permission for operations: Read from hosts: *
    User:user2 has Deny permission for operations: Read from hosts: 127.0.0.1
    User:user1 has Allow permission for operations: Describe from hosts: *
    User:user2 has Allow permission for operations: Describe from hosts: *
    User:user2 has Deny permission for operations: Describe from hosts: 127.0.0.1

6.4.4. ACL 규칙 제거

ACL 승인자를 사용하여 ACL(액세스 제어 목록)을 기반으로 Kafka에 대한 액세스를 제어하는 경우 kafka-acls.sh 유틸리티를 사용하여 기존 ACL 규칙을 제거할 수 있습니다.

사전 요구 사항

프로세스

  • --remove 옵션을 사용하여 kafka-acls.sh 를 실행합니다.

    예:

  • MyConsumerGroup 소비자 그룹을 사용하여 myTopic 에서 Allow user1user2 액세스를 읽을 수 있도록 ACL을 제거합니다.

    opt/kafka/bin/kafka-acls.sh --bootstrap-server localhost:9092 --remove --operation Read --topic myTopic --allow-principal User:user1 --allow-principal User:user2
    
    opt/kafka/bin/kafka-acls.sh --bootstrap-server localhost:9092 --remove --operation Describe --topic myTopic --allow-principal User:user1 --allow-principal User:user2
    
    opt/kafka/bin/kafka-acls.sh --bootstrap-server localhost:9092 --remove --operation Read --operation Describe --group MyConsumerGroup --allow-principal User:user1 --allow-principal User:user2
  • MyConsumerGroup 을 사용하여 myTopic 의 소비자로 user1 을 추가하는 ACL을 제거합니다.

    opt/kafka/bin/kafka-acls.sh --bootstrap-server localhost:9092 --remove --consumer --topic myTopic --group MyConsumerGroup --allow-principal User:user1
  • IP 주소 호스트 127.0.0.1 에서 myTopic 읽기를 위해 user1 액세스를 거부하는 ACL을 제거합니다.

    opt/kafka/bin/kafka-acls.sh --bootstrap-server localhost:9092 --remove --operation Describe --operation Read --topic myTopic --group MyConsumerGroup --deny-principal User:user1 --deny-host 127.0.0.1
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.