SlideShare a Scribd company logo
Kerberos Authentication
버티카 케르베로스 연동하기
이기훈 부장 | Lee, Kee Hoon (KeeHoon.Lee@microfocus.com)
Presales Consultant, Asia Pacific and Japan – Vertica, Micro Focus
30th Apr, 2019
목차
2
▪ Kerberos 의 이해
▪ Vertica - Kerberos 연동하기
▪ 스크립트 살펴보기
▪ 요약 및 정리
Kerberos 의 이해
들어가며…
4
▪ 특정 서비스 및 서버에 접근을 위한 인증 프로토콜
- 하둡 환경의 접근제어를 위해 활용
▪ 한 케르베로스 영역 내에 존재하는 자원들은 상호간 접근 가능
- "버티카 – 하둡” 연계시 버티카 역시 케르베로스 연동이 되어야 함
▪ 버티카는 케르베로스 인증을 지원
- 케르베로스 서버에 자원으로 등록
- 버티카 서버에 케르베로스 인증 활성화 수행
Kerberos (케르베로스)란?
5
▪ 인증 프로토콜
▪ SSO를 위해 설계
- 한 번 인증하고 계속 사용 – 필요에 따라서는 재인증
▪ TLS 가 필요하지 않음
- 프로토콜 내에 암호화가 포함
▪ 3가지 요소로 구성
- 서비스 – 리소스 (FTP 서버, DB 서버, 하둡 노드 등)
- 사용자 (사람 혹은 머신)
- KDC (Key Distribution Center) – 접근 권한을 부여하는 3rd Party
예시: 월 단위 정액 티켓을 끊는 영화관
케르베로스 이해를 위한 비유
▪ 영화는 (서비스) 다양한 곳에서 관람이 가능
▪ 하나의 영화가 다양한 장소에서 관람 가능
▪ 특정 영화를 보기 위해서, 관람자 (사용자)는 영화 티켓이 필요
- 그 영화
- 해당 위치
▪ 쿠폰 서비스 창구 존재 (그루폰과 유사):
- 멤버십이 있음
- 영화 티켓을 직접적으로 전달하는 것은 불가능
- 다만 영화 구매를 위한 쿠폰은 구할 수 있음
도식화
Location 2
• Inception
• Die HardLocation 1
• Die Hard
Location 3
User
Groupon
Username:
Password:
AMC ticket counter
[Show Coupon Here]
도식화
1. 관람권을 사려는 자는 쿠폰을 구매하러 감
1. 사용자 및 패스워드를 입력 후 로그인 (인증)
2. AMC에서 활용가능한 월간 쿠폰을 다운로드
3. 기한: 1달
도식화
Groupon
Username:
Password:
AMC ticket counter
[Show Coupon Here]
• Die HardLocation 1
• Die HardLocation 2
• InceptionLocation 3
Theaters
Steps
- Send Username & password
- Recv generic coupon
[ generic coupon ]
도식화
1. 관람권을 사려는 사람은 쿠폰을 구매하러 감
1. 사용자 및 패스워드를 입력 후 로그인 (인증)
2. AMC에서 활용가능한 월간 쿠폰을 다운로드
2. 사용자는 티켓 카운터로 감
1. 유효한 쿠폰을 보여줌
2. 특정 장소에 가서 영화에 대해 티켓을 요청
3. 해당 장소에서 필요한 영화 티켓을 수령
도식화
• Die HardLocation 1
• Die HardLocation 2
• InceptionLocation 3
Groupon
Username:
Password:
AMC ticket counter
[Show Coupon Here]
Theaters
Steps
- Send Username & password
- Recv generic coupon
[ generic coupon ]
-Send coupon, movie-name,
screen-name
-Recv ticket for movie on
screen
[ specific movie ticket ]
도식화
1. 관람권을 사려는 사람은 쿠폰을 구매하러 감
1. 사용자 및 패스워드를 입력 후 로그인 (인증)
2. AMC에서 활용가능한 월간 쿠폰을 다운로드
2. 사용자는 티켓 카운터로 감
1. 유효한 쿠폰을 보여줌
2. 특정 장소에 가서 영화에 대해 티켓을 요청
3. 해당 장소에서 필요한 영화 티켓을 수령
3. 사용자는 티켓을 갖고 영화를 보러 감
1. 해당 장소의 해당 영화관의 티켓은 확인 작업을 수행
도식화
• Die HardLocation 1
• Die HardLocation 2
• InceptionLocation 3
Groupon
Username:
Password:
AMC ticket counter
[Show Coupon Here]
Coupon+ movie + location
Success / failure
Theaters
Steps
- Send Username & password
- Recv generic coupon
[ generic coupon ]
-Send coupon, movie-name,
screen-name
-Recv ticket for movie on
screen
[ specific movie ticket ]
- Send movie ticket
도식화
1. 관람권을 사려는 사람은 쿠폰을 구매하러 감
1. 사용자 및 패스워드를 입력 후 로그인 (인증)
2. AMC에서 활용가능한 월간 쿠폰을 다운로드
2. 사용자는 티켓 카운터로 감
1. 유효한 쿠폰을 보여줌
2. 특정 장소에 가서 영화에 대해 티켓을 요청
3. 해당 장소에서 필요한 영화 티켓을 수령
3. 사용자는 티켓을 갖고 영화를 보러 감
1. 해당 장소의 해당 영화관의 티켓은 확인 작업을 수행
4. 다른 영화 관람을 위해서는 2단계 부터 다시 수행 (SSO)
5. 티켓이 만료된 경우, 2단계 부터 다시 수행
6. 쿠폰을 분실한 경우, 1단계 부터 다시 수행 (리뉴얼)
도식화
• Die HardLocation 1
• Die HardLocation 2
• InceptionLocation 3
Groupon
Username:
Password:
AMC ticket counter
[Show Coupon Here]
Coupon+ movie + location
Success / failure
Theaters
Steps
- Send Username & password
- Recv generic coupon
[ generic coupon ]
-Send coupon, movie-name,
screen-name
-Recv ticket for movie on
screen
[ specific movie ticket ]
- Send movie ticket
KDC
Authentication Server
Username:
Password:
Ticket-Granting Server
[Show TGT Here]
도식화
케르베로스 인증과 연결
•Service 1
•Service 2Host 1
•Service 1
•Service 2Host 2
•Service 3
Host 3
Service Ticket for Service 1 at Host 2
Success / failure
Cluster
Meaning Steps
- authenticate
- Gets TGT
-Send Username &
password
- Recv generic coupon
[ TGT ] [ generic coupon ]
-Send TGT, service-
name, host-name
-Recv ST for service
on host
-Send coupon, movie-name,
screen-name
-Recv ticket for movie on
screen
[ ST for specific
service + host]
[ specific movie ticket ]
- Send service ticket - Send movie ticket
• Realm
• 전체 사용자랑 호스트가 있는 그룹
• 다른 네트워크 도메인 가능
• 예. VERTICACORP.COM, COMPANY.COM
• Principals (primary/instance@REALM)
• User-principals
• u1@VERTICACORP.COM
• u1/admin@VERTICACORP.COM
• Service-principals
• Vertica/eng001.verticacorp.com
• Hadoop/eng002.verticacorp.com
• KDC (Key Distribution Center / Kerberos
Server) – 키 서버:
• Authentication Server (AS):
• 로그인 제공
• kadmind
• Ticket-Granting Server (TGS):
• 티켓 발급
• krb5kdc
케르베로스 관련 용어
• Ticket-Granting Ticket (TGT)
• 인증을 수행 – kinit 사용
• 서비스 티켓을 요청하는데 사용
• 로컬 머신에 캐시로 저장
• Service Ticket
• TGT 가 있어야 획득 가능
• 특정 서비스를 위해 획득
• Keytab (Key-table file)
• Principals 그룹에 대한 암호화 키를 보유
• plaintext
• 사용법:
• kinit 으로 수행 (클라이언트)
• 서비스 티켓 검증 (서버)
• Acl’s (접근 제어):
• 예) - */admin@VERTICACORP.COM *
서비스를 케르베로스화 (‘Kerberizing’) 하기
Kerberizing a Service
▪ 케르베로스 서버 설정
▪ 등록하고자 하는 서비스를 service principals 로 추가
- HDFS 클러스터, Vertica 클러스터 등
▪ 케르베로스화 된 서비스에 접근하고자 하는 유저는 케르베르스 서버에 등록이 되어야 함
- User Principal 로 등록
▪ User (클라이언트) 는 반드시 특정 서비스 접근을 위해 KDC에 권한을 요청할 수 있어야 함
▪ 서비스는 해당 티켓을 확인 후 서비스를 제공할 수 있어야 함
Vertica - Kerberos 연동하기
케르베로스 연동의 목적
▪ 단순 인증 서버로 활용
- LDAP 과 유사한 활용
▪ 케르베로스 연동이 된 HDFS 와 연결할 때 적용
- 가장 많이 활용되는 예
케르베로스 인증 vs LDAP 인증
▪ 케르베로스 인증:
- 클라이언트에서 더 많은 작업 수행
- 버티카 클러스터는 KDC와 통신이 불필요
LDAP
server
Verticavsql
LDAP authentication
Kerberos
server
Verticavsql
Kerberos authentication
pwd
pwd
ST
kinit
KDC
Authentication Server
Username:
Password:
Ticket-Granting Server
[Show TGT Here]
Kerberos DB
u1@EXAMPLE.COM
u1/admin@EXAMPLE.COM
u2@EXAMPLE.COM
Vertica/host1@EXAMPLE.COM
Vertica/host2@EXAMPLE.COM
Vertica/host3@EXAMPLE.COM
(1) 버티카 접속에 필요한
Principal 들
KDC(2) keytab file 복사
▪ 생성된 Keytab 파일을 버티카 노드에 복사
- 1개의 파일
- 추후 노드 추가시 새로 Keytab을 복사
•Vertica
•Service 2Host 1
•Vertica
•Service 2Host 2
•Vertica
Host 3
Authentication Server
Username:
Password:
Ticket-Granting Server
[Show TGT Here]
Cluster
Kerberos DB
u1@EXAMPLE.COM
u1/admin@EXAMPLE.COM
u2@EXAMPLE.COM
Vertica/host1@EXAMPLE.COM
Vertica/host2@EXAMPLE.COM
Vertica/host3@EXAMPLE.COM
(3) 주요 확인 사항들
▪ 버티카 서버 재기동 필요
▪ kerberos_config_check()
- knobs, keytab 등 확인
Parameter Meaning Comments
KerberosServiceName vertica/hostname@REALM Defaults to ‘vertica’
KerberosHostname service/host1.verticacorp.com@REALM If empty, gethostname() is used
KerberosRealm service/hostname@EXAMPLE.COM Matched against incoming user’s realm
KerberosKeytabFile File path for keytab file - Must be owned by vertica linux user
- Permissions = 600
(4) Kerberos ClientAuthentication 방법
▪ CREATE AUTHENTICATION krb METHOD ‘gss’ HOST ‘0.0.0.0/0’;
▪ ALTER AUTHENTICATION v_kerberos enable;
▪ GRANT AUTHENTICATION krb TO u1;
(5) 케르베로스 인증을 통한
로그인
Service Ticket for vertica/host2.example.com@EXAMPLE.COM
Success / failure
KDC
Authentication Server
Username:
Password:
Ticket-Granting Server
[Show TGT Here]
•Vertica
•Service 2Host 1
•Vertica
•Service 2Host 2
•Vertica
Host 3
Cluster
Meaning Steps
- authenticate
- Gets TGT
Kinit u1@EXAMPLE.COM
[ TGT ]
-Send TGT, service-
name, host-name
-Recv ST for service
on host
Vsql –U u1
-k vertica
-K host2.example.com
-h host2.example.com
[ ST for specific
service + host]
- Send service ticket
Kerberos DB
u1@EXAMPLE.COM
u1/admin@EXAMPLE.COM
u2@EXAMPLE.COM
Vertica/host1@EXAMPLE.COM
Vertica/host2@EXAMPLE.COM
Vertica/host3@EXAMPLE.COM
• Host2’s keytab needs to at least contain entries for
vertica/host2.example.com (ie.-k/-K )
Active Directory 연동시 추가 고려할 점
27
클러스터당 2개의 Principal 이 필요
▪ Active Directory (윈도우 서버) 환경의 케르베로스와 연동시, 추가 작업이 필요
- OS간 호환성으로 내부의 인증 문제에서 기인
▪ 버티카에 대한 Principal 과 해당 호스트 (노드)에 관한 Principal 이 2개 필요
- 예) 3노드 클러스터면 6 개의 Principal이 필요 + 자원에 접근할 유저는 추가로 필요
▪ 해당 매뉴얼 참고
케르베로스 인증 디버깅
• klist
• Credentials cache 정보
• keytab 엔트리 (with –k <keytab>)
• Kdestroy – Credentials cache 클리어
• Vertica.log
• knobs – parameter_name ilike
‘%kerb%’;
• export KRB5_TRACE=<파일명>
• Filename = blah.txt, /dev/stdout 등
• krb 라이브러리 trace logs
• 서버에서 stdout 구동시 재기동 필요
• 모든 사용자 및 권한이 맞게 설정된지 확인
• kerberos_config_check()
• 버티카의 케르베로스 연동 기능 확인
• /etc/hosts
: 호스트 정보 확인
• /etc/krb5.conf
• Realm 과 host 정보 확인
• KDC 서버 구동 여부 확인
• kadmin (또는 kadmin.local)
• List_principals – 모든 사항이 등록되어
있는지 확인
스크립트 살펴보기
배경
30
스크립트 구성 정보
▪ 버티카 클러스터는 3대라고 가정
- Principal은 임으로 지을 수 있으나, Vertica의 Principal은 “vertica-node-<번호>” 로 지음
- (Active Directory 의 경우) Host의 Principal은 “host-node-<번호>” 로 지음
- hostname은 “vnode<번호>”라고 가정
- 실제 케르베로스 인증에 사용할 사용자 계정은 verticauser 로 가정
▪ Realm이 될 전체 도메인 정보는 다음과 같이 가정
- 하둡 클러스터와 같은 Realm을 사용함
- BIGDATA.COMPANY.COM로 가정
- 즉, hostname은 vnode1.bigdata.company.com 과 같이 설정됨
케르베로스 자원 등록
Linux 환경의 경우
▪ Vertica 노드의 Principal 등록
- dsadd user "CN=[버티카 Principal],CN=Users,DC=[Relam 정보 (. 단위로 구분)] " -pwd
[패스워드(사용안함)] -canchpwd no -pwdneverexpires yes
- dsadd user "CN=vertica-node-1,CN=Users,DC=BIGDATA,DC=COMPANY,DC=COM" -pwd
vertica1@ -canchpwd no -pwdneverexpires yes
- dsadd user "CN=vertica-node-2,CN=Users,DC=BIGDATA,DC=COMPANY,DC=COM" -pwd
vertica1@ -canchpwd no -pwdneverexpires yes
- dsadd user "CN=vertica-node-3,CN=Users,DC=BIGDATA,DC=COMPANY,DC=COM" -pwd
vertica1@ -canchpwd no -pwdneverexpires yes
케르베로스 자원 등록
Active Directory 환경의 경우 – 추가 작업 수행
▪ Active Directory 연결을 위한 HOST 추가 등록
- dsadd user "CN=[호스트 Principal],CN=Users,DC=[Relam 정보 (. 단위로 구분)] " –pwd
[패스워드(사용안함)] –canchpwd no –pwdneverexpires yes
- dsadd user "CN=host-node-1,CN=Users, DC=BIGDATA,DC=COMPANY,DC=COM" -pwd
vertica1@ -canchpwd no -pwdneverexpires yes
- dsadd user "CN=host-node-2,CN=Users, DC=BIGDATA,DC=COMPANY,DC=COM" -pwd
vertica1@ -canchpwd no -pwdneverexpires yes
- dsadd user "CN=host-node-3,CN=Users, DC=BIGDATA,DC=COMPANY,DC=COM" -pwd
vertica1@ -canchpwd no -pwdneverexpires yes
케르베로스 자원 등록
33
유저 Principal
▪ 버티카 클러스터에 실제로 접근할 User Principal 생성
- dsadd user "CN=[유저 Principal],CN=Users,DC=[Relam 정보 (. 단위로 구분)] " –pwd
[패스워드(사용안함)] –canchpwd no –pwdneverexpires yes
- dsadd user "CN=verticauser, CN=Users, DC=BIGDATA,DC=COMPANY,DC=COM " -pwd
vertica1@ -canchpwd no -pwdneverexpires yes
케르베로스 자원 등록
34
Principal Setting
▪ User Principal 에 접근 권한을 부여
- setspn -s [User]/[노드 명].[도메인 전체] [Realm 앞 –대문자][Vertica Principal (번호 일치)]
- setspn -s verticakerberos/vnode1.bigdata.company.com BIGDATAvertica-node-1
- setspn -s verticakerberos/vnode2.bigdata.company.com BIGDATAvertica-node-2
- setspn -s verticakerberos/vnode3.bigdata.company.com BIGDATAvertica-node-3
케르베로스 자원 등록
35
Principal Setting – Active Directory 추가 작업
▪ User Principal 에 Host 접근 권한을 부여
- setspn -s host/[노드 명].[도메인 전체] [Realm 앞 –대문자][Host Principal (번호 일치)]
- setspn -s host/vnode1.bigdata.company.com BIGDATAhost-node-1
- setspn -s host/vnode2.bigdata.company.com BIGDATAhost-node-2
- setspn -s host/vnode3.bigdata.company.com BIGDATAhost-node-3
Active Directory 추가 사항
36
Principal 들에 대한 권한 위임 설정
▪ Principal -> 속성 -> 권한 위임 설정
▪ 두번째, 혹은 세번째 권한 위임 옵션 선택
- 권장은 세번째
Keytab File 생성
37
Key File– Active Directory 추가 작업
▪ 해당 Vertica Principal들을 바탕으로 Keytab 파일들을 생성
- ktpass -out [출력 파일].keytab –princ [User Princiapal]/[노드 명].[도메인 전체]@[Realm 앞 –
대문자] -mapuser [Realm 앞 –대문자][Vertica Principal] -mapop set -pass vertica1@ -
ptype KRB5_NT_PRINCIPAL
- ktpass -out vertica-node-1.keytab -princ
verticauser/vnode1.bigdata.company.com@BIGDATA -mapuser BIGDATAvertica-node-1
-mapop set -pass vertica1@ -ptype KRB5_NT_PRINCIPAL
- ktpass -out vertica-node-2.keytab -princ
verticauser/vnode2.bigdata.company.com@BIGDATA -mapuser BIGDATAvertica-node-2
-mapop set -pass vertica1@ -ptype KRB5_NT_PRINCIPAL
- ktpass -out vertica-node-3.keytab -princ
verticauser/vnode3.bigdata.company.com@BIGDATA -mapuser BIGDATAvertica-node-3
-mapop set -pass vertica1@ -ptype KRB5_NT_PRINCIPAL
Keytab File 생성
38
Key File– Active Directory 추가 작업
▪ 해당 Host Principal의 Keytab 파일들을 생성
- ktpass -out [출력 파일].keytab –princ [User Princiapal]/[노드 명].[도메인 전체]@[Realm 앞 –
대문자] -mapuser [Realm 앞 –대문자][Vertica Principal] -mapop set -pass vertica1@ -
ptype KRB5_NT_PRINCIPAL
- ktpass -out host-node-1.keytab -princ host/vnode1.bigdata.company.com@BIGDATA -
mapuser BIGDATAhost-node-1 -mapop set -pass vertica1@ -ptype KRB5_NT_PRINCIPAL
- ktpass -out host-node-2.keytab -princ host/vnode1.bigdata.company.com@BIGDATA -
mapuser BIGDATAhost-node-2 -mapop set -pass vertica1@ -ptype KRB5_NT_PRINCIPAL
- ktpass -out host-node-3.keytab -princ host/vnode1.bigdata.company.com@BIGDATA -
mapuser BIGDATAhost-node-3 -mapop set -pass vertica1@ -ptype KRB5_NT_PRINCIPAL
Keytab File 병합
39
kutil 을 이용
▪ 출력된 6개의 Keytab 파일을 하나로 병합
- kutil 이용
- read_kt <키 파일 이름> : 병합할 키 파일 추가
- list : 병합할 키 파일 리스트 확인
- write_kt <키 병합 출력 파일> : 최종 출력 파일
▪ 작업 후 통합된 keytab 파일은 버티카 서버들로 각각 모두 복사
버티카 서버 측 작업
40
Vertica 내의 설정 – 서버 설정
▪ 데이터베이스에서 Kerberos 활성화를 위한 값 세팅
- alter database <데이터베이스명> set
kerberosServiceName=‘[서비스명: 예시에서는 verticakerberos]’,
KerberosRealm='[Realm정보: 예시에서는 BIGDATA]’,
KerberosKeytabFile=‘<각 노드에 복사된 병합 키탭 파일 위치>’,
KerberosTicketDuration=80000;
버티카 서버 측 작업
41
Vertica 내의 설정 – 사용자 생성
▪ 케르베로스 사용자와 일치하는 사용자 계정 필요
- CREATE USER verticauser;
- CREATE AUTHENTICATION v_kerberos method 'gss' host '0.0.0.0/0’;
- ALTER AUTHENTICATION v_kerberos enable;
- GRANT AUTHENTICATION v_kerberos to verticauser;
접속 수행
42
KDC에서 키 수령 후 접속 수행
▪ KDC의 키 수령은 kinit을 활용
- kinit verticauser
- vsql -U verticauser -k verticakerberos -K vnode1.bigdata.company.com -h
vnode1.bigdata.company.com
요약 및 정리
44
▪ 케르베로스는 인증 프로토콜로 활용
- KDC 서버에서 티켓 발급 후 캐싱 정보로 접근
- 주로 하둡의 인증 환경으로 적용
▪ 버티카는 케르베로스 연동을 지원
- 버티카-하둡 연계시, 하둡에 케르베로스 적용 사례가 많음
- 버티카에 단순 인증 서버로도 활용 가능
▪ 버티카는 케르베로스 연동시 트러블 슈팅 방안 지원
- 다양한 함수 지원
- 다양한 프로그램으로 로그 파일 제공
버티카 케르베로스 인증
Kerberos Authentication - 버티카 케르베로스 연동하기

More Related Content

What's hot

Kubernetes on Premise Practical Guide
Kubernetes on Premise Practical GuideKubernetes on Premise Practical Guide
Kubernetes on Premise Practical Guide
Chan Shik Lim
 
[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버
[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버
[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버
준철 박
 
도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container Day
도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container Day도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container Day
도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container Day
Amazon Web Services Korea
 
[IGC 2017] AWS 김필중 솔루션 아키텍트 - AWS 를 활용한 모바일 백엔드 개발
[IGC 2017] AWS 김필중 솔루션 아키텍트 - AWS 를 활용한 모바일 백엔드 개발[IGC 2017] AWS 김필중 솔루션 아키텍트 - AWS 를 활용한 모바일 백엔드 개발
[IGC 2017] AWS 김필중 솔루션 아키텍트 - AWS 를 활용한 모바일 백엔드 개발
강 민우
 
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육
Ji-Woong Choi
 
[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB
[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB
[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB
NAVER D2
 
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까
영석 양
 
HTTPS
HTTPSHTTPS

What's hot (8)

Kubernetes on Premise Practical Guide
Kubernetes on Premise Practical GuideKubernetes on Premise Practical Guide
Kubernetes on Premise Practical Guide
 
[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버
[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버
[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버
 
도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container Day
도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container Day도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container Day
도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container Day
 
[IGC 2017] AWS 김필중 솔루션 아키텍트 - AWS 를 활용한 모바일 백엔드 개발
[IGC 2017] AWS 김필중 솔루션 아키텍트 - AWS 를 활용한 모바일 백엔드 개발[IGC 2017] AWS 김필중 솔루션 아키텍트 - AWS 를 활용한 모바일 백엔드 개발
[IGC 2017] AWS 김필중 솔루션 아키텍트 - AWS 를 활용한 모바일 백엔드 개발
 
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육
 
[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB
[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB
[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB
 
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까
 
HTTPS
HTTPSHTTPS
HTTPS
 

Similar to Kerberos Authentication - 버티카 케르베로스 연동하기

Hadoop security DeView 2014
Hadoop security DeView 2014Hadoop security DeView 2014
Hadoop security DeView 2014
Gruter
 
cert-manager로 let's encrypt 인증서 발급
cert-manager로 let's encrypt 인증서 발급cert-manager로 let's encrypt 인증서 발급
cert-manager로 let's encrypt 인증서 발급
choi sungwook
 
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
Cloud-Barista Community
 
Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
Cloud-Barista Community
 
OpenStack Swift Debugging
OpenStack Swift DebuggingOpenStack Swift Debugging
OpenStack Swift Debugging
OpenStack Korea Community
 
Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 인프라 연동 (CB-Spider)
Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 인프라 연동 (CB-Spider)Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 인프라 연동 (CB-Spider)
Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 인프라 연동 (CB-Spider)
Cloud-Barista Community
 
Provisioning Dedicated Game Server on Kubernetes Cluster
Provisioning Dedicated Game Server on Kubernetes ClusterProvisioning Dedicated Game Server on Kubernetes Cluster
Provisioning Dedicated Game Server on Kubernetes Cluster
Jinwoong Kim
 
[OpenInfra Days Korea 2018] (Track 4) Provisioning Dedicated Game Server on K...
[OpenInfra Days Korea 2018] (Track 4) Provisioning Dedicated Game Server on K...[OpenInfra Days Korea 2018] (Track 4) Provisioning Dedicated Game Server on K...
[OpenInfra Days Korea 2018] (Track 4) Provisioning Dedicated Game Server on K...
OpenStack Korea Community
 
nexus helm 설치와 private docker repo 생성
nexus helm 설치와 private docker repo 생성nexus helm 설치와 private docker repo 생성
nexus helm 설치와 private docker repo 생성
choi sungwook
 
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...
Cloud-Barista Community
 
Kafka slideshare
Kafka   slideshareKafka   slideshare
Kafka slideshare
wonyong hwang
 
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
강 민우
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
SeungYong Oh
 
resource on openstack
 resource on openstack resource on openstack
resource on openstack
jieun kim
 
Daum OAuth 2.0
Daum OAuth 2.0Daum OAuth 2.0
Daum OAuth 2.0
Daum DNA
 
쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개
쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개
쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개
Ian Choi
 
Openstack Instance Resize
Openstack Instance ResizeOpenstack Instance Resize
Openstack Instance Resize
ymtech
 
Clova extension에서 OAuth 계정 연동 구현
Clova extension에서 OAuth 계정 연동 구현Clova extension에서 OAuth 계정 연동 구현
Clova extension에서 OAuth 계정 연동 구현
Gosu Ok
 
세션3. geth 클라이언트 실습 및 모니터링과 시각화
세션3. geth 클라이언트 실습 및 모니터링과 시각화세션3. geth 클라이언트 실습 및 모니터링과 시각화
세션3. geth 클라이언트 실습 및 모니터링과 시각화
Jay JH Park
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
Ji-Woong Choi
 

Similar to Kerberos Authentication - 버티카 케르베로스 연동하기 (20)

Hadoop security DeView 2014
Hadoop security DeView 2014Hadoop security DeView 2014
Hadoop security DeView 2014
 
cert-manager로 let's encrypt 인증서 발급
cert-manager로 let's encrypt 인증서 발급cert-manager로 let's encrypt 인증서 발급
cert-manager로 let's encrypt 인증서 발급
 
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
 
Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
 
OpenStack Swift Debugging
OpenStack Swift DebuggingOpenStack Swift Debugging
OpenStack Swift Debugging
 
Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 인프라 연동 (CB-Spider)
Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 인프라 연동 (CB-Spider)Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 인프라 연동 (CB-Spider)
Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 인프라 연동 (CB-Spider)
 
Provisioning Dedicated Game Server on Kubernetes Cluster
Provisioning Dedicated Game Server on Kubernetes ClusterProvisioning Dedicated Game Server on Kubernetes Cluster
Provisioning Dedicated Game Server on Kubernetes Cluster
 
[OpenInfra Days Korea 2018] (Track 4) Provisioning Dedicated Game Server on K...
[OpenInfra Days Korea 2018] (Track 4) Provisioning Dedicated Game Server on K...[OpenInfra Days Korea 2018] (Track 4) Provisioning Dedicated Game Server on K...
[OpenInfra Days Korea 2018] (Track 4) Provisioning Dedicated Game Server on K...
 
nexus helm 설치와 private docker repo 생성
nexus helm 설치와 private docker repo 생성nexus helm 설치와 private docker repo 생성
nexus helm 설치와 private docker repo 생성
 
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...
 
Kafka slideshare
Kafka   slideshareKafka   slideshare
Kafka slideshare
 
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
 
resource on openstack
 resource on openstack resource on openstack
resource on openstack
 
Daum OAuth 2.0
Daum OAuth 2.0Daum OAuth 2.0
Daum OAuth 2.0
 
쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개
쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개
쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개
 
Openstack Instance Resize
Openstack Instance ResizeOpenstack Instance Resize
Openstack Instance Resize
 
Clova extension에서 OAuth 계정 연동 구현
Clova extension에서 OAuth 계정 연동 구현Clova extension에서 OAuth 계정 연동 구현
Clova extension에서 OAuth 계정 연동 구현
 
세션3. geth 클라이언트 실습 및 모니터링과 시각화
세션3. geth 클라이언트 실습 및 모니터링과 시각화세션3. geth 클라이언트 실습 및 모니터링과 시각화
세션3. geth 클라이언트 실습 및 모니터링과 시각화
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
 

Kerberos Authentication - 버티카 케르베로스 연동하기

  • 1. Kerberos Authentication 버티카 케르베로스 연동하기 이기훈 부장 | Lee, Kee Hoon (KeeHoon.Lee@microfocus.com) Presales Consultant, Asia Pacific and Japan – Vertica, Micro Focus 30th Apr, 2019
  • 2. 목차 2 ▪ Kerberos 의 이해 ▪ Vertica - Kerberos 연동하기 ▪ 스크립트 살펴보기 ▪ 요약 및 정리
  • 4. 들어가며… 4 ▪ 특정 서비스 및 서버에 접근을 위한 인증 프로토콜 - 하둡 환경의 접근제어를 위해 활용 ▪ 한 케르베로스 영역 내에 존재하는 자원들은 상호간 접근 가능 - "버티카 – 하둡” 연계시 버티카 역시 케르베로스 연동이 되어야 함 ▪ 버티카는 케르베로스 인증을 지원 - 케르베로스 서버에 자원으로 등록 - 버티카 서버에 케르베로스 인증 활성화 수행
  • 5. Kerberos (케르베로스)란? 5 ▪ 인증 프로토콜 ▪ SSO를 위해 설계 - 한 번 인증하고 계속 사용 – 필요에 따라서는 재인증 ▪ TLS 가 필요하지 않음 - 프로토콜 내에 암호화가 포함 ▪ 3가지 요소로 구성 - 서비스 – 리소스 (FTP 서버, DB 서버, 하둡 노드 등) - 사용자 (사람 혹은 머신) - KDC (Key Distribution Center) – 접근 권한을 부여하는 3rd Party
  • 6. 예시: 월 단위 정액 티켓을 끊는 영화관 케르베로스 이해를 위한 비유 ▪ 영화는 (서비스) 다양한 곳에서 관람이 가능 ▪ 하나의 영화가 다양한 장소에서 관람 가능 ▪ 특정 영화를 보기 위해서, 관람자 (사용자)는 영화 티켓이 필요 - 그 영화 - 해당 위치 ▪ 쿠폰 서비스 창구 존재 (그루폰과 유사): - 멤버십이 있음 - 영화 티켓을 직접적으로 전달하는 것은 불가능 - 다만 영화 구매를 위한 쿠폰은 구할 수 있음
  • 7. 도식화 Location 2 • Inception • Die HardLocation 1 • Die Hard Location 3 User Groupon Username: Password: AMC ticket counter [Show Coupon Here]
  • 8. 도식화 1. 관람권을 사려는 자는 쿠폰을 구매하러 감 1. 사용자 및 패스워드를 입력 후 로그인 (인증) 2. AMC에서 활용가능한 월간 쿠폰을 다운로드 3. 기한: 1달
  • 9. 도식화 Groupon Username: Password: AMC ticket counter [Show Coupon Here] • Die HardLocation 1 • Die HardLocation 2 • InceptionLocation 3 Theaters Steps - Send Username & password - Recv generic coupon [ generic coupon ]
  • 10. 도식화 1. 관람권을 사려는 사람은 쿠폰을 구매하러 감 1. 사용자 및 패스워드를 입력 후 로그인 (인증) 2. AMC에서 활용가능한 월간 쿠폰을 다운로드 2. 사용자는 티켓 카운터로 감 1. 유효한 쿠폰을 보여줌 2. 특정 장소에 가서 영화에 대해 티켓을 요청 3. 해당 장소에서 필요한 영화 티켓을 수령
  • 11. 도식화 • Die HardLocation 1 • Die HardLocation 2 • InceptionLocation 3 Groupon Username: Password: AMC ticket counter [Show Coupon Here] Theaters Steps - Send Username & password - Recv generic coupon [ generic coupon ] -Send coupon, movie-name, screen-name -Recv ticket for movie on screen [ specific movie ticket ]
  • 12. 도식화 1. 관람권을 사려는 사람은 쿠폰을 구매하러 감 1. 사용자 및 패스워드를 입력 후 로그인 (인증) 2. AMC에서 활용가능한 월간 쿠폰을 다운로드 2. 사용자는 티켓 카운터로 감 1. 유효한 쿠폰을 보여줌 2. 특정 장소에 가서 영화에 대해 티켓을 요청 3. 해당 장소에서 필요한 영화 티켓을 수령 3. 사용자는 티켓을 갖고 영화를 보러 감 1. 해당 장소의 해당 영화관의 티켓은 확인 작업을 수행
  • 13. 도식화 • Die HardLocation 1 • Die HardLocation 2 • InceptionLocation 3 Groupon Username: Password: AMC ticket counter [Show Coupon Here] Coupon+ movie + location Success / failure Theaters Steps - Send Username & password - Recv generic coupon [ generic coupon ] -Send coupon, movie-name, screen-name -Recv ticket for movie on screen [ specific movie ticket ] - Send movie ticket
  • 14. 도식화 1. 관람권을 사려는 사람은 쿠폰을 구매하러 감 1. 사용자 및 패스워드를 입력 후 로그인 (인증) 2. AMC에서 활용가능한 월간 쿠폰을 다운로드 2. 사용자는 티켓 카운터로 감 1. 유효한 쿠폰을 보여줌 2. 특정 장소에 가서 영화에 대해 티켓을 요청 3. 해당 장소에서 필요한 영화 티켓을 수령 3. 사용자는 티켓을 갖고 영화를 보러 감 1. 해당 장소의 해당 영화관의 티켓은 확인 작업을 수행 4. 다른 영화 관람을 위해서는 2단계 부터 다시 수행 (SSO) 5. 티켓이 만료된 경우, 2단계 부터 다시 수행 6. 쿠폰을 분실한 경우, 1단계 부터 다시 수행 (리뉴얼)
  • 15. 도식화 • Die HardLocation 1 • Die HardLocation 2 • InceptionLocation 3 Groupon Username: Password: AMC ticket counter [Show Coupon Here] Coupon+ movie + location Success / failure Theaters Steps - Send Username & password - Recv generic coupon [ generic coupon ] -Send coupon, movie-name, screen-name -Recv ticket for movie on screen [ specific movie ticket ] - Send movie ticket
  • 16. KDC Authentication Server Username: Password: Ticket-Granting Server [Show TGT Here] 도식화 케르베로스 인증과 연결 •Service 1 •Service 2Host 1 •Service 1 •Service 2Host 2 •Service 3 Host 3 Service Ticket for Service 1 at Host 2 Success / failure Cluster Meaning Steps - authenticate - Gets TGT -Send Username & password - Recv generic coupon [ TGT ] [ generic coupon ] -Send TGT, service- name, host-name -Recv ST for service on host -Send coupon, movie-name, screen-name -Recv ticket for movie on screen [ ST for specific service + host] [ specific movie ticket ] - Send service ticket - Send movie ticket
  • 17. • Realm • 전체 사용자랑 호스트가 있는 그룹 • 다른 네트워크 도메인 가능 • 예. VERTICACORP.COM, COMPANY.COM • Principals (primary/instance@REALM) • User-principals • u1@VERTICACORP.COM • u1/admin@VERTICACORP.COM • Service-principals • Vertica/eng001.verticacorp.com • Hadoop/eng002.verticacorp.com • KDC (Key Distribution Center / Kerberos Server) – 키 서버: • Authentication Server (AS): • 로그인 제공 • kadmind • Ticket-Granting Server (TGS): • 티켓 발급 • krb5kdc 케르베로스 관련 용어 • Ticket-Granting Ticket (TGT) • 인증을 수행 – kinit 사용 • 서비스 티켓을 요청하는데 사용 • 로컬 머신에 캐시로 저장 • Service Ticket • TGT 가 있어야 획득 가능 • 특정 서비스를 위해 획득 • Keytab (Key-table file) • Principals 그룹에 대한 암호화 키를 보유 • plaintext • 사용법: • kinit 으로 수행 (클라이언트) • 서비스 티켓 검증 (서버) • Acl’s (접근 제어): • 예) - */admin@VERTICACORP.COM *
  • 18. 서비스를 케르베로스화 (‘Kerberizing’) 하기 Kerberizing a Service ▪ 케르베로스 서버 설정 ▪ 등록하고자 하는 서비스를 service principals 로 추가 - HDFS 클러스터, Vertica 클러스터 등 ▪ 케르베로스화 된 서비스에 접근하고자 하는 유저는 케르베르스 서버에 등록이 되어야 함 - User Principal 로 등록 ▪ User (클라이언트) 는 반드시 특정 서비스 접근을 위해 KDC에 권한을 요청할 수 있어야 함 ▪ 서비스는 해당 티켓을 확인 후 서비스를 제공할 수 있어야 함
  • 19. Vertica - Kerberos 연동하기
  • 20. 케르베로스 연동의 목적 ▪ 단순 인증 서버로 활용 - LDAP 과 유사한 활용 ▪ 케르베로스 연동이 된 HDFS 와 연결할 때 적용 - 가장 많이 활용되는 예
  • 21. 케르베로스 인증 vs LDAP 인증 ▪ 케르베로스 인증: - 클라이언트에서 더 많은 작업 수행 - 버티카 클러스터는 KDC와 통신이 불필요 LDAP server Verticavsql LDAP authentication Kerberos server Verticavsql Kerberos authentication pwd pwd ST kinit
  • 22. KDC Authentication Server Username: Password: Ticket-Granting Server [Show TGT Here] Kerberos DB u1@EXAMPLE.COM u1/admin@EXAMPLE.COM u2@EXAMPLE.COM Vertica/host1@EXAMPLE.COM Vertica/host2@EXAMPLE.COM Vertica/host3@EXAMPLE.COM (1) 버티카 접속에 필요한 Principal 들
  • 23. KDC(2) keytab file 복사 ▪ 생성된 Keytab 파일을 버티카 노드에 복사 - 1개의 파일 - 추후 노드 추가시 새로 Keytab을 복사 •Vertica •Service 2Host 1 •Vertica •Service 2Host 2 •Vertica Host 3 Authentication Server Username: Password: Ticket-Granting Server [Show TGT Here] Cluster Kerberos DB u1@EXAMPLE.COM u1/admin@EXAMPLE.COM u2@EXAMPLE.COM Vertica/host1@EXAMPLE.COM Vertica/host2@EXAMPLE.COM Vertica/host3@EXAMPLE.COM
  • 24. (3) 주요 확인 사항들 ▪ 버티카 서버 재기동 필요 ▪ kerberos_config_check() - knobs, keytab 등 확인 Parameter Meaning Comments KerberosServiceName vertica/hostname@REALM Defaults to ‘vertica’ KerberosHostname service/host1.verticacorp.com@REALM If empty, gethostname() is used KerberosRealm service/hostname@EXAMPLE.COM Matched against incoming user’s realm KerberosKeytabFile File path for keytab file - Must be owned by vertica linux user - Permissions = 600
  • 25. (4) Kerberos ClientAuthentication 방법 ▪ CREATE AUTHENTICATION krb METHOD ‘gss’ HOST ‘0.0.0.0/0’; ▪ ALTER AUTHENTICATION v_kerberos enable; ▪ GRANT AUTHENTICATION krb TO u1;
  • 26. (5) 케르베로스 인증을 통한 로그인 Service Ticket for vertica/host2.example.com@EXAMPLE.COM Success / failure KDC Authentication Server Username: Password: Ticket-Granting Server [Show TGT Here] •Vertica •Service 2Host 1 •Vertica •Service 2Host 2 •Vertica Host 3 Cluster Meaning Steps - authenticate - Gets TGT Kinit u1@EXAMPLE.COM [ TGT ] -Send TGT, service- name, host-name -Recv ST for service on host Vsql –U u1 -k vertica -K host2.example.com -h host2.example.com [ ST for specific service + host] - Send service ticket Kerberos DB u1@EXAMPLE.COM u1/admin@EXAMPLE.COM u2@EXAMPLE.COM Vertica/host1@EXAMPLE.COM Vertica/host2@EXAMPLE.COM Vertica/host3@EXAMPLE.COM • Host2’s keytab needs to at least contain entries for vertica/host2.example.com (ie.-k/-K )
  • 27. Active Directory 연동시 추가 고려할 점 27 클러스터당 2개의 Principal 이 필요 ▪ Active Directory (윈도우 서버) 환경의 케르베로스와 연동시, 추가 작업이 필요 - OS간 호환성으로 내부의 인증 문제에서 기인 ▪ 버티카에 대한 Principal 과 해당 호스트 (노드)에 관한 Principal 이 2개 필요 - 예) 3노드 클러스터면 6 개의 Principal이 필요 + 자원에 접근할 유저는 추가로 필요 ▪ 해당 매뉴얼 참고
  • 28. 케르베로스 인증 디버깅 • klist • Credentials cache 정보 • keytab 엔트리 (with –k <keytab>) • Kdestroy – Credentials cache 클리어 • Vertica.log • knobs – parameter_name ilike ‘%kerb%’; • export KRB5_TRACE=<파일명> • Filename = blah.txt, /dev/stdout 등 • krb 라이브러리 trace logs • 서버에서 stdout 구동시 재기동 필요 • 모든 사용자 및 권한이 맞게 설정된지 확인 • kerberos_config_check() • 버티카의 케르베로스 연동 기능 확인 • /etc/hosts : 호스트 정보 확인 • /etc/krb5.conf • Realm 과 host 정보 확인 • KDC 서버 구동 여부 확인 • kadmin (또는 kadmin.local) • List_principals – 모든 사항이 등록되어 있는지 확인
  • 30. 배경 30 스크립트 구성 정보 ▪ 버티카 클러스터는 3대라고 가정 - Principal은 임으로 지을 수 있으나, Vertica의 Principal은 “vertica-node-<번호>” 로 지음 - (Active Directory 의 경우) Host의 Principal은 “host-node-<번호>” 로 지음 - hostname은 “vnode<번호>”라고 가정 - 실제 케르베로스 인증에 사용할 사용자 계정은 verticauser 로 가정 ▪ Realm이 될 전체 도메인 정보는 다음과 같이 가정 - 하둡 클러스터와 같은 Realm을 사용함 - BIGDATA.COMPANY.COM로 가정 - 즉, hostname은 vnode1.bigdata.company.com 과 같이 설정됨
  • 31. 케르베로스 자원 등록 Linux 환경의 경우 ▪ Vertica 노드의 Principal 등록 - dsadd user "CN=[버티카 Principal],CN=Users,DC=[Relam 정보 (. 단위로 구분)] " -pwd [패스워드(사용안함)] -canchpwd no -pwdneverexpires yes - dsadd user "CN=vertica-node-1,CN=Users,DC=BIGDATA,DC=COMPANY,DC=COM" -pwd vertica1@ -canchpwd no -pwdneverexpires yes - dsadd user "CN=vertica-node-2,CN=Users,DC=BIGDATA,DC=COMPANY,DC=COM" -pwd vertica1@ -canchpwd no -pwdneverexpires yes - dsadd user "CN=vertica-node-3,CN=Users,DC=BIGDATA,DC=COMPANY,DC=COM" -pwd vertica1@ -canchpwd no -pwdneverexpires yes
  • 32. 케르베로스 자원 등록 Active Directory 환경의 경우 – 추가 작업 수행 ▪ Active Directory 연결을 위한 HOST 추가 등록 - dsadd user "CN=[호스트 Principal],CN=Users,DC=[Relam 정보 (. 단위로 구분)] " –pwd [패스워드(사용안함)] –canchpwd no –pwdneverexpires yes - dsadd user "CN=host-node-1,CN=Users, DC=BIGDATA,DC=COMPANY,DC=COM" -pwd vertica1@ -canchpwd no -pwdneverexpires yes - dsadd user "CN=host-node-2,CN=Users, DC=BIGDATA,DC=COMPANY,DC=COM" -pwd vertica1@ -canchpwd no -pwdneverexpires yes - dsadd user "CN=host-node-3,CN=Users, DC=BIGDATA,DC=COMPANY,DC=COM" -pwd vertica1@ -canchpwd no -pwdneverexpires yes
  • 33. 케르베로스 자원 등록 33 유저 Principal ▪ 버티카 클러스터에 실제로 접근할 User Principal 생성 - dsadd user "CN=[유저 Principal],CN=Users,DC=[Relam 정보 (. 단위로 구분)] " –pwd [패스워드(사용안함)] –canchpwd no –pwdneverexpires yes - dsadd user "CN=verticauser, CN=Users, DC=BIGDATA,DC=COMPANY,DC=COM " -pwd vertica1@ -canchpwd no -pwdneverexpires yes
  • 34. 케르베로스 자원 등록 34 Principal Setting ▪ User Principal 에 접근 권한을 부여 - setspn -s [User]/[노드 명].[도메인 전체] [Realm 앞 –대문자][Vertica Principal (번호 일치)] - setspn -s verticakerberos/vnode1.bigdata.company.com BIGDATAvertica-node-1 - setspn -s verticakerberos/vnode2.bigdata.company.com BIGDATAvertica-node-2 - setspn -s verticakerberos/vnode3.bigdata.company.com BIGDATAvertica-node-3
  • 35. 케르베로스 자원 등록 35 Principal Setting – Active Directory 추가 작업 ▪ User Principal 에 Host 접근 권한을 부여 - setspn -s host/[노드 명].[도메인 전체] [Realm 앞 –대문자][Host Principal (번호 일치)] - setspn -s host/vnode1.bigdata.company.com BIGDATAhost-node-1 - setspn -s host/vnode2.bigdata.company.com BIGDATAhost-node-2 - setspn -s host/vnode3.bigdata.company.com BIGDATAhost-node-3
  • 36. Active Directory 추가 사항 36 Principal 들에 대한 권한 위임 설정 ▪ Principal -> 속성 -> 권한 위임 설정 ▪ 두번째, 혹은 세번째 권한 위임 옵션 선택 - 권장은 세번째
  • 37. Keytab File 생성 37 Key File– Active Directory 추가 작업 ▪ 해당 Vertica Principal들을 바탕으로 Keytab 파일들을 생성 - ktpass -out [출력 파일].keytab –princ [User Princiapal]/[노드 명].[도메인 전체]@[Realm 앞 – 대문자] -mapuser [Realm 앞 –대문자][Vertica Principal] -mapop set -pass vertica1@ - ptype KRB5_NT_PRINCIPAL - ktpass -out vertica-node-1.keytab -princ verticauser/vnode1.bigdata.company.com@BIGDATA -mapuser BIGDATAvertica-node-1 -mapop set -pass vertica1@ -ptype KRB5_NT_PRINCIPAL - ktpass -out vertica-node-2.keytab -princ verticauser/vnode2.bigdata.company.com@BIGDATA -mapuser BIGDATAvertica-node-2 -mapop set -pass vertica1@ -ptype KRB5_NT_PRINCIPAL - ktpass -out vertica-node-3.keytab -princ verticauser/vnode3.bigdata.company.com@BIGDATA -mapuser BIGDATAvertica-node-3 -mapop set -pass vertica1@ -ptype KRB5_NT_PRINCIPAL
  • 38. Keytab File 생성 38 Key File– Active Directory 추가 작업 ▪ 해당 Host Principal의 Keytab 파일들을 생성 - ktpass -out [출력 파일].keytab –princ [User Princiapal]/[노드 명].[도메인 전체]@[Realm 앞 – 대문자] -mapuser [Realm 앞 –대문자][Vertica Principal] -mapop set -pass vertica1@ - ptype KRB5_NT_PRINCIPAL - ktpass -out host-node-1.keytab -princ host/vnode1.bigdata.company.com@BIGDATA - mapuser BIGDATAhost-node-1 -mapop set -pass vertica1@ -ptype KRB5_NT_PRINCIPAL - ktpass -out host-node-2.keytab -princ host/vnode1.bigdata.company.com@BIGDATA - mapuser BIGDATAhost-node-2 -mapop set -pass vertica1@ -ptype KRB5_NT_PRINCIPAL - ktpass -out host-node-3.keytab -princ host/vnode1.bigdata.company.com@BIGDATA - mapuser BIGDATAhost-node-3 -mapop set -pass vertica1@ -ptype KRB5_NT_PRINCIPAL
  • 39. Keytab File 병합 39 kutil 을 이용 ▪ 출력된 6개의 Keytab 파일을 하나로 병합 - kutil 이용 - read_kt <키 파일 이름> : 병합할 키 파일 추가 - list : 병합할 키 파일 리스트 확인 - write_kt <키 병합 출력 파일> : 최종 출력 파일 ▪ 작업 후 통합된 keytab 파일은 버티카 서버들로 각각 모두 복사
  • 40. 버티카 서버 측 작업 40 Vertica 내의 설정 – 서버 설정 ▪ 데이터베이스에서 Kerberos 활성화를 위한 값 세팅 - alter database <데이터베이스명> set kerberosServiceName=‘[서비스명: 예시에서는 verticakerberos]’, KerberosRealm='[Realm정보: 예시에서는 BIGDATA]’, KerberosKeytabFile=‘<각 노드에 복사된 병합 키탭 파일 위치>’, KerberosTicketDuration=80000;
  • 41. 버티카 서버 측 작업 41 Vertica 내의 설정 – 사용자 생성 ▪ 케르베로스 사용자와 일치하는 사용자 계정 필요 - CREATE USER verticauser; - CREATE AUTHENTICATION v_kerberos method 'gss' host '0.0.0.0/0’; - ALTER AUTHENTICATION v_kerberos enable; - GRANT AUTHENTICATION v_kerberos to verticauser;
  • 42. 접속 수행 42 KDC에서 키 수령 후 접속 수행 ▪ KDC의 키 수령은 kinit을 활용 - kinit verticauser - vsql -U verticauser -k verticakerberos -K vnode1.bigdata.company.com -h vnode1.bigdata.company.com
  • 44. 44 ▪ 케르베로스는 인증 프로토콜로 활용 - KDC 서버에서 티켓 발급 후 캐싱 정보로 접근 - 주로 하둡의 인증 환경으로 적용 ▪ 버티카는 케르베로스 연동을 지원 - 버티카-하둡 연계시, 하둡에 케르베로스 적용 사례가 많음 - 버티카에 단순 인증 서버로도 활용 가능 ▪ 버티카는 케르베로스 연동시 트러블 슈팅 방안 지원 - 다양한 함수 지원 - 다양한 프로그램으로 로그 파일 제공 버티카 케르베로스 인증