Skip to Content
Data EngineeringSentry에서 Hive 역할과 그룹 권한 설정하기
📊 Data Engineering2018년 7월 27일

Sentry에서 Hive 역할과 그룹 권한 설정하기

#hive#sentry#security#sql#data-engineering#flamingo

Sentry가 적용된 Hive 환경에서 사용했던 권한 SQL 메모입니다. 역할에 권한을 부여하고, 그 역할을 그룹에 연결하는 순서로 정리했습니다.

Apache Sentry는 현재 종료된 프로젝트 입니다. 이 글은 과거 CDH·Sentry 환경의 설정을 읽고 유지보수할 때 참고하기 위한 기록입니다. DB와 그룹 이름, HDFS 경로는 예시입니다.

역할 생성과 DB 권한

sql
CREATE ROLE analyst_role; GRANT ALL ON DATABASE analyst1 TO ROLE analyst_role; GRANT SELECT ON DATABASE reporting TO ROLE analyst_role;

같은 역할이라도 DB에 따라 권한 범위를 다르게 줄 수 있습니다. 위 예시는 analyst1에는 전체 권한을, reporting에는 조회 권한을 주는 구성입니다.

외부 데이터 경로를 사용한다면 URI 권한도 별도로 확인합니다.

sql
GRANT ALL ON URI 'hdfs://example-nameservice/landing/analyst1' TO ROLE analyst_role;

테이블과 컬럼 권한

테이블 전체를 읽는 권한은 다음과 같습니다.

sql
GRANT SELECT ON TABLE reporting.summary TO ROLE analyst_role;

특정 컬럼만 읽게 하려는 경우에는 별도 역할을 예로 들 수 있습니다. 컬럼 권한을 지원하는 버전인지도 확인해야 합니다.

sql
CREATE ROLE limited_reader; GRANT SELECT(name, email) ON TABLE reporting.customers TO ROLE limited_reader;

이미 DB나 테이블 전체의 조회 권한을 받은 역할에 컬럼 권한을 추가해도 기존 권한이 줄어들지는 않습니다. 해당 사용자가 다른 그룹과 역할을 통해 받은 권한도 함께 확인해야 합니다.

역할을 그룹에 연결

sql
GRANT ROLE analyst_role TO GROUP analyst; GRANT ROLE limited_reader TO GROUP report_readers;

SQL에 그룹 이름을 적는 것만으로 사용자의 그룹 소속이 바뀌는 것은 아닙니다. 실제 인증 사용자와 Hadoop에서 사용하는 그룹 매핑이 맞아야 해당 권한으로 접근할 수 있습니다.

서버 범위 권한

원문에는 서버 전체 권한을 주는 구문도 함께 남아 있습니다. 조회용 역할과는 분리해서 봐야 할 넓은 범위의 권한입니다.

sql
CREATE ROLE admin_role; GRANT ALL ON SERVER server1 TO ROLE admin_role; GRANT ROLE admin_role TO GROUP admin;

실제 서버 이름은 Sentry 설정에 맞춰야 합니다. 명령 실행 후에는 사용할 계정으로 필요한 조회가 되는지와 의도보다 넓게 허용되는 곳은 없는지 함께 확인해야 합니다.

참고 자료

Last updated on