6.9. OPA 정책 기반 권한 부여 사용


OPA(Open Policy Agent)는 오픈 소스 정책 엔진입니다. OPA를 Apache Kafka의 Streams와 통합하여 Kafka 브로커에서 클라이언트 작업을 허용하는 정책 기반 권한 부여 메커니즘 역할을 할 수 있습니다.

클라이언트에서 요청이 생성되면 OPA는 Kafka 액세스에 대해 정의된 정책에 대한 요청을 평가한 다음 요청을 허용하거나 거부합니다.

참고

Red Hat은 OPA 서버를 지원하지 않습니다.

6.9.1. OPA 정책 정의

OPA와 Apache Kafka용 Streams를 통합하기 전에 세분화된 액세스 제어를 제공하기 위해 정책을 정의하는 방법을 고려하십시오.

Kafka 클러스터, 소비자 그룹 및 주제에 대한 액세스 제어를 정의할 수 있습니다. 예를 들어 생산자 클라이언트에서 특정 브로커 주제로 쓰기 액세스를 허용하는 권한 부여 정책을 정의할 수 있습니다.

이 경우 정책은 다음을 지정할 수 있습니다.

  • 생산자 클라이언트와 연결된 사용자 주체호스트 주소
  • 클라이언트에 허용되는 작업
  • 정책이 적용되는 리소스유형 (주체 ) 및 리소스 이름

허용 및 거부 결정은 정책에 기록되며, 제공되는 요청 및 클라이언트 식별 데이터에 따라 응답이 제공됩니다.

이 예제에서는 생산자 클라이언트가 해당 항목에 쓸 수 있도록 정책을 충족해야 합니다.

6.9.2. OPA에 연결

Kafka가 OPA 정책 엔진에 액세스하여 액세스 제어 정책을 쿼리할 수 있도록 Kafka server.properties 파일에서 사용자 지정 OPA 승인자 플러그인(kafka-authorizer-opa-VERSION.jar)을 구성합니다.

클라이언트에서 요청을 수행하면 지정된 URL 주소와 정의된 정책의 이름이어야 하는 REST 끝점을 사용하여 플러그인에서 OPA 정책 엔진을 쿼리합니다.

플러그인은 클라이언트 요청(사용자 주체, 작업 및 리소스)의 세부 정보를 JSON 형식으로 제공하여 정책에 대해 확인합니다. 세부 정보에는 클라이언트의 고유 ID가 포함됩니다. 예를 들어 TLS 인증이 사용되는 경우 클라이언트 인증서와 고유 이름을 사용합니다.

OPA는 데이터를 사용하여 요청을 허용하거나 거부하기 위해 플러그인에 true 또는 false - 응답을 제공합니다.

6.9.3. OPA 권한 부여 지원 구성

다음 절차에서는 OPA 인증을 사용하도록 Kafka 브로커를 구성하는 방법을 설명합니다.

사전 준비 사항

필요한 액세스 또는 특정 사용자에 대해 제한하려는 경우를 고려하십시오. 사용자와 Kafka 리소스 를 결합하여 OPA 정책을 정의할 수 있습니다.

LDAP 데이터 소스에서 사용자 정보를 로드하도록 OPA를 설정할 수 있습니다.

참고

Super 사용자는 Kafka 브로커에서 구현된 권한 부여에 관계없이 항상 Kafka 브로커에 대한 무제한 액세스 권한을 갖습니다.

사전 요구 사항

프로세스

  1. Kafka 브로커에서 작업을 수행하기 위해 클라이언트 요청을 승인하는 데 필요한 OPA 정책을 작성합니다.

    OPA 정책 정의를 참조하십시오.

    이제 OPA를 사용하도록 Kafka 브로커를 구성합니다.

  2. Kafka에 대한 OPA 승인자 플러그인을 설치합니다.

    OPA에 연결을 참조하십시오.

    플러그인 파일이 Kafka 클래스 경로에 포함되어 있는지 확인합니다.

  3. Kafka server.properties 구성 파일에 다음을 추가하여 OPA 플러그인을 활성화합니다.

    authorizer.class.name: com.bisnode.kafka.authorization.OpaAuthorizer
  4. Kafka 브로커의 server.properties 에 구성을 추가하여 OPA 정책 엔진 및 정책에 액세스합니다.

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

    opa.authorizer.url=https://OPA-ADDRESS/allow 1
    opa.authorizer.allow.on.error=false 2
    opa.authorizer.cache.initial.capacity=50000 3
    opa.authorizer.cache.maximum.size=50000 4
    opa.authorizer.cache.expire.after.seconds=600000 5
    super.users=User:alice;User:bob 6
    1
    (필수) 승인자 플러그인이 쿼리할 정책의 OAuth 2.0 토큰 끝점 URL입니다. 이 예에서는 정책을 allow 이라고 합니다.
    2
    승인자 플러그인이 OPA 정책 엔진과 연결하지 못하는 경우 클라이언트가 기본적으로 액세스가 허용되거나 거부되는지 여부를 지정하는 플래그입니다.
    3
    로컬 캐시의 초기 용량(바이트)입니다. 플러그인이 모든 요청에 대해 OPA 정책 엔진을 쿼리할 필요가 없도록 캐시가 사용됩니다.
    4
    로컬 캐시의 최대 용량(바이트)입니다.
    5
    OPA 정책 엔진에서 다시 로드하여 로컬 캐시를 새로 고치는 시간(밀리초)입니다.
    6
    Open Policy Agent 정책을 쿼리하지 않고 항상 허용되도록 슈퍼 사용자로 취급되는 사용자 주체 목록입니다.

    인증 및 권한 부여 옵션에 대한 정보는 Open Policy Agent 웹 사이트를 참조하십시오.

  5. 및 올바른 권한이 없는 클라이언트를 사용하여 Kafka 브로커에 액세스하여 구성된 권한을 확인합니다.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.