Skip to main content

보안 기능 설정

Hadoop Eco는 Apache Ranger와 Kerberos를 이용하여 보안 기능을 적용할 수 있습니다.

caution

HDE-1.0.1 버전은 보안 기능을 지원하지 않습니다. 커버로스를 지원하지 않는 일부 컴포넌트는 정상 동작하지 않을 수 있으며, 보안 기능을 사용하면 Data Catalog를 연동할 때 정상동작 하지 않을 수 있습니다.

커버로스(Kerberos)

커버로스는 MIT 에서 개발한 사용자 인증 프로토콜입니다.
커버로스 인증을 적용하면 KDC가 설치 되고 Hadoop, Hive, HBase에 커버로스 인증이 적용됩니다.

커버로스 적용 후 Hadoop, Hive, HBase를 사용하기 위해서는 커버로스 인증을 해야하며, 키탭을 이용하여 컴포넌트간 인증을 진행하면 '/etc/hadoopeco.keytab' 위치에 기본 키탭이 생성됩니다. 기본 키탭으로 기본 사용자의 목록을 확인할 수 있습니다.

키탭 확인 방법
# 기본 유저 확인
klist -kt /etc/hadoopeco.keytab

# 인증 방법
kinit -kt /etc/hadoopeco.keytab hdfs/{host_name}@{realm_name}
안내

커버로스 설치에 대한 설명은 설치 및 연동 방법을 참고 바랍니다.

컴포넌트 포트 변경

커버로스 설정이 되면 일부 컴포넌트의 기본 포트가 변경됩니다. 목록은 아래와 같습니다.

HDE 버전컴포넌트기존 포트변경 포트비고
HDE-1.xHDFS Namenode5007050470https로 접근
HDFS SecondaryNamenode5009050091
HDFS Datanode5007550475https로 접근
HDE-2.xHDFS Namenode98709871https로 접근
HDFS SecondaryNamenode98689869
HDFS Datanode98649867https로 접근

레인저(Ranger)

Hadoop Eco는 Apache Ranger를 이용하여 ACL 적용 및 오딧(Audit)을 확인할 수 있습니다.

레인저의 기본 id는 admin이고, 암호는 클러스터 생성 시 입력하는 관리자 비밀번호를 이용합니다. 레인저는 다음과 같은 암호 생성 규칙을 요구합니다.

  • 8글자 이상
  • 대문자, 소문자, 숫자가 각 1개 이상
  • 일부 특수문자 (\`'"")는 지원하지 않는 특수 문자

레인저 접속

레인저는 싱글일 경우 마스터 서버, HA 일 경우 마스터 3번 서버에 설치되고, 6080 포트로 접근할 수 있습니다.

  1. 레인저가 설치된 VM의 보안 그룹을 확인하고, 퍼블릭 IP를 추가합니다.
  2. admin, rangerAdmin1 을 입력하여 접근합니다.
  3. 기본적으로 HDFS, YARN, Hadoop SQL 플러그인을 지원합니다.

레인저 정책

레인저는 정책을 수정 후 에이전트에서 정책을 가져가서 적용해야 합니다.
Plugin Status에서 정책이 다운로드 되고 Active 상태가 되는 것을 확인 후 작업이 실행되는 것을 확인할 수 있습니다. 이미지

HDFS 정책 수정 후 Access Enforcer에서 ranger-acl이 적용되어 사용자 접근이 제한되는 것을 확인할 수 있습니다 이미지

설치 및 연동 방법

설치 방법

Hadoop Eco 생성 시 3단계 상세 설정의 클러스터 구성 설정에 다음 정보를 추가하여 커버로스와 레인저를 설치할 수 있습니다.

커버로스 및 레인저 설치 방법
{
"configurations":
[
{
"classification": "kerberos-setting",
"properties":
{
"enabled": true, # 커버로스 설정 여부
"passwd": "bigadmin", # KDC 암호
"realm": "HADOOP.ECO" # 기본 렐름 명
}
},
{
"classification": "ranger-setting",
"properties":
{
"enabled": true
}
}
]
}

연동 방법

레인저는 커버로스와 연동되어 사용자를 확인할 수 있습니다.
작업 확인을 위해 각 노드에 사용자를 추가하고, 커버로스 키탭을 발급합니다.

사용자 추가

커버로스 인증을 위해서 마스터 노드에 사용자를 원하는 그룹에 추가합니다.
마스터 노드는 사용자가 원하는 그룹에 추가하고, 워커 노드는 hadoop 그룹에 추가합니다.

# 마스터 노드
groupadd {group_name}
useradd {user_name} -g {group_name}
usermod -G {group_name} {user_name}

# 워커 노드
useradd {user_name} -g hadoop
usermod -G hadoop {user_name}

사용자 추가 후 네임 노드와 리소스 매니저에 사용자가 추가된 것을 알려주어야 합니다.

# 네임 노드 적용
kinit -kt /etc/hadoopeco.keytab hdfs/{host_name}@{realm_name}
hdfs dfsadmin -refreshServiceAcl
hdfs dfsadmin -refreshUserToGroupsMappings
hdfs dfsadmin -refreshSuperUserGroupsConfiguration

# 리소스 매니저 적용
kinit -kt /etc/hadoopeco.keytab yarn/{host_name}@{realm_name}
yarn rmadmin -refreshSuperUserGroupsConfiguration
yarn rmadmin -refreshUserToGroupsMappings
yarn rmadmin -refreshAdminAcls
yarn rmadmin -refreshServiceAcl

키탭 발급 및 로그인

KDC 에 등록한 사용자의 정책(principal)을 등록하고 키탭으로 발급합니다.

# kadmin에 로그인
sudo kadmin.local

# kadmin cli에서 사용자 등록 후 키탭 발급
addprinc -randkey {user_name}@{realm_name}
xst -k {keytab_file_name} {user_name}@{realm_name}

키탭을 발급하면 해당 위치에 파일이 생성된 것을 확인할 수 있습니다.

# 키텝에 등록된 사용자 목록 확인
klist -kt {keytab_file_name}

# 키탭의 계정으로 로그인
kinit -kt {keytab_file_name} {user_name}@{realm_name}

# 인증한 유저 확인
klist

동작 확인

사용자를 등록 후 작업을 실행하면 다음과 같이 HDFS, YARN, Hadoop SQL ACL 이 적용되는 것을 확인할 수 있습니다.

이미지