进行AD / LDAP查询而不将用户名/密码存储为明文

时间:2019-03-21 14:24:08

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

您好,我正在创建 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 功能或任何交互式功能。

1 个答案:

答案 0 :(得分: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")