일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- HIVE
- yarn
- LDAP
- re
- slack
- jupyter
- hadoop
- execution_date
- ambari
- slack app
- java
- NoSQL
- Example DAG
- HBase
- 람다 아키텍처
- Kafka
- Namenode
- MapReduce
- HDP
- Windows
- airflow
- python
- SlackWebhookOperator
- 빅데이터
- 정규표현식
- Service
- docker
- HDFS
- Scala
- Lambda architecture
- Today
- Total
IT 삽질기
Hadoop Kerberos 인증과정 본문
오늘은 Kerberos가 무엇인지 간단하게 알아보고 Hadoop에서 Kerberos를 이용한 인증과정에 대해서 알아보도록 하자.
Kerberos란?
Kerberos란 ticket를 기반으로 동작하는 컴퓨터 네트워크 인증 암호화 프로토콜로 네트워크에서 통신하는 노드가 보안 방식으로 다른 노드에 대해 식별할 수 있게 허용하며, client-server모델로 동작하며 상호 인증을 제공한다.
Kerberos로 보안 설정이 되어 있는 시스템에 접근하고자 하는 경우 서버는 클라이언트에 Kerberos티켓을 요구하며, 사용자는 Kerberos 티켓을 이용해 원하는 서버에 접근할 수 있게 된다.
Kerberos 동작 방식
Kerberos 인증 과정은 어떻게 진행될까
1. 인증
Client는 인증 서버에 자신을 인증하고 시간 정보가 포함된 승인 티켓(Ticket-Granting Ticket, TGT)을 받는다
2. 권한 부여
Client는 TGT는 이용해 티켓 승인 서버에 서비스 티켓을 요청한다. 인증 서버와 티켓 승인 서버는 서로 다른 역할을 하는 서버로 물리적으로도 다른 서버에 존재할 수 있다.
3. 서비스 요청
서비스 티켓을 이용해 사용할 서비스를 제공하는 서버에 자신을 인증하여 접근한다.
인증 서버와 티켓 승인 서버는 키 분배 센터(Key Distribution Center, KDC)를 따로 구성하여 사용하는 것을 권장하며, HDP를 사용하는 경우에도 포함되어 있지 않아 별도로 구축해야 한다.
Client는 이렇게 구축이 완료된 KDC에 인증 티켓을 요청해 받게 되고, kinit명령어를 통해 받을 수 있다.
인증키는 매번 갱신할 필요는 없으며 기본적으로는 10시간 동안 사용할 수 있다.
Hadoop에서는 Kerberos인증을 사용하기 위해 core-site.xml에 있는 hadoop.security.authentication 속성 값을 Kerberos로 설정하여 사용한다.
Hadoop 내부에서의 동작
사용자는 위에서 설명한 것과 같이 kinit명령어를 통해 티켓을 받아 HDFS에 접근할 수 있게 된다. 내부적으로는 어떤일이 일어날까?
HDFS 읽기 연산이 실행되는 경우 먼저 NameNode를 호출하고 데이터를 받아오기 위해 다수의 DataNode를 호출할 수도 있다. 이런 경우 각 Server별로 티켓을 발급받게 되면 KDC에 높은 부하가 발생하게 되는데, 이를 방지하기 위해 위임 토큰이라는 개념이 사용된다. 위임 토큰은 Hadoop이 내부적으로 생성해 사용되므로 사용자와 KDC는 이 과정에 관여하지 않는다.
위임 토큰 발급 과정과 몇 가지 예를 살펴보도록 하자.
위임 토큰
먼저 Kerberos로 부터 티켓을 받은 상황을 가정한다. Kerberos로 부터 티켓을 발급받는 과정은 해당 글의 위에서 설명한 내용과 같다.
Client가 NameNode RPC 호출
최초로 RPC 호출이 진행되는 경우 위임 토큰이 없기 때문에 Kerberos인증을 완료한 후 NameNode는 응답의 일부로 위임 토큰을 추가해 제공한다. 위임 토큰을 받은 Client는 서버에 인증상태가 되며, 이후에는 위임 토큰을 사용한다
Client가 HDFS 블록에 대한 접근이 필요한 경우
Client가 HDFS 블록에 접근하려는 경우 NameNode로 부터 메타데이터를 전달받는데 이 응답에는 블록 접근 토큰이라는 특별한 종류의 위임 토큰을 사용한다. 이 토큰이 있므녀 Client는 DataNode에 인증이 가능하게 되며 보안취약점을 없애 준다. 해당 기능을 사용하기 위해서는 dfs.block.access.token.enable 값을 true로 설정한다.
오늘은 이렇게 Kerberos가 무엇인지 간단하게 살펴보고 Hadoop에서 Kerberos를 인증방식으로 사용하는 경우 어떤 일이 일어나는지 간단하게 알아보았다. Hadoop에서 제공하는 보안 설정 방식중 Kerberos만 있는것은 아니며 다음에는 LDAP에 대한 내용도 알아보도록 하겠다.
참고자료
https://ko.wikipedia.org/wiki/%EC%BB%A4%EB%B2%84%EB%A1%9C%EC%8A%A4
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=dceye&logNo=50036205499
'BigData > Hadoop' 카테고리의 다른 글
Namenode safe mode (0) | 2021.07.28 |
---|---|
Namenode fsimage, edits log (0) | 2021.07.26 |
Yarn NodeManager BindException(Close_wait) (0) | 2021.06.25 |
Hadoop 데이터 직렬화와 RPC(Remote Procedure Call) (0) | 2021.06.11 |
Hadoop MapReduce 기본 동작방식 (0) | 2021.05.20 |