Metastore 서버의 스토리지 기반 인가
Metastore 서버의 스토리지 기반 인가
스토리지 기반 인가(storage based authorization)를 사용하는 metastore 서버 보안 기능은 Hive 0.10 릴리스에 추가됐어요. 이 기능은 원래 HCatalog에 도입되었습니다. HIVE-3705가 Hive 0.10.0에 metastore 서버 보안을 추가했어요.
출처: 문서
본문
- metastore 서버의 스토리지 기반 인가에 대한 추가 정보는 HCatalog 문서 Storage Based Authorization을 참고하세요.
- Hive 인가 모델과 다른 보안 옵션의 개요는 Authorization 문서를 참고하세요.
Metastore 서버 보안의 필요성
여러 클라이언트가 MySQL 같은 백킹 데이터베이스의 같은 metastore에 접근할 때, 데이터베이스 연결 자격증명이 hive-site.xml 구성 파일에 노출될 수 있어요. 악의적이거나 무능한 사용자가, 하부 데이터가 HDFS 접근 제어로 보호된다 해도 메타데이터에 심각한 피해를 줄 수 있습니다.
또한 Hive metastore 서버가 Thrift로 클라이언트와 통신하고 메타데이터 저장·영속화를 위해 백킹 데이터베이스를 가질 때, 클라이언트 쪽에서 하는 인증·인가는 metastore 쪽 보안을 보장할 수 없어요. 메타데이터 보안을 제공하기 위해 Hive 0.10 릴리스는 metastore에 인가 기능을 추가했습니다. (HIVE-3705 참고)
스토리지 기반 인가(Storage Based Authorization)
metastore 서버 보안을 스토리지 기반 인가로 구성하면, 서로 다른 메타데이터 객체에 대응하는 폴더의 파일시스템 권한을 인가 정책의 진실 공급원(source of truth)으로 사용해요. metastore에서 스토리지 기반 인가를 사용하는 걸 권장합니다.
자세한 내용은 HCatalog Storage Based Authorization 문서를 보세요.
Hive 0.14부터 스토리지 기반 인가는 데이터베이스와 테이블에 대한 읽기 권한을 인가해요. get_database API 호출은 데이터베이스 디렉터리 읽기 권한이 필요해요. 테이블 정보를 가져오는 get_table_* 호출과 테이블 파티션을 나열하는 get_partition_* 호출은 테이블 디렉터리 읽기 권한이 필요합니다. 이는 스토리지 기반 인가에서 기본적으로 활성화돼요. 구성 섹션의 hive.security.metastore.authorization.auth.reads를 참고하세요.
Metastore 보안 구성 파라미터
Hive metastore 서버 보안을 활성화하려면 hive-site.xml에서 다음 파라미터를 설정하세요:
-
hive.metastore.pre.event.listeners
org.apache.hadoop.hive.ql.security.authorization.AuthorizationPreEventListener로 설정. 이는 metastore 쪽 보안을 켭니다. -
hive.security.metastore.authorization.manager
org.apache.hadoop.hive.ql.security.authorization.StorageBasedAuthorizationProvider로 설정. 이는 Hive에게 어떤 metastore 쪽 인가 제공자를 사용할지 알려줘요. 기본 설정은 표준 Hive grant/revoke 모델을 구현하는DefaultHiveMetastoreAuthorizationProvider를 사용합니다. HDFS 권한 기반 모델(권장)로 인가하려면 위 지시처럼StorageBasedAuthorizationProvider를 사용하세요.버전 0.10.0과 0.12.0
StorageBasedAuthorizationProvider는 Hive 0.10.0에 metastore 쪽에서만 실행되도록 도입됐어요 (HIVE-3705). Hive 0.12.0부터는 클라이언트 쪽에서도 실행됩니다 (HIVE-5048과 HIVE-5402). -
hive.security.metastore.authenticator.manager
org.apache.hadoop.hive.ql.security.HadoopDefaultMetastoreAuthenticator로 설정. -
hive.security.metastore.authorization.auth.reads true로 설정하면 Hive metastore 인가가 읽기 접근도 검사해요. 기본값은 true입니다. 읽기 인가 검사는 Hive 0.14.0에 도입됐어요.
샘플 hive-site.xml: 기본 설정
아래 스니펫은 hive-site.xml에서 기본 상태의 키들을 보여줘요 (metastore 쪽 보안이 기본 인가/인증을 사용하도록 설정됐지만 비활성화 상태). 원하는 인가 동작을 얻으려면 위 정보를 반영해 수정하세요:
<property>
<name>hive.security.metastore.authorization.manager</name>
<value>org.apache.hadoop.hive.ql.security.authorization.DefaultHiveMetastoreAuthorizationProvider</value>
<description>authorization manager class name to be used in the metastore for authorization.
The user defined authorization class should implement interface
org.apache.hadoop.hive.ql.security.authorization.HiveMetastoreAuthorizationProvider.
</description>
</property>
<property>
<name>hive.security.metastore.authenticator.manager</name>
<value>org.apache.hadoop.hive.ql.security.HadoopDefaultMetastoreAuthenticator</value>
<description>authenticator manager class name to be used in the metastore for authentication.
The user defined authenticator should implement interface
org.apache.hadoop.hive.ql.security.HiveAuthenticationProvider.
</description>
</property>
<property>
<name>hive.metastore.pre.event.listeners</name>
<value> </value>
<description>pre-event listener classes to be loaded on the metastore side to run code
whenever databases, tables, and partitions are created, altered, or dropped.
Set to org.apache.hadoop.hive.ql.security.authorization.AuthorizationPreEventListener
if metastore-side authorization is desired.
</description>
</property>
더 알아보기 (Learn more)
metastore 서버의 스토리지 기반 인가는 HDFS 권한을 인가의 기준으로 삼아 메타데이터를 보호해요. Hive 인가 모델 전체를 이해하려면 Authorization 문서를 함께 보세요.