Basic Auth 접근 제어

Basic Auth 접근 제어 (Basic Auth Access Control)

Apache Pinot에서 정적 HTTP Basic Authentication과 권한 부여를 설정하는 방법을 안내해요.

출처: 문서

본문

설정 (Setup)

BasicAuthAccessControlFactory를 사용해 컨트롤러와 브로커에 HTTP Basic Auth 기반 인증·권한 부여를 구성할 수 있어요. 자격 증명과 권한이 각 컴포넌트의 properties 파일에 선언돼요. 변경하려면 구성 갱신과 롤링 재시작이 필요해요.

컨트롤러 구성 (Controller setup)

컨트롤러의 관리(admin) API에 대한 인증을 활성화하려면 컨트롤러 구성 파일에 접근 제어 팩토리와 보안 주체(principal) 자격 증명을 설정하세요:

controller.admin.access.control.factory.class=org.apache.pinot.controller.api.access.BasicAuthAccessControlFactory
controller.admin.access.control.principals=<principal_1>,<principal_2>
controller.admin.access.control.principals.<principal_1>.password=<password_1>
controller.admin.access.control.principals.<principal_2>.password=<password_2>

각 보안 주체에 대해 접근할 수 있는 테이블과 테이블별 권한(ACL)을 지정할 수 있어요:

controller.admin.access.control.principals.<principal>.tables=<table_1>,<table_2>
controller.admin.access.control.principals.<principal>.<table>.permissions=READ

브로커 구성 (Broker setup)

들어오는 SQL 쿼리를 인증하려면 브로커 구성 파일에 팩토리와 자격 증명을 설정하세요:

pinot.broker.access.control.class=org.apache.pinot.broker.broker.access.control.BasicAuthAccessControlFactory
pinot.broker.access.control.principals=<principal>
pinot.broker.access.control.principals.<principal>.password=<password>
pinot.broker.access.control.principals.<principal>.tables=<table>

행 수준 보안(RLS)을 사용한다면 보안 주체별·테이블별로 WHERE 절 조건을 지정할 수 있어요:

pinot.broker.access.control.principals.<principal>.<table>.rls=<where_clause>

서버·미니언의 서비스 토큰 (Server / Minion service tokens)

server와 minion 같은 컴포넌트는 이 메커니즘을 통해 컨트롤러와 브로커에 스스로를 인증해야 해요. 각 컴포넌트의 구성 파일에 접근 제어 클래스와 자격 증명을 설정하세요:

pinot.server.segment.uploader.auth.token=<service_token>
pinot.server.segment.uploader.auth.user=<service_account>

컴포넌트 간 인증은 더 낮은 네트워킹 레이어의 클러스터 내부 인증을 보장하는 양방향 TLS/SSL 사용과는 독립적으로(그리고 함께) 구성할 수 있어요.

사용자 관리 (User management)

자격 증명은 구성 파일에 정적으로 선언되므로, 사용자를 추가·수정하려면 구성 파일을 갱신하고 롤링 재시작해야 해요. 동적 사용자 관리가 필요하면 ZooKeeper 관리 방식인 ZkBasicAuthAccessControl을 대신 고려하세요.

더 알아보기 (Learn more)