在 LDAP/Active Directory 上启用 TLS#
要在 LDAP/Active Directory 上启用安全传输层安全 (TLS) 连接,请将以下内容添加到文件 $PREFIX/etc/anaconda-server/config.yaml
的 LDAP 配置部分,并将 /path/to/certfile
替换为 certfile 的实际路径。
LDAP:
... # Rest of the LDAP config
START_TLS: true,
OPTIONS:
OPT_PROTOCOL_VERSION: 3
OPT_X_TLS_DEMAND: true
OPT_X_TLS_REQUIRE_CERT: 'OPT_X_TLS_NEVER'
OPT_X_TLS_CACERTFILE: '/path/to/certfile'
注意: START_TLS
与 LDAPS
不兼容。 使用 START_TLS
时,LDAP 配置部分中的 URI
值必须以 ldap://
开头。 使用 START_TLS
时,连接以常规连接开始,并在建立连接后升级为使用 TLS。
如果您使用的是自签名证书,则需要在 LDAP
选项的 OPTIONS
字段中添加 OPT_X_TLS_NEWCTX
作为最后一项
LDAP:
... # Rest of the LDAP config
START_TLS: true,
OPTIONS:
OPT_PROTOCOL_VERSION: 3
OPT_X_TLS_DEMAND: true
OPT_X_TLS_REQUIRE_CERT: 'OPT_X_TLS_NEVER'
OPT_X_TLS_CACERTFILE: '/path/to/certfile'
OPT_X_TLS_NEWCTX: 0
使用 LDAP 和 TLS 配置选项#
URI#
首先设置 URI 以指向您的服务器。 此设置的值可以是您的 LDAP 库支持的任何内容。 例如,openldap
可能允许您提供以逗号或空格分隔的 URI 值列表,以便按顺序尝试。
BIND_DN#
使用 BIND_AUTH 绑定到 LDAP 服务器时要使用的 distinguished name。 对于匿名绑定,请使用空字符串(默认值)。
BIND_AUTH#
与 BIND_DN 一起使用的密码。
USER_SEARCH#
一个在目录中查找用户的字典。 dict 对象必须包含必需的条目 base
和 filter
,并且可能包含可选条目 scope
。
base:要搜索的 base DN。
filter:应包含用户名的占位符
%(username)s
。scope:
LDAP_SCOPE_BASE
、LDAP_SCOPE_ONELEVEL
或LDAP_SCOPE_SUBTREE
之一。
示例
{'base': 'dc=example,dc=com', 'filter': 'uid=%(username)s'}
SUPERUSER_SEARCH#
一个 dict,用于确定有效用户是否为超级用户。 dict 对象必须包含必需的条目 base
和 filter
,并且可能包含可选条目 scope
。 如果搜索成功,则 LDAP 服务器会返回内容,并且用户将被授予超级用户权限。
base:要搜索的 base DN。
filter:应包含用户名的占位符
%(username)s
。scope:
LDAP_SCOPE_BASE
、LDAP_SCOPE_ONELEVEL
或LDAP_SCOPE_SUBTREE
之一。
例如
{'base': 'cn=admin,ou=Groups,dc=example,dc=com', 'filter': 'memberUid=%(username)s'}
请注意,此检查在登录过程中完成,因此即使权限可能已从 LDAP 服务器中删除(或添加到 LDAP 服务器),用户也必须再次进行身份验证才能看到更改。
ENABLE_GROUPS#
此属性启用 LDAP 组同步,允许用户与 LDAP 目录同步组成员身份。 默认为 false
。
示例
ENABLE_GROUPS: true
GROUP_SEARCH#
一个在目录中查找组的字典。 使用 base
distinguished name 和 filter
执行 LDAP 搜索。
注意: 与 USER_SEARCH
不同,您必须在 GROUP_SEARCH 过滤器周围加上括号。 即使没有括号似乎也可以工作,但实际上它会失败或行为不可预测。
示例
GROUP_SEARCH:
base: dc=example,dc=com
filter: (objectClass=group)
注意: Anaconda Enterprise 4 Repository 假定组的 objectClass
是 groupOfNames
(或兼容的模式)。 以下 LDIF 代码段显示了一个示例组实例
dn: cn=Analysts,ou=Anaconda Groups,dc=example,dc=com
cn: Analysts
member: cn=John Doe,ou=Users,dc=example,dc=com
member: cn=Jane Doe,ou=Users,dc=example,dc=com
member: cn=John Q. Public,ou=Users,dc=example,dc=com
member: cn=Guy Incognito,ou=Users,dc=example,dc=com
objectclass: groupOfNames
objectclass: top
GROUP_MEMBERS_ATTR#
组对象上指示组成员用户的 LDAP 属性。 默认为 member
。
示例
GROUP_MEMBERS_ATTR: 'member'
注意:Anaconda Enterprise 4 Repository 假定组的 objectClass 是 groupOfNames(或兼容的模式)。
REFRESH_INTERVAL#
从 LDAP 获取的组成员身份信息在再次从目录服务器获取之前使用的秒数。 默认为 3600
,即 1 小时。
示例
REFRESH_INTERVAL: 600
KEY_MAP#
这是一个将应用程序上下文映射到 LDAP 的字典。 应用程序可能期望用户数据保持一致,并非所有 LDAP 设置都使用相同的配置
'application_key': 'ldap_key'
示例
KEY_MAP={'name': 'cn', 'company': 'o', 'email': 'mail'}
START_TLS#
如果 true
,则与 LDAP 服务器的每个连接都会调用 start_tls_s()
以在标准 LDAP 端口上启用 TLS 加密。 可以为 OPTIONS 提供许多配置选项,这些选项会影响 TLS 连接。 例如,OPT_X_TLS_REQUIRE_CERT 可以设置为 OPT_X_TLS_NEVER
以禁用证书验证,可能是为了允许自签名证书。
OPTIONS#
这存储 LDAP 特定选项。
示例
LDAP:
OPTIONS:
OPT_PROTOCOL_VERSION: 3
OPT_X_TLS_REQUIRE_CERT: 'OPT_X_TLS_NEVER'
TLS—安全 LDAP#
要启用安全 TLS 连接,您必须将 START_TLS 设置为 true
。 OPTIONS 有许多配置选项,这些选项会影响 TLS 连接。
示例:OPT_X_TLS_REQUIRE_CERT 设置为 OPT_X_TLS_NEVER
禁用证书验证,可能是为了允许自签名证书
LDAP:
START_TLS: true
OPTIONS:
OPT_PROTOCOL_VERSION: 3
OPT_X_TLS_DEMAND: true
OPT_X_TLS_REQUIRE_CERT: 'OPT_X_TLS_NEVER'
OPT_X_TLS_CACERTFILE: '/path/to/certfile'