Secure Hadoop 외부 서비스에서 접근

Prev Next

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)