하둡 파일 암호화 클라우드/빅데이터/가상화

KMS(Key Management Server)는
암호화 구역에 저장되는 파일은 자동으로 암호화된다. KMS는 암호화 키 저장을 담당한다.
KMS에서 저장되는 Key에 대한 REST API 및 액세스 제어를 제공한다.

[ 파일 복사 ]

# mkdir -p /usr/kms
# cp /usr/hdp/current/hadoop-client/mapreduce.tar.gz /usr/kms/
# cd /usr/kms/
# tar -xvf mapreduce.tar.gz
# export KMS_ROOT=/home/kms/

[ 포트 변경-필요시 ]

/usr/hadoop/etc/hadoop/kms-env.sh:export KMS_HTTP_PORT=19000
/usr/hadoop/libexec/kms-config.sh:  export KMS_HTTP_PORT=19000


[ Key Management Server 실행 ]

# /usr/kms/kms.sh run


[ KMS Key provider 설정 ]

Ambari에서 hdfs로 들어가 Configs에서 환경 설정
설정이 끝나면 HDFS, YARN, MapReduce2, Hive 등을 재시작해야 한다.
KMS 기본 포트는 16000인데 테스트 서버는 사용중이라 바꾸었다.

Custom core-site항목
Configuration : Advanced core-site
Key : hadoop.security.key.provider.path
Value : kms://http@localhost:19000/kms

Configuration : Advanced hdfs-site
Key : dfs.encryption.key.provider.uri
Value : kms://http@localhost:19000/kms


[ Key Management Server 재실행 ]

# /usr/kms/kms.sh restart


[ 보안 권한 및 Zone 생성 ]

모든 사용자 가능
$ hadoop key create key1 -size 256
$ hadoop key delete <key-name> -> key삭제

hdfs 사용자로 생성
$ hadoop fs -mkdir /zone1
$ hdfs crypto -createZone -keyName key1 -path /zone1
 
생성확인
$ hdfs crypto -listZones (hadoop key list)

hive 사용자로 권한 변경
$ hdfs dfs -chown hive:hive /zone1
$ hdfs dfs -chmod 750 /zone1

hive 사용자로 데이터 확인
$ hadoop fs -put test.txt /zone1
$ hadoop fs -cat /zone1/test.txt

hdfs 사용자로 파일 확인
$ hadoop fs -cat /.reserved/raw/zone1/test.txt
Kdh\N스啞쳼r밤>큙뇆⊙S楢

hdfs 사용자로 일반 디렉토리는 확인 가능
$ hadoop fs -cat /.reserved/raw/tmp/test.txt
test

hdfs 사용자로 보안존 파일 읽기
$ hadoop fs -cat /zone1/test.txt
Permission denied: user=test, access=EXECUTE, inode="/zone1/test.txt":hive:hive:drwxr-x---

$ hadoop fs -cat /tmp/test.txt -> 권한- root:hdfs
test

kms 권한 설정
key생성, 데이터 접근 등 권한을 설정할 수 있다.
사용자 ID로 설정한다.
/etc/hadoop/~/kms-acls.xml

예)
<property>
 <name>hadoop.kms.blacklist.CREATE</name>
 <value>hdfs,root</value>
 <description>
Blacklist for create-key operations
</description> 


[ 기타 ]

필에 따라 아래 링크가 필요할 수 있다.
$ ls -la /usr/lib64/libcrypto.so
lrwxrwxrwx 1 root root 19 Nov 22 14:35 /usr/lib64/libcrypto.so -> libcrypto.so.1.0.1e

로그 확인
$ /usr/kms/hadoop/logs


덧글

댓글 입력 영역