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. kkeytabまたは 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)