Apache HBase에 대한 간단한 사용자 접근
Apache HBase에 대한 간단한 사용자 접근
이 문서는 Kerberos 없이 사용자 이름/비밀번호 기반 접근 제어를 사용해 HBase 클라이언트용 간단한 SASL 인증을 설정하는 방법을 다뤄요. 간단한 사용자 접근은 보안 방식이 아니라 사용자의 실수를 방지하기 위한 방식이에요. 개발 시스템에서 Kerberos를 설정하지 않고 접근 제어를 흉내 내고 싶을 때 사용해요.
출처: 문서
본문
새로운 버전의 Apache HBase(>= 0.92)는 클라이언트의 선택적 SASL 인증을 지원해요. Matteo Bertozzi의 Understanding User Authentication and Authorization in Apache HBase 문서도 참고하세요.
이 문서는 HBase 리소스에 대한 간단한 사용자 접근을 위해 Apache HBase와 클라이언트를 설정하는 방법을 설명해요.
간단한 접근과 보안 접근
다음 섹션은 간단한 사용자 접근을 설정하는 방법을 보여줘요. 간단한 사용자 접근은 HBase를 운영하는 보안 방식이 아니에요. 이 방법은 사용자가 실수하는 것을 방지하는 데 사용돼요. Kerberos를 설정하지 않고 개발 시스템에서 접근 제어(Access Control)를 흉내 내는 데 사용할 수 있어요.
이 방법은 악의적 시도나 해킹 시도를 방지하는 데 사용되지 않아요. HBase를 이런 유형의 공격으로부터 안전하게 하려면 HBase를 보안 운영용으로 구성해야 해요. Secure Client Access to Apache HBase 섹션을 참조하고 거기에 설명된 모든 단계를 완료하세요.
사전 준비
없음
간단한 사용자 접근 운영을 위한 서버 측 구성
클러스터의 모든 서버 머신에 있는 hbase-site.xml 파일에 다음을 추가하세요:
<property>
<name>hbase.security.authentication</name>
<value>simple</value>
</property>
<property>
<name>hbase.security.authorization</name>
<value>true</value>
</property>
<property>
<name>hbase.coprocessor.master.classes</name>
<value>org.apache.hadoop.hbase.security.access.AccessController</value>
</property>
<property>
<name>hbase.coprocessor.region.classes</name>
<value>org.apache.hadoop.hbase.security.access.AccessController</value>
</property>
<property>
<name>hbase.coprocessor.regionserver.classes</name>
<value>org.apache.hadoop.hbase.security.access.AccessController</value>
</property>
0.94의 경우, 클러스터의 모든 서버 머신에 있는 hbase-site.xml 파일에 다음을 추가하세요:
<property>
<name>hbase.rpc.engine</name>
<value>org.apache.hadoop.hbase.ipc.SecureRpcEngine</value>
</property>
<property>
<name>hbase.coprocessor.master.classes</name>
<value>org.apache.hadoop.hbase.security.access.AccessController</value>
</property>
<property>
<name>hbase.coprocessor.region.classes</name>
<value>org.apache.hadoop.hbase.security.access.AccessController</value>
</property>
이 구성 변경을 배포할 때는 HBase 서비스의 전체 종료와 재시작이 필요해요.
간단한 사용자 접근 운영을 위한 클라이언트 측 구성
모든 클라이언트의 hbase-site.xml 파일에 다음을 추가하세요:
<property>
<name>hbase.security.authentication</name>
<value>simple</value>
</property>
0.94의 경우, 클러스터의 모든 서버 머신에 있는 hbase-site.xml 파일에 다음을 추가하세요:
<property>
<name>hbase.rpc.engine</name>
<value>org.apache.hadoop.hbase.ipc.SecureRpcEngine</value>
</property>
클라이언트와 서버 측 사이트 파일의 hbase.security.authentication이 일치하지 않으면 클라이언트가 클러스터와 통신할 수 없다는 점을 알아 두세요.
간단한 사용자 접근 운영을 위한 클라이언트 측 구성 - Thrift 게이트웨이
Thrift 게이트웨이 사용자는 접근 권한이 필요해요. 예를 들어 Thrift API 사용자 thrift_server에게 관리 권한을 주려면 다음과 같은 명령이면 충분해요.
grant 'thrift_server', 'RWCA'
ACL에 대한 자세한 내용은 Access Control Labels (ACLs) 섹션을 참고하세요.
Thrift 게이트웨이는 제공된 자격 증명으로 HBase에 인증해요. Thrift 게이트웨이 자체는 인증을 수행하지 않아요. Thrift 게이트웨이를 통한 모든 클라이언트 접근은 Thrift 게이트웨이의 자격 증명을 사용하고 그 권한을 가지게 돼요.
간단한 사용자 접근 운영을 위한 클라이언트 측 구성 - REST 게이트웨이
REST 게이트웨이는 제공된 자격 증명으로 HBase에 인증해요. REST 게이트웨이 자체는 인증을 수행하지 않아요. REST 게이트웨이를 통한 모든 클라이언트 접근은 REST 게이트웨이의 자격 증명을 사용하고 그 권한을 가지게 돼요.
REST 게이트웨이 사용자는 접근 권한이 필요해요. 예를 들어 REST API 사용자 rest_server에게 관리 권한을 주려면 다음과 같은 명령이면 충분해요.
grant 'rest_server', 'RWCA'
ACL에 대한 자세한 내용은 Access Control Labels (ACLs) 섹션을 참고하세요.
클라이언트가 SPNEGO HTTP 인증을 통해 REST 게이트웨이를 경유해 HBase 클러스터에 패스스루(pass-through) 방식으로 인증할 수 있게 하는 것은 향후 작업이에요.