【问题标题】:Make an AD/LDAP query without storing username / password as cleartext在不将用户名/密码存储为明文的情况下进行 AD/LDAP 查询
【发布时间】:2019-08-12 10:30:31
【问题描述】:

您好,我正在创建 Cloudera 环境,并希望将其分享给其他团队。该脚本应该查询我们的 Active Directory 服务器。但不幸的是,我不想将我的密码/用户名放在脚本中。

from ldap3 import Server, Connection, ALL, NTLM, ALL_ATTRIBUTES, ALL_OPERATIONAL_ATTRIBUTES, AUTO_BIND_NO_TLS, SUBTREE

serverName = 'internal.imsglobal.com'
server = Server(serverName)
conn = Connection(server, read_only=True, user='',password='', auto_bind=True)

person='somebody'

conn.search('dc=internal,dc=mydomain,dc=com', '(&(givenName=*)(sAMAccountName=*{person}*))'.format(person=person), attributes=[ALL_ATTRIBUTES, ALL_OPERATIONAL_ATTRIBUTES])

no_entries = len(conn.entries)

可以做些什么来避免硬编码凭据? 不幸的是,Cloudera 不允许使用 input 功能或任何交互式功能。

【问题讨论】:

    标签: python python-3.x active-directory lda ldap-query


    【解决方案1】:

    你可以使用 dotenv

    pip install python-dotenv
    

    创建一个包含如下键/值的 .env 文件:

    USERNAME=foo
    PASSWORD=bar
    

    然后加载 .env 文件并访问这些值。

    dotenv_path = join(dirname(__file__), $location_of_.env_file)
    load_dotenv(dotenv_path)
    
    username = os.getenv("USERNAME")
    password = os.getenv("PASSWORD")
    

    【讨论】:

    • @PouyaYousefi 怎么不是?只要 .env 没有提交到存储库并安全地存储在服务器上,这个实现就没有任何问题。我猜你是那种相信云服务提供商来存储你的密钥的开发者。
    • 或者担心谁可以访问我的主目录的人。
    • @PouyaYousefi 这甚至没有任何意义。该解决方案允许您将环境文件放在服务器上的任何位置。问题不在于我如何保护我的 .env ,而在于我如何不让我的用户名和密码出现在我的源代码中。注意。
    • 触摸。得分。
    猜你喜欢
    • 2018-02-06
    • 1970-01-01
    • 2016-09-08
    • 1970-01-01
    • 2016-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多