Tags

데이터 전송 시의 암호화 (Wire Encryption in Hadoop from Hortonworks)

This articles is based on Hortonworks Blog.

하둡은 데이터를 다루는 플랫폼이다 보니 항상 보안이라는 이슈는 중요합니다.
우리가 보통 암호화라고 하면 데이터를 저장할 때와 전송할 때의 두 가지로 나눌 수 있습니다.
보통 저장할 때의 암호화는 많은 일반적인 방법이 있기 때문에 전송 시의 암호화에 대한 방법을 설명하고 있습니다.

하둡에서 데이터 전송을 생각할 때는 주로 RPC, HTTP, Data Transfer Protocol 그리고 JDBC의 케이스가 있습니다.

RPC Encryption
하둡 클러스터를 이용하는 가장 일반적인 방법입니다.
클라이언트는 네임 노드(NameNode)를 RPC를 통해서 접속하고 파일을 읽거나 쓰는 작업을 진행합니다.
이 경우에 하둡은 자바의 Simple Authentication & Security Layer(SASL)를 이용한다고 합니다.
만약에 hadoop.rpc.protection 값이 privacy로 세팅되어 있으면 데이터들은 암호화되서 전송됩니다.

Data Transfer Protocol
네임노드는 클라이언트에게 첫 블록을 읽고 쓰기 위한 데이터노드(DataNode)의 주소를 알려 줍니다.
이 때 실제 데이터의 전송에 이용되는 프로토콜이 DTP입니다.
dfs.encryt.data.transfer=true 값이 네임노드와 모든 데이터노드에 세팅되어 있으면 데이터가 암호화되어서 전송됩니다.
실제 암호화 알고리즘도 세팅할 수 있습니다.
(The actual algorithm used for encryption can be customized with dfs.encrypt.data.transfer.algorithm set to either 3des or rc4. If nothing is set, then the default on the system is used (usually 3DES.) While 3DES is more cryptographically secure, RC4 is substantially faster.)

HTTPS Encryption
표준적인 SSL을 이용해서 암호화하는 방법입니다.
dfs.https.enable=true 값을 세팅함으로써 SSL을 통한 암호화 전송을 할 수 있습니다.

Encryption during Shuffle
하둡 2.0에서는 셔플(Shuffle) 과정에서의 암호화도 지원이 되게 되었습니다.
셔플이란 맵리듀스에서 맵퍼(Mapper)와 리듀서(Reducer)간에 데이터가 이동하는 단계를 말합니다.
자세한 사항은 하둡 2.0 매뉴얼을 참조하시기 바랍니다.

JDBC
HIVE 단계에서 JDBC와 연동할 때 암호화 전송을 구현하도록 세팅할 수 있습니다.
HiveServer2에서 hive.server2.thrift.sasl.qop를 추가하고 JDBC 클라이언트에서 sasl.sop를 JDBC 연결 문구(Connection String)에 포함함으로써 세팅이 됩니다.
자세한 사항은 하둡 2.0 매뉴얼을 참조하시기 바랍니다.

이상과 같이 하둡 2.0에서는 데이터의 전송이 일어나는 각 단계에서 암호화 전송을 제공함으로써 데이터의 보안성을 획기적으로 올렸습니다.
퍼포먼스의 측면도 함께 고려해야 함으로 취약한 지점에서 전사의 보안 계획과 함께 세팅하는 것이 필요하다고 생각합니다.

———————————————————————————————————–
ASD Technologies는 호튼웍스(Hortonworks Inc)와의 Consulting Partnership을 통해서
빅데이터에 대한 도입 컨설팅 및 구축을 도와드리고 있습니다.

호튼웍스 파트너 홈페이지
ASD Technologies Korea 홈페이지

Contact Point : sunung@asdtech.co
———————————————————————————————————–