使用试运行元函数配置 LDAP Link
Vertica 支持多个元函数,可让您在与 Vertica 同步之前调整 LDAP Link 设置。每个元函数都将 LDAP Link 参数作为实参,并测试 LDAP link 的一个单独部分:
-
LDAP_LINK_DRYRUN_CONNECT 连接 LDAP 服务器。
-
LDAP_LINK_DRYRUN_SEARCH 搜索 LDAP 用户和组。
-
LDAP_LINK_DRYRUN_SYNC 将 LDAP 用户和组映射和同步到其在 Vertica 中的等效项,从而相应地创建和孤立它们。
这些元函数旨在连续使用和测试,且其实参是累积的。也就是说,用于配置 LDAP_LINK_DRYRUN_CONNECT 的参数可用于 LDAP_LINK_DRYRUN_SEARCH,而这些函数的实参可用于 LDAP_LINK_DRYRUN_SYNC。
在移至下一个元函数之前,请务必查询 LDAP_LINK_DRYRUN_EVENTS 系统表以验证每个试运行的结果。
为试运行配置 TLS
与标准 LDAP Link 函数一样,LDAP Link 试运行函数从“LDAPLink”中提取 TLS 配置,以管理 TLS 连接。查询 TLS_CONFIGURATIONS 系统表以查看现有的 TLS 配置。
=> SELECT * FROM tls_configurations WHERE name='LDAPLink';
name | owner | certificate | ca_certificate | cipher_suites | mode
----------+---------+-------------+----------------+---------------+---------
LDAPLink | dbadmin | client_cert | ldap_ca | | DISABLE
(1 row)
有关为 LDAP Link 及其试运行函数配置 TLS 的说明,请参阅 LDAP Link 的 TLS。
配置 LDAP Link 绑定
在配置 LDAP 用户并将其导入 Vertica 之前,您必须先连接或“绑定”LDAP 服务器。连接通过几个参数进行管理。有关每个参数、相关函数、选项和默认值的详细信息,请参阅 LDAP Link 参数。
LDAP_LINK_DRYRUN_CONNECT 需要一个可分辨名称 (DN)、一个通过 LDAP 服务器进行身份验证的密码以及 LDAP 服务器的 URL。
要加密连接,请配置 LDAPLink TLS 配置。
通过为 LDAPLinkBindPswd
实参提供空字符串,您还可以执行匿名绑定(如果 LDAP 服务器允许未经身份验证的绑定)。
=> SELECT LDAP_LINK_DRYRUN_CONNECT('LDAPLinkURL','LDAPLinkBindDN','LDAPLinkBindPswd');
试运行绑定示例
这将测试 CN=amir,OU=QA,DC=dc,DC=com
中 DN 为 ldap://example.dc.com
的 LDAP 服务器连接。
=> SELECT LDAP_LINK_DRYRUN_CONNECT('ldap://example.dc.com','CN=amir,OU=QA,DC=dc,DC=com','password');
ldap_link_dryrun_connect
---------------------------------------------------------------------------------
Dry Run Connect Completed. Query v_monitor.ldap_link_dryrun_events for results.
要检查绑定的结果,请查询系统表 LDAP_LINK_DRYRUN_EVENTS。
=> SELECT event_timestamp, event_type, entry_name, role_name, link_scope, search_base from LDAP_LINK_DRYRUN_EVENTS;
event_timestamp | event_type | entry_name | link_scope | search_base
------------------------------+-----------------------+----------------------+------------+-------------
2019-12-09 15:41:43.589398-05 | BIND_STARTED | -------------------- | ---------- | -----------
2019-12-09 15:41:43.590504-05 | BIND_FINISHED | -------------------- | ---------- | -----------
配置 LDAP Link 搜索
Vertica 和 LDAP 服务器成功建立连接后,您应该配置您的用户和组搜索空间并测试其正确性和效率。
要在 LDAP 服务器上搜索要导入数据库的用户和组,请同时将连接和搜索参数传递给 LDAP_LINK_DRYRUN_SEARCH 元函数。LDAP 服务器会返回一个用户和组列表作为响应,这些用户和组将使用给定参数导入 Vertica。
通过为 LDAPLinkBindPswd
实参提供空字符串,您还可以执行匿名搜索(如果 LDAP 服务器的访问控制列表 (ACL) 配置为允许未经身份验证的搜索)。允许匿名绑定的设置与允许匿名搜索的 ACL 设置不同。
=> SELECT LDAP_LINK_DRYRUN_SEARCH('LDAPLinkURL','LDAPLinkBindDN','LDAPLinkBindPswd','LDAPLinkSearchBase',
'LDAPLinkScope','LDAPLinkFilterUser','LDAPLinkFilterGroup','LDAPLinkUserName','LDAPLinkGroupName',
'LDAPLinkGroupMembers',[LDAPLinkSearchTimeout],['LDAPLinkJoinAttr']);
试运行搜索示例
这将在 LDAP 服务器中搜索用户和组。在这种情况下,LDAPLinkSearchBase
参数指定了 dc.com
域和子范围,它复制了 DN 下的整个子树。
为了进一步筛选结果,该函数将检查 objectClass 属性为 person
和 group
的用户和组。然后,它将搜索组属性 cn
,使用 member
属性识别该组的成员,然后使用属性 uid
识别其中的个人用户。
=> SELECT LDAP_LINK_DRYRUN_SEARCH('ldap://example.dc.com','CN=amir,OU=QA,DC=dc,DC=com','$vertica$','dc=DC,dc=com','sub',
'(objectClass=person)','(objectClass=group)','uid','cn','member',10,'dn');
ldap_link_dryrun_search
--------------------------------------------------------------------------------
Dry Run Search Completed. Query v_monitor.ldap_link_dryrun_events for results.
要检查搜索结果,请查询系统表 LDAP_LINK_DRYRUN_EVENTS。
=> SELECT event_timestamp, event_type, entry_name, ldapurihash, link_scope, search_base from LDAP_LINK_DRYRUN_EVENTS;
event_timestamp | event_type | entry_name | ldapurihash | link_scope | search_base
---------------------------------+------------------+------------------------+-------------+------------+--------------
2020-01-03 21:03:26.411753+05:30 | BIND_STARTED | ---------------------- | 0 | sub | dc=DC,dc=com
2020-01-03 21:03:26.422188+05:30 | BIND_FINISHED | ---------------------- | 0 | sub | dc=DC,dc=com
2020-01-03 21:03:26.422223+05:30 | SYNC_STARTED | ---------------------- | 0 | sub | dc=DC,dc=com
2020-01-03 21:03:26.422229+05:30 | SEARCH_STARTED | ********** | 0 | sub | dc=DC,dc=com
2020-01-03 21:03:32.043107+05:30 | LDAP_GROUP_FOUND | Account Operators | 0 | sub | dc=DC,dc=com
2020-01-03 21:03:32.04312+05:30 | LDAP_GROUP_FOUND | Administrators | 0 | sub | dc=DC,dc=com
2020-01-03 21:03:32.043182+05:30 | LDAP_USER_FOUND | user1 | 0 | sub | dc=DC,dc=com
2020-01-03 21:03:32.043186+05:30 | LDAP_USER_FOUND | user2 | 0 | sub | dc=DC,dc=com
2020-01-03 21:03:32.04319+05:30 | SEARCH_FINISHED | ********** | 0 | sub | dc=DC,dc=com
配置 LDAP Link 同步
配置搜索空间后,您将获取一个用户和组列表。LDAP 同步将 LDAP 用户和组映射到其在 Vertica 中的等效项。LDAPLinkUserName
映射到 Vertica 用户名,LDAPLinkGroupName
映射到 Vertica 角色。
=> SELECT LDAP_LINK_DRYRUN_SYNC('LDAPLinkURL','LDAPLinkBindDN','LDAPLinkBindPswd','LDAPLinkSearchBase',
'LDAPLinkScope','LDAPLinkFilterUser','LDAPLinkFilterGroup','LDAPLinkUserName','LDAPLinkGroupName',
'LDAPLinkGroupMembers',[LDAPLinkSearchTimeout],['LDAPLinkJoinAttr']);
试运行同步示例
要执行试运行以映射从 LDAP_LINK_DRYRUN_SEARCH 返回的用户和组,请将相同的参数作为实参传递给 LDAP_LINK_DRYRUN_SYNC。
=> SELECT LDAP_LINK_DRYRUN_SYNC('ldap://example.dc.com','CN=amir,OU=QA,DC=dc,DC=com','$vertica$','dc=DC,dc=com','sub',
'(objectClass=person)','(objectClass=group)','uid','cn','member',10,'dn');
LDAP_LINK_DRYRUN_SYNC
------------------------------------------------------------------------------------------
Dry Run Connect and Sync Completed. Query v_monitor.ldap_link_dryrun_events for results.
要检查同步结果,请查询系统表 LDAP_LINK_DRYRUN_EVENTS。
=> SELECT event_timestamp, event_type, entry_name, ldapurihash, link_scope, search_base from LDAP_LINK_DRYRUN_EVENTS;
event_timestamp | event_type | entry_name | ldapurihash | link_scope | search_base
---------------------------------+---------------------+------------------------+-------------+------------+--------------
2020-01-03 21:08:30.883783+05:30 | BIND_STARTED | ---------------------- | 0 | sub | dc=DC,dc=com
2020-01-03 21:08:30.890574+05:30 | BIND_FINISHED | ---------------------- | 0 | sub | dc=DC,dc=com
2020-01-03 21:08:30.890602+05:30 | SYNC_STARTED | ---------------------- | 0 | sub | dc=DC,dc=com
2020-01-03 21:08:30.890605+05:30 | SEARCH_STARTED | ********** | 0 | sub | dc=DC,dc=com
2020-01-03 21:08:31.939369+05:30 | LDAP_GROUP_FOUND | Account Operators | 0 | sub | dc=DC,dc=com
2020-01-03 21:08:31.939395+05:30 | LDAP_GROUP_FOUND | Administrators | 0 | sub | dc=DC,dc=com
2020-01-03 21:08:31.939461+05:30 | LDAP_USER_FOUND | user1 | 0 | sub | dc=DC,dc=com
2020-01-03 21:08:31.939463+05:30 | LDAP_USER_FOUND | user2 | 0 | sub | dc=DC,dc=com
2020-01-03 21:08:31.939468+05:30 | SEARCH_FINISHED | ********** | 0 | sub | dc=DC,dc=com
2020-01-03 21:08:31.939718+05:30 | PROCESSING_STARTED | ********** | 0 | sub | dc=DC,dc=com
2020-01-03 21:08:31.939887+05:30 | USER_CREATED | user1 | 0 | sub | dc=DC,dc=com
2020-01-03 21:08:31.939895+05:30 | USER_CREATED | user2 | 0 | sub | dc=DC,dc=com
2020-01-03 21:08:31.939949+05:30 | ROLE_CREATED | Account Operators | 0 | sub | dc=DC,dc=com
2020-01-03 21:08:31.939959+05:30 | ROLE_CREATED | Administrators | 0 | sub | dc=DC,dc=com
2020-01-03 21:08:31.940603+05:30 | PROCESSING_FINISHED | ********** | 0 | sub | dc=DC,dc=com
2020-01-03 21:08:31.940613+05:30 | SYNC_FINISHED | ---------------------- | 0 | sub | dc=DC,dc=com