VPC 환경에서 이용 가능합니다.
외부 서비스(예: Jupyter Notebook, NKS, 일반 서버 등)에서 Secure Hadoop에 접근하려면 해당 환경에 Kerberos 설정 파일 구성과 사전 인증 절차가 필요합니다.
1. etc/krb5.conf 설정
- 외부 서버나 VM에서 Secure Hadoop에 접근하려면 Kerberos 환경 정보를 설정해야 합니다.
- Secure Hadoop의 엣지 노드에서
/etc/krb5.conf파일 내용을 복사합니다. - 외부 서버나 VM의 /etc/krb5.conf에 복사한 내용을 저장하여 Kerberos Realm 및 KDC 정보를 설정합니다.
2. keytab 또는 kinit을 통한 인증 수행
-
Secure Hadoop에 접근하는 소스 코드를 실행 전에 Kerberos 인증을 수행하도록 설정합니다.
-
keytab 인증 방식 예제
import subprocess def kinit_with_keytab(principal: str, keytab_path: str): try: result = subprocess.run( ["kinit", "-kt", keytab_path, principal], check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE ) print(f"[INFO] kinit 성공: {principal}") except subprocess.CalledProcessError as e: print(f"[ERROR] kinit 실패: {e.stderr.decode().strip()}") # 사용 예시 principal = "user1@USER.GUIDE" keytab_path = "/tmp/user1.keytab" kinit_with_keytab(principal, keytab_path) -
패스워드 로그인 방식 예제
import subprocess import getpass def kinit_with_password(principal: str): try: # 사용자에게 비밀번호 입력 받기 (숨김 처리) password = getpass.getpass(prompt=f"{principal}의 Kerberos 비밀번호: ") # subprocess로 kinit 실행 process = subprocess.run( ["kinit", principal], input=password.encode(), # 비밀번호를 stdin으로 전달 stdout=subprocess.PIPE, stderr=subprocess.PIPE, check=True ) print(f"[INFO] kinit 성공: {principal}") except subprocess.CalledProcessError as e: print(f"[ERROR] kinit 실패: {e.stderr.decode().strip()}") # 사용 예시 principal = "user1@USER.GUIDE" kinit_with_password(principal)