본문으로 건너뛰기

보안 기능 설정

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

주의
  • HDE-1.0.1 버전은 보안 기능을 지원하지 않습니다.
  • Kerberos를 지원하지 않는 일부 컴포넌트는 정상적으로 동작하지 않을 수 있으며, Data Catalog 연동 시 보안 기능은 사용할 수 없습니다.

Kerberos

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

Kerberos 적용 후 Hadoop, Hive, HBase를 사용하려면 Kerberos 인증을 완료해야 합니다. 키탭을 이용하여 컴포넌트 간 인증을 진행하면 /etc/hadoopeco.keytab 위치에 기본 키탭이 생성되며, 기본 키탭으로 기본 사용자 목록을 확인할 수 있습니다.

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

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

Kerberos 설치에 대한 설명은 설치 및 연동 방법을 참고하시기 바랍니다.

컴포넌트 포트 변경

Kerberos를 설정하면 일부 컴포넌트의 기본 포트가 변경됩니다. 변경되는 포트는 다음과 같습니다.

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개 이상
  • 일부 특수 문자(\'""`)는 지원하지 않음

레인저 접속

레인저는 Single 구성에서는 마스터 서버에, HA 구성에서는 3번 마스터 서버에 설치되며 6080 포트로 접근할 수 있습니다.

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

레인저 정책

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

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

설치 및 연동 방법

설치 방법

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

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

연동 방법

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

사용자 추가

Kerberos 인증을 위해 마스터 노드에 사용자를 원하는 그룹으로 추가합니다.
마스터 노드는 사용자가 원하는 그룹에 추가하고, 워커 노드는 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이 적용되는 것을 확인할 수 있습니다.

이미지