Documentation Index

Fetch the complete documentation index at: https://guide.ncloud-docs.com/llms.txt

Use this file to discover all available pages before exploring further.

Access Secure Hadoop from external services

Prev Next

Available in VPC

To access Secure Hadoop from external services (such as Jupyter Notebook, NKS, and general servers), the set-up of the Kerberos configuration file and the pre-authentication process are required.

1. etc/krb5.conf Configure

  • To access Secure Hadoop from an external server or VM, configure the Kerberos environment information.
  • Copy the content of the /etc/krb5.conf file in the Secure Hadoop edge node.
  • Save the copied content in /etc/krb5.conf of an external server or VM to configure the Kerberos Realm and KDC information.

2. Perform authentication through keytab or kinit

  • Set up the Kerberos authentication before running the source code that accesses Secure Hadoop.

  • Examples of the keytab authentication method.

    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 succeeded: {principal}")
        except subprocess.CalledProcessError as e:
            print(f"[ERROR] kinit failed: {e.stderr.decode().strip()}")
    
    # Usage examples
    principal = "user1@USER.GUIDE"
    keytab_path = "/tmp/user1.keytab"
    
    kinit_with_keytab(principal, keytab_path)
    
  • Examples of the password login method.

    import subprocess
    import getpass
    
    def kinit_with_password(principal: str):
        try:
            # Receive the password entered by the user (hidden process).
            password = getpass.getpass(prompt=f"{principal}'s Kerberos password: ")
    
            # Run kinit with subprocess.
            process = subprocess.run(
                ["kinit", principal],
                input=password.encode(),  # forward the password to stdin.
                stdout=subprocess.PIPE,
                stderr=subprocess.PIPE,
                check=True
            )
    
            print(f"[INFO] kinit succeeded: {principal}")
    
        except subprocess.CalledProcessError as e:
            print(f"[ERROR] kinit failed: {e.stderr.decode().strip()}")
    
    # Usage examples
    principal = "user1@USER.GUIDE"
    kinit_with_password(principal)