2019년 4월 30일 버티카 웨비나 진행 자료
주제: Kerberos Authentication - 버티카 케르베로스 연동하기
버티카가 하둡 환경과 연동하는 환경에서는 종종 케르베로스가 구성되어 있는 경우가 많습니다. 이번 웨비나에서는 케르베로스에 대한 이해와 버티카와 케르베로스 연동 시 진행해야 하는 작업에 대해 안내해 드리도록 하겠습니다.
웨비나 녹화 링크: https://www.youtube.com/watch?v=c9-H8nsSgm0
오픈 소스 Actor Framework 인 Akka.NET 을 통해 온라인 게임 서버를 어떻게 구현할 수 있는지를 설명합니다. Actor Model 에 대한 기본 이해부터 Scale-out 가능한 게임 서버 구축까지 전반적인 내용에 대해 알 수 있습니다. 설명을 위해 클라이언트는 Unity3D 를 사용할 예정입니다.
오픈 소스 Actor Framework 인 Akka.NET 을 통해 온라인 게임 서버를 어떻게 구현할 수 있는지를 설명합니다. Actor Model 에 대한 기본 이해부터 Scale-out 가능한 게임 서버 구축까지 전반적인 내용에 대해 알 수 있습니다. 설명을 위해 클라이언트는 Unity3D 를 사용할 예정입니다.
SMARTSTUDY 에서 몬스터 슈퍼 리그를 개발하면서 빠른 개발 진행을 위해 선택했던 Python 게임 서버, '잘 되면 다시 만들지 뭐'라는 생각에서 시작했지만 다시 만들 일은 영원히 오지 않았습니다... Python으로 게임 서버를 만들었을 때 사용한 것은 무엇인지 또 실제 오픈 했을 때 서버는 안녕했는지 알아봅니다.
[IGC 2017] AWS 김필중 솔루션 아키텍트 - AWS 를 활용한 모바일 백엔드 개발강 민우
모바일 게임에는 사용자 인증, 컨텐츠 제공, 데이터 저장 및 분석은 물론 모네타이제이션을 위한 다양한 기능들의 개발이 요구됩니다. 이를 위해 AWS 를 활용하여 필요한 백엔드를 간단하지만 유저가 많아져도 항상 예측 가능한 성능으로, 또 사용한 만큼만 비용이 발생하는 형태로 구현할 수 있는 방법을 소개합니다.
오픈스택 커뮤니티 - 제1회 공개 SW 커뮤니티데이 (2017년 9월 정기 세미나 대체)
- 일시: 9월 22일 금요일
- 발표자: 장태희 (운영진, 스터디 매니저)
- 행사 정보: https://www.facebook.com/groups/openstack.kr/permalink/1826976907316452/
멀티플레이어 게임을 서비스하는 데 필요한 게임 장르별 백엔드 아키텍처에 대한 설명해 드립니다. 기본적인 게임의 상태 동기화 개념과 서버 구성에 관한 이야기, 게임 클라이언트 엔진(Unity, Lumberyard, Unreal Engine 등)에서 제공하는 복제 프레임워크를 통하여 손쉽게 게임 서버를 만드는 방법에 대한 내용을 다룹니다. 또한, 이렇게 만들어진 게임 서버를 Amazon GameLift라는 클라우드 서비스를 통해 DevOps형태의 비용 효율적으로 서비스하는 방법에 대해 소개합니다.
데브시스터즈의 Cookie Run: OvenBreak 에 적용된 Kubernetes 기반 다중 개발 서버 환경 구축 시스템에 대한 발표입니다.
Container orchestration 기반 개발 환경 구축 시스템의 필요성과, 왜 Kubernetes를 선택했는지, Kubernetes의 개념과 유용한 기능들을 다룹니다. 아울러 구축한 시스템에 대한 데모와, 작업했던 항목들에 대해 리뷰합니다.
*NDC17 발표에서는 데모 동영상을 사용했으나, 슬라이드 캡쳐로 대신합니다.
SMARTSTUDY 에서 몬스터 슈퍼 리그를 개발하면서 빠른 개발 진행을 위해 선택했던 Python 게임 서버, '잘 되면 다시 만들지 뭐'라는 생각에서 시작했지만 다시 만들 일은 영원히 오지 않았습니다... Python으로 게임 서버를 만들었을 때 사용한 것은 무엇인지 또 실제 오픈 했을 때 서버는 안녕했는지 알아봅니다.
[IGC 2017] AWS 김필중 솔루션 아키텍트 - AWS 를 활용한 모바일 백엔드 개발강 민우
모바일 게임에는 사용자 인증, 컨텐츠 제공, 데이터 저장 및 분석은 물론 모네타이제이션을 위한 다양한 기능들의 개발이 요구됩니다. 이를 위해 AWS 를 활용하여 필요한 백엔드를 간단하지만 유저가 많아져도 항상 예측 가능한 성능으로, 또 사용한 만큼만 비용이 발생하는 형태로 구현할 수 있는 방법을 소개합니다.
오픈스택 커뮤니티 - 제1회 공개 SW 커뮤니티데이 (2017년 9월 정기 세미나 대체)
- 일시: 9월 22일 금요일
- 발표자: 장태희 (운영진, 스터디 매니저)
- 행사 정보: https://www.facebook.com/groups/openstack.kr/permalink/1826976907316452/
멀티플레이어 게임을 서비스하는 데 필요한 게임 장르별 백엔드 아키텍처에 대한 설명해 드립니다. 기본적인 게임의 상태 동기화 개념과 서버 구성에 관한 이야기, 게임 클라이언트 엔진(Unity, Lumberyard, Unreal Engine 등)에서 제공하는 복제 프레임워크를 통하여 손쉽게 게임 서버를 만드는 방법에 대한 내용을 다룹니다. 또한, 이렇게 만들어진 게임 서버를 Amazon GameLift라는 클라우드 서비스를 통해 DevOps형태의 비용 효율적으로 서비스하는 방법에 대해 소개합니다.
데브시스터즈의 Cookie Run: OvenBreak 에 적용된 Kubernetes 기반 다중 개발 서버 환경 구축 시스템에 대한 발표입니다.
Container orchestration 기반 개발 환경 구축 시스템의 필요성과, 왜 Kubernetes를 선택했는지, Kubernetes의 개념과 유용한 기능들을 다룹니다. 아울러 구축한 시스템에 대한 데모와, 작업했던 항목들에 대해 리뷰합니다.
*NDC17 발표에서는 데모 동영상을 사용했으나, 슬라이드 캡쳐로 대신합니다.
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달
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에 권한을 요청할 수 있어야 함
▪ 서비스는 해당 티켓을 확인 후 서비스를 제공할 수 있어야 함
20. 케르베로스 연동의 목적
▪ 단순 인증 서버로 활용
- LDAP 과 유사한 활용
▪ 케르베로스 연동이 된 HDFS 와 연결할 때 적용
- 가장 많이 활용되는 예
21. 케르베로스 인증 vs LDAP 인증
▪ 케르베로스 인증:
- 클라이언트에서 더 많은 작업 수행
- 버티카 클러스터는 KDC와 통신이 불필요
LDAP
server
Verticavsql
LDAP authentication
Kerberos
server
Verticavsql
Kerberos authentication
pwd
pwd
ST
kinit
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 서버에서 티켓 발급 후 캐싱 정보로 접근
- 주로 하둡의 인증 환경으로 적용
▪ 버티카는 케르베로스 연동을 지원
- 버티카-하둡 연계시, 하둡에 케르베로스 적용 사례가 많음
- 버티카에 단순 인증 서버로도 활용 가능
▪ 버티카는 케르베로스 연동시 트러블 슈팅 방안 지원
- 다양한 함수 지원
- 다양한 프로그램으로 로그 파일 제공
버티카 케르베로스 인증