LDAP Link 的 TLS

Vertica 在两个上下文中建立到 LDAP 服务器的连接,每个上下文都有一个对应的 TLS CONFIGURATION,用于控制每个连接是否应使用 TLS:

  1. LDAPLink:使用 LDAPLink 服务或其试运行功能在 Vertica 和 LDAP 服务器之间同步用户和组。

  2. LDAPAuth:当具有 ldap 身份验证方法的用户尝试登录 Vertica 时,Vertica 会尝试将该用户绑定到 LDAP 服务器中的匹配用户。如果绑定成功,Vertica 将允许用户登录。

查询 TLS_CONFIGURATIONS 以查看现有的 TLS CONFIGURATION:

=> SELECT * FROM tls_configurations WHERE name IN ('LDAPLink', 'LDAPAuth');
   name   |  owner  | certificate | ca_certificate | cipher_suites |  mode
----------+---------+-------------+----------------+---------------+----------
 LDAPLink | dbadmin | client_cert | ldap_ca        |               | VERIFY_CA
 LDAPAuth | dbadmin | client_cert | ldap_ca        |               | DISABLE
(2 rows)

本页介绍了 LDAP Link 服务上下文。有关 LDAP 身份验证上下文的详细信息,请参阅 LDAP 身份验证的 TLS

Vertica 使用 LDAP Link 服务从 LDAP 服务器中检索用户和组,并在数据库中创建相应的用户和角色。要为 LDAP Link 及其试运行函数配置 TLS,请使用以下过程。

此过程使用预定义的 TLS 配置 LDAPLink。要创建自定义 TLS 配置,请参阅TLS 配置

有关密钥和证书生成的详细信息,请参阅生成 TLS 证书和密钥

  1. 如果您希望 Vertica 在建立连接之前验证 LDAP 服务器的证书,请生成或导入 CA 证书并将其添加到 LDAPLink TLS 配置中。

    例如,要导入现有的 CA 证书 LDAP_CA.crt

    => \set ldap_ca '\''`cat ldap_ca.crt`'\''
    => CREATE CA CERTIFICATE ldap_ca AS :ldap_ca;
    CREATE CERTIFICATE
    

    然后,将 ldap_ca CA 证书添加到 LDAPLink:

    ALTER TLS CONFIGURATION LDAPLink ADD CA CERTIFICATES ldap_ca;
    
  2. 如果您的 LDAP 服务器需要验证客户端证书,则必须生成或导入客户端证书及其密钥并将其添加到 LDAPLink TLS 配置中。Vertica 会将此证书提供给 LDAP 服务器以供其 CA 进行验证。

    例如,要导入现有的证书 client.crt(由导入的 CA 签名)和密钥 client.key

    => \set client_key '\''`cat client.key`'\''
    => CREATE KEY client_key TYPE 'RSA' AS :client_key;
    CREATE KEY
    
    => \set client_cert '\''`cat client.crt`'\''
    => CREATE CERTIFICATE client_cert AS :client_cert SIGNED BY ldap_ca KEY client_key;
    CREATE CERTIFICATE
    

    然后,将 client_cert 添加到 LDAPLink:

    => ALTER TLS CONFIGURATION LDAPLink CERTIFICATE client_cert;
    
  3. 通过将 TLSMODE 设置为以下之一来启用 TLS 或 LDAPS(使用的确切协议取决于 AUTHENTICATION 对象中 host 的值)。 TRY_VERIFY 或更高版本需要 CA 证书:

    • ENABLE:启用 TLS。Vertica 不检查 LDAP 服务器的证书。

    • TRY_VERIFY:如果出现以下任一情况,则建立 TLS 连接:

      • LDAP 服务器提供一个有效的证书。

      • LDAP 服务器不提供证书。

      如果 LDAP 服务器提供无效证书,则使用纯文本连接。

    • VERIFY_CA:如果 Vertica 验证 LDAP 服务器的证书来自受信任的 CA,则连接成功。使用此 TLSMODE 会强制所有没有证书的连接使用纯文本。

    • VERIFY_FULL:如果 Vertica 验证 LDAP 服务器的证书来自受信任的 CA 并且 cn(通用名称)或 subjectAltName 属性与 LDAP 服务器的主机名或 IP 地址匹配,则连接成功。

      cn 用于用户名,因此 subjectAltName 必须与 LDAP 服务器的主机名或 IP 地址匹配。

    例如:

    => ALTER TLS CONFIGURATION LDAPLink TLSMODE 'verify_ca';
    ALTER TLS CONFIGURATION
    
  4. 验证 LDAPLinkTLSConfig 参数是否正在使用 TLS 配置:

    => SHOW CURRENT LDAPLinkTLSConfig;
      level  |       name        | setting
    ---------+-------------------+----------
     DEFAULT | LDAPLinkTLSConfig | LDAPLink
    (1 row)
    
  5. 根据您的用例设置 LDAP Link 参数