4.7. 권한 부여


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

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

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

4.7.1. 간단한 ACL 승인자

AclAuthorizer 를 포함한 승인자 플러그인은 authorizer.class.name 속성을 통해 활성화됩니다.

authorizer.class.name=kafka.security.auth.AclAuthorizer
Copy to Clipboard Toggle word wrap

선택한 승인자에게 정규화된 이름이 필요합니다. AclAuthorizer 의 경우 정규화된 이름은 kafka.security.auth.AclAuthorizer 입니다.

4.7.1.1. ACL 규칙

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

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

호스트 H에서 Kafka 리소스 R 에서 주체 P 가 허용 / 거부된 작업 O

예를 들어, 사용자를 위해 규칙을 설정할 수 있습니다.

존은 host 127.0.0.1의 주제 주석 수 있습니다.

host는 존스가 연결 중인 시스템의 IP 주소입니다.

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

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

ACL 규칙이 없는 경우

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

4.7.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 주체를 빌드하는 방법을 구성할 수 있습니다.

4.7.1.3. 사용자 인증

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

인증 방법에 대한 자세한 내용은 암호화 및 인증을 참조하십시오.

4.7.1.4. 슈퍼유저

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

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

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

super.users=User:admin,User:operator
Copy to Clipboard Toggle word wrap

4.7.1.5. 복제본 브로커 인증

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

4.7.1.6. 지원되는 리소스

이러한 유형의 리소스에 Kafka ACL을 적용할 수 있습니다.

  • 주제
  • 소비자 그룹
  • 클러스터
  • TransactionId
  • DelegationToken

4.7.1.7. 지원되는 작업

AclAuthorizer 는 리소스에 대한 작업을 인증합니다.

다음 표에 X 가 있는 필드는 각 리소스에 대해 지원되는 작업을 나타냅니다.

Expand
표 4.1. 리소스에 대해 지원되는 작업
 주제소비자 그룹Cluster

읽기

X

X

 

쓰기

X

  

개발

  

X

delete

X

  

변경

X

  

describe

X

X

X

ClusterAction

  

X

All

X

X

X

4.7.1.8. ACL 관리 옵션

ACL 규칙은 Kafka 배포 패키지의 일부로 제공되는 bin/kafka-acls.sh 유틸리티를 사용하여 관리됩니다.

kafka-acls.sh 매개변수 옵션을 사용하여 ACL 규칙을 추가, 나열 및 제거하고 기타 기능을 수행합니다.

매개 변수에는 --add 와 같은 이중-하이프 규칙(예: --add )이 필요합니다.

Expand
옵션유형설명기본

add

동작

ACL 규칙을 추가합니다.

 

제거

동작

ACL 규칙을 제거합니다.

 

list

동작

ACL 규칙을 나열합니다.

 

승인자

동작

승인자의 정규화된 클래스 이름입니다.

kafka.security.auth.AclAuthorizer

authorizer-properties

설정

초기화를 위해 승인자에게 전달된 키/값 쌍입니다.

AclAuthorizer 의 경우 예제 값은 zookeeper.connect=zoo1.my-domain.com:2181 입니다.

 

bootstrap-server

리소스

Kafka 클러스터에 연결할 호스트/포트 쌍입니다.

이 옵션 또는 승인자 옵션을 둘 다 사용하는 것이 아닙니다.

command-config

리소스

bootstrap-server 매개변수와 함께 사용되는 Admin Client에 전달할 구성 속성 파일입니다.

 

cluster

리소스

클러스터를 ACL 리소스로 지정합니다.

 

topic

리소스

주제 이름을 ACL 리소스로 지정합니다.

와일드카드로 사용되는 별표(*)는 모든 주제로 변환됩니다.

단일 명령은 여러 --topic 옵션을 지정할 수 있습니다.

 

group

리소스

소비자 그룹 이름을 ACL 리소스로 지정합니다.

단일 명령은 여러 --group 옵션을 지정할 수 있습니다.

 

transactional-id

리소스

트랜잭션 ID를 ACL 리소스로 지정합니다.

트랜잭션 전달은 생산자가 여러 파티션으로 전송하거나 해당 파티션을 성공적으로 전달하지 않아야 함을 의미합니다.

와일드카드로 사용되는 별표(*)는 모든 ID 로 변환됩니다.

 

delegation-token

리소스

위임 토큰을 ACL 리소스로 지정합니다.

와일드카드로 사용되는 별표(*)는 모든 토큰으로 변환됩니다.

 

resource-pattern-type

설정

add 매개변수 또는 list 또는 remove 매개변수에 대한 리소스 패턴의 유형을 지정합니다.

리소스 이름에 대한 리소스 패턴 유형으로 리터럴 또는 접두사 를 사용합니다.

리소스 패턴 필터 값 또는 특정 패턴 유형 필터로 일부 또는 일치 를 사용합니다.

리터럴

allow-principal

주체

주체가 허용 ACL 규칙에 추가되었습니다.

단일 명령은 --allow-principal 옵션을 여러 개 지정할 수 있습니다.

 

deny-principal

주체

거부 ACL 규칙에 보안 주체가 추가되었습니다.

단일 명령은 --deny-principal 옵션을 여러 개 지정할 수 있습니다.

 

주체

주체

principal에 대한 ACL 목록을 반환하기 위해 list 매개변수와 함께 사용되는 주체 이름입니다.

단일 명령은 --principal 여러 옵션을 지정할 수 있습니다.

 

allow-host

호스트

--allow-principal 에 나열된 보안 주체에 액세스할 수 있는 IP 주소입니다.

호스트 이름 또는 CIDR 범위는 지원되지 않습니다.

--allow-principal 이 지정된 경우 기본값은 "모든 호스트"를 의미합니다.

deny-host

호스트

--deny-principal 에 나열된 주체에 대한 액세스를 거부하는 IP 주소입니다.

호스트 이름 또는 CIDR 범위는 지원되지 않습니다.

--deny-principal 이 지정된 경우 기본값은 * 즉 "모든 호스트"입니다.

작업

작업

작업을 허용하거나 거부합니다.

단일 명령은 단일 명령에서 multipleMultiple --operation 옵션을 지정할 수 있습니다.

All

생산자

바로 가기

메시지 프로듀서(WRITE 및 DESCRIBE, 클러스터의 CREATE)에 필요한 모든 작업을 허용하거나 거부하는 바로 가기입니다.

 

소비자

바로 가기

메시지 소비자(READ 및 DESCRIBE on topic, READ on consumer group)에 필요한 모든 작업을 허용하거나 거부하는 바로 가기입니다.

 

idempotent

바로 가기

--producer 매개변수와 함께 사용할 때 idempotence를 활성화하는 바로 가기로, 메시지는 정확히 한 번 파티션으로 전달됩니다.

Idepmotence는 생산자가 특정 트랜잭션 ID를 기반으로 메시지를 보낼 수 있는 권한이 부여된 경우 자동으로 활성화됩니다.

 

force

바로 가기

모든 쿼리를 수락하고 묻지 않는 바로 가기입니다.

 

4.7.2. 권한 부여 활성화

다음 절차에서는 Kafka 브로커에서 승인을 위해 AclAuthorizer 플러그인을 활성화하는 방법을 설명합니다.

프로세스

  1. AclAuthorizer 를 사용하도록 /opt/kafka/config/server.properties Kafka 구성 파일을 편집합니다.

    authorizer.class.name=kafka.security.auth.AclAuthorizer
    Copy to Clipboard Toggle word wrap
  2. Kafka 브로커를 시작합니다.

추가 리소스

4.7.3. ACL 규칙 추가

AclAuthorizer 는 사용자가 수행할 수 있고 수행할 수 없는 규칙 집합을 정의하는 ACL(액세스 제어 목록)을 사용합니다.

다음 절차에서는 Kafka 브로커에서 AclAuthorizer 플러그인을 사용할 때 ACL 규칙을 추가하는 방법을 설명합니다.

규칙은 kafka-acls.sh 유틸리티를 사용하여 추가되고 Zoo Cryostat에 저장됩니다.

프로세스

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

    예:

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

      bin/kafka-acls.sh --authorizer-properties zookeeper.connect=zoo1.my-domain.com:2181 --add --operation Read --topic myTopic --allow-principal User:user1 --allow-principal User:user2
      
      bin/kafka-acls.sh --authorizer-properties zookeeper.connect=zoo1.my-domain.com:2181 --add --operation Describe --topic myTopic --allow-principal User:user1 --allow-principal User:user2
      
      bin/kafka-acls.sh --authorizer-properties zookeeper.connect=zoo1.my-domain.com:2181 --add --operation Read --operation Describe --group MyConsumerGroup --allow-principal User:user1 --allow-principal User:user2
      Copy to Clipboard Toggle word wrap
    • user1 액세스를 거부하여 IP 주소 127.0.0.1 에서 myTopic 을 읽습니다.

      bin/kafka-acls.sh --authorizer-properties zookeeper.connect=zoo1.my-domain.com:2181 --add --operation Describe --operation Read --topic myTopic --group MyConsumerGroup --deny-principal User:user1 --deny-host 127.0.0.1
      Copy to Clipboard Toggle word wrap
    • MyConsumerGroup 을 사용하여 myTopic 의 소비자로 user1 을 추가합니다.

      bin/kafka-acls.sh --authorizer-properties zookeeper.connect=zoo1.my-domain.com:2181 --add --consumer --topic myTopic --group MyConsumerGroup --allow-principal User:user1
      Copy to Clipboard Toggle word wrap

추가 리소스

4.7.4. ACL 규칙 나열

다음 절차에서는 Kafka 브로커에서 AclAuthorizer 플러그인을 사용할 때 기존 ACL 규칙을 나열하는 방법을 설명합니다.

규칙은 kafka-acls.sh 유틸리티를 사용하여 나열됩니다.

프로세스

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

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

    $ bin/kafka-acls.sh --authorizer-properties zookeeper.connect=zoo1.my-domain.com:2181 --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
    Copy to Clipboard Toggle word wrap

추가 리소스

4.7.5. ACL 규칙 제거

다음 절차에서는 Kafka 브로커에서 AclAuthorizer 플러그인을 사용할 때 ACL 규칙을 제거하는 방법을 설명합니다.

규칙은 kafka-acls.sh 유틸리티를 사용하여 제거됩니다.

프로세스

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

    예:

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

    bin/kafka-acls.sh --authorizer-properties zookeeper.connect=zoo1.my-domain.com:2181 --remove --operation Read --topic myTopic --allow-principal User:user1 --allow-principal User:user2
    
    bin/kafka-acls.sh --authorizer-properties zookeeper.connect=zoo1.my-domain.com:2181 --remove --operation Describe --topic myTopic --allow-principal User:user1 --allow-principal User:user2
    
    bin/kafka-acls.sh --authorizer-properties zookeeper.connect=zoo1.my-domain.com:2181 --remove --operation Read --operation Describe --group MyConsumerGroup --allow-principal User:user1 --allow-principal User:user2
    Copy to Clipboard Toggle word wrap
  • MyConsumerGroup 을 사용하여 myTopic 의 소비자로 user1 을 추가하는 ACL을 제거합니다.

    bin/kafka-acls.sh --authorizer-properties zookeeper.connect=zoo1.my-domain.com:2181 --remove --consumer --topic myTopic --group MyConsumerGroup --allow-principal User:user1
    Copy to Clipboard Toggle word wrap
  • IP 주소 호스트 127.0.0.1 에서 myTopic 읽기를 위해 user1 액세스를 거부하는 ACL을 제거합니다.

    bin/kafka-acls.sh --authorizer-properties zookeeper.connect=zoo1.my-domain.com:2181 --remove --operation Describe --operation Read --topic myTopic --group MyConsumerGroup --deny-principal User:user1 --deny-host 127.0.0.1
    Copy to Clipboard Toggle word wrap

추가 리소스

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2026 Red Hat
맨 위로 이동