HDFS와 ZooKeeper 접근 보안

HDFS와 ZooKeeper 접근 보안

이 문서는 보안 HBase 운영에서 ZooKeeper와 HDFS(파일 시스템) 데이터에 대한 접근을 보호하는 방법을 설명해요. 보안 HBase는 안전한 ZooKeeper와 HDFS를 요구해서 사용자가 HBase 아래의 메타데이터와 데이터에 접근하거나 수정할 수 없게 해요. 파일 시스템 수준의 보호가 없으면 HBase 수준의 인가 제어도 의미가 없어져요.

출처: 문서

본문

ZooKeeper 데이터 보안

ZooKeeper는 서로 다른 방법을 사용하는 클라이언트의 접근을 가능하게 하는 플러그 가능한 인증 메커니즘을 가지고 있어요. ZooKeeper는 심지어 인증된 클라이언트와 인증되지 않은 클라이언트를 동시에 허용해요. znodes에 대한 접근은 znode별로 Access Control Lists(ACLs)를 제공해 제한할 수 있어요. ACL은 두 구성 요소, 인증 방법과 프린시펄(principal)을 포함해요. ACL은 계층적으로 강제되지 않아요. 자세한 내용은 ZooKeeper Programmers Guide를 참고하세요.

HBase 데몬은 SASL과 kerberos를 통해 ZooKeeper에 인증해요(ZooKeeper 참고). HBase는 HBase 사용자와 구성된 hbase superuser(hbase.superuser)만 데이터에 접근하고 수정할 수 있도록 znode ACL을 설정해요. ZooKeeper가 서비스 디스커버리나 클라이언트와 상태 공유에 사용되는 경우, HBase가 만든 znodes는 누구든지(인증 여부와 무관하게) 이 znodes를 읽을 수 있게 허용하지만(clusterId, master address, meta location 등), 수정은 HBase 사용자만 할 수 있어요.

파일 시스템(HDFS) 데이터 보안

관리 중인 모든 데이터는 파일 시스템의 루트 디렉터리(hbase.rootdir) 아래에 보관돼요. 파일 시스템의 데이터와 WAL 파일에 대한 접근은 사용자가 HBase 계층을 우회해 파일 시스템에서 기본 데이터 파일을 엿볼 수 없도록 제한해야 해요. HBase는 사용 중인 파일 시스템(HDFS 또는 기타)이 권한을 계층적으로 강제한다고 가정해요. 파일 시스템으로부터 충분한 보호(인가와 인증 모두)가 제공되지 않으면, 사용자가 항상 파일 시스템에서 데이터에 접근할 수 있으므로 HBase 수준의 인가 제어(ACL, visibility labels 등)는 무의미해져요.

HBase는 루트 디렉터리에 posix 유사 권한 700(rwx------)을 강제해요. 즉 HBase 사용자만 FS의 파일을 읽거나 쓸 수 있다는 뜻이에요. 기본 설정은 hbase-site.xml에서 hbase.rootdir.perms를 구성해 변경할 수 있어요. 사용되는 권한을 바꾸려면 활성 master의 재시작이 필요해요. 1.2.0 이전 버전의 경우 HBASE-13780이 커밋됐는지 확인하고, 아니라면 필요하다면 루트 디렉터리 권한을 수동으로 설정할 수 있어요. HDFS를 사용한다면 명령은 다음과 같아요.

sudo -u hdfs hadoop fs -chmod 700 /hbase

다른 hbase.rootdir을 사용한다면 /hbase를 변경해야 해요.

더 알아보기 (Learn more)