安全性参数

可使用以下客户端身份验证配置参数和常规安全性参数配置 TLS。

查询 CONFIGURATION_PARAMETERS 系统表以确定哪些级别(节点、会话、用户、数据库)对给定参数有效。

数据库参数

DataSSLParams
此参数已弃用。请改用 data_channel TLS CONFIGURATION。

在数据通道上启用使用 SSL 加密。此参数的值是以逗号分隔的以下内容的列表:

  • SSL 证书(可链接)

  • 对应的 SSL 私钥

  • SSL CA(证书颁发机构)证书。

在设置此参数之前,应该设置 EncryptSpreadComm

在以下示例中,SSL 证书包含两个证书,其中非根 CA 的证书用于验证群集的证书。这称为 SSL 证书链。

=> ALTER DATABASE DEFAULT SET PARAMETER DataSSLParams =
'----BEGIN CERTIFICATE-----<certificate for Cluster>-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----<certificate for non-root CA>-----END CERTIFICATE-----,
-----BEGIN RSA PRIVATE KEY-----<private key for Cluster>-----END RSA PRIVATE KEY-----,
-----BEGIN CERTIFICATE-----<certificate for public CA>-----END CERTIFICATE-----';
DefaultIdleSessionTimeout
指示未设置 IDLESESSIONTIMEOUT 的所有用户的默认会话超时值。例如:
=> ALTER DATABASE DEFAULT SET defaultidlesessiontimeout = '300 secs';
  
DHParams
字符串,至少 2048 位的 Diffie-Hellman 组,形式为:
 -----BEGIN DH PARAMETERS-----...-----END DH PARAMETERS-----

您可以生成自己的或使用 RFC 3526 中指定的预先计算的模指数 (MODP) Diffie-Hellman 组。

对此参数的更改在重启数据库后才会生效。

默认值: RFC 3526 2048 位 MODP 组 14:

  
-----BEGIN DH PARAMETERS-----MIIBCAKCAQEA///////////
JD9qiIWjCNMTGYouA3BzRKQJOCIpnzHQCC76mOxObIlFKCHmONAT
d75UZs806QxswKwpt8l8UN0/hNW1tUcJF5IW1dmJefsb0TELppjf
tawv/XLb0Brft7jhr+1qJn6WunyQRfEsf5kkoZlHs5Fs9wgB8uKF
jvwWY2kg2HFXTmmkWP6j9JM9fg2VdI9yjrZYcYvNWIIVSu57VKQd
wlpZtZww1Tkq8mATxdGwIyhghfDKQXkYuNs474553LBgOhgObJ4O
i7Aeij7XFXfBvTFLJ3ivL9pVYFxg5lUl86pVq5RXSJhiY+gUQFXK
OWoqsqmj//////////wIBAg==-----END DH PARAMETERS-----
  
DoUserSpecificFilteringInSysTables
布尔值,指定非超级用户是否可以查看其他用户的详细信息:
  • 0:用户可以查看其他用户的详细信息。

  • 1:用户只能查看有关自己的详细信息。

默认值: 0

EnableAllRolesOnLogin
布尔值,指定是否在登录时自动启用授予用户的所有角色:
  • 0:不自动启用角色

  • 1:自动启用角色。使用此设置时,用户无需运行 SET ROLE

默认值: 0(禁用)

EnabledCipherSuites
指定哪些 SSL 密码套件用于安全的客户端-服务器通信。对此参数的更改仅适用于新连接。

默认值: Vertica 使用 Microsoft Schannel 默认密码套件。有关详细信息,请参阅 Schannel 文档

EncryptSpreadComm
在控制通道上启用 Spread 加密,设置为以下字符串之一:
  • vertica:指定 Vertica 为数据库群集生成 Spread 加密密钥。

  • aws-kms|key‑name,其中 key‑name 是 iAWS 密钥管理服务 (KMS) 中的命名密钥。在数据库重启时,Vertica 从 KMS 获取命名密钥,而不是生成自己的密钥。

如果参数为空,则 Spread 通信未加密。通常,您应该在修改其他安全参数之前启用此参数。

启用此参数需要重启数据库。

GlobalHeirUsername
字符串,指定哪些用户在删除其所有者后继承对象。此设置可确保保留那些不执行保留操作就会丢失的数据。

将此参数设置为以下字符串值之一:

  • 空字符串:已删除的用户的对象将从数据库中移除。

  • username:将已删除的用户的对象重新分配给 username。如果 username 不存在,Vertica 会创建该用户并将 GlobalHeirUsername 设置为它。

  • <auto>:将已删除的 LDAP 用户的对象重新分配给用户 dbadmin

有关用法的更多信息,请参阅示例

默认值: <auto>

HttpsTLSConfig
用于 HTTPSTLS CONFIGURATION

例如:

=> ALTER DATABASE DEFAULT SET HttpsTLSConfig = my_tls_config;

默认值: server

ImportExportTLSMode
使用 CONNECT TO VERTICA 连接到另一个 Vertica 群集进行导入或导出时,指定使用 TLS 的严格程度。可能的值为:
  • PREFER:尝试 TLS,但如果 TLS 失败,则回退到明文。

  • REQUIRE:如果服务器不支持 TLS,则使用 TLS 并失败。

  • VERIFY_CA:需要 TLS(与 REQUIRE 一样),并使用“服务器”TLS CONFIGURATION 的 CA 证书(在本例中为“ca_cert”和“ica_cert”)指定的 CA 来验证其他服务器的证书:

    => SELECT name, certificate, ca_certificates, mode FROM tls_configurations WHERE name = 'server';
      name  |   certificate    |   ca_certificates   |   mode
    --------+------------------+---------------------+-----------
     server | server_cert      | ca_cert,ica_cert    | VERIFY_CA
    (1 row)
    
  • VERIFY_FULL:需要 TLS 并验证证书(与 VERIFY_CA 一样),并验证服务器证书的主机名。

  • REQUIRE_FORCEVERIFY_CA_FORCEVERIFY_FULL_FORCE:分别与 REQUIREVERIFY_CAVERIFY_FULL 行为相同,并且不能被 CONNECT TO VERTICA 覆盖。

默认值: PREFER

InternodeTLSConfig
用于节点间加密TLS CONFIGURATION

例如:

=> ALTER DATABASE DEFAULT SET InternodeTLSConfig = my_tls_config;

默认值: data_channel

LDAPAuthTLSConfig
用于 TLS 与 LDAP 身份验证TLS CONFIGURATION

例如:

=> ALTER DATABASE DEFAULT SET LDAPAuthTLSConfig = my_tls_config;

默认值: ldapauth

LDAPLinkTLSConfig
用于 LDAP 链接服务的 TLSTLS CONFIGURATION

例如:

=> ALTER DATABASE DEFAULT SET LDAPLinkTLSConfig = my_tls_config;

默认值: ldaplink

PasswordLockTimeUnit
FAILED_LOGIN_ATTEMPTS 之后账户被锁定PASSWORD_LOCK_TIME 时间单位,为以下之一:
  • 'd':天(默认)

  • 'h':小时

  • 'm':分钟

  • 's':秒

例如,配置默认配置文件,以在 3 次登录尝试失败后锁定用户帐户 30 分钟:

  
=> ALTER DATABASE DEFAULT SET PasswordLockTimeUnit = 'm'
=> ALTER PROFILE DEFAULT LIMIT PASSWORD_LOCK_TIME 30;
  
RequireFIPS
布尔值,指定是否启用 FIPS 模式:
  • 0(禁用)

  • 1:(启用)

启动时,Vertica 会根据文件 crypto.fips_enabled 的内容自动设置此参数。您不能修改此参数。

有关详细信息,请参阅Vertica 服务器的 FIPS 合规性

默认值: 0

SecurityAlgorithm
设置哈希身份验证使用的算法,为以下之一:
  • SHA512

  • MD5

例如:

=> ALTER DATABASE DEFAULT SET SecurityAlgorithm = 'SHA512';

默认值: SHA512

ServerTLSConfig
用于客户端-服务器 TLSTLS CONFIGURATION

例如:

=> ALTER DATABASE DEFAULT SET ServerTLSConfig = my_tls_config;

默认值: server

SystemCABundlePath
受信任 CA 的证书捆绑包的绝对路径。当通过各自的 SDK 和 libcurl 与 AWS 或 Azure 等外部服务建立 TLS 连接时,将使用此 CA 捆绑包。在所有节点上,CA 捆绑包文件必须在相同位置。

如果此参数为空,Vertica 将搜索 CA 捆绑包的“标准”路径,这在不同的分发版中有所不同:

  • 基于 Red Hat: /etc/pki/tls/certs/ca-bundle.crt
  • 基于 Debian: /etc/ssl/certs/ca-certificates.crt
  • SUSE: /var/lib/ca-certificates/ca-bundle.pem

示例

=> ALTER DATABASE DEFAULT SET SystemCABundlePath = 'path/to/ca_bundle.pem';
  

默认值: Empty

TLS 参数

要设置 Vertica 数据库的 TLSMode、私钥、服务器证书和 CA 证书,请参阅 TLS 配置。在 11.0.0 之前的版本中,这些参数分别称为 EnableSSL、SSLPrivateKey、SSLCertificate 和 SSLCA。

示例

设置数据库参数 GlobalHeirUsername

=> \du
      List of users
 User name | Is Superuser
-----------+--------------
 Joe       | f
 SuzyQ     | f
 dbadmin   | t
(3 rows)

=> ALTER DATABASE DEFAULT SET PARAMETER GlobalHeirUsername='SuzyQ';
ALTER DATABASE
=>  \c - Joe
You are now connected as user "Joe".
=> CREATE TABLE t1 (a int);
CREATE TABLE

=> \c
You are now connected as user "dbadmin".
=> \dt t1
             List of tables
 Schema | Name | Kind  | Owner | Comment
--------+------+-------+-------+---------
 public | t1   | table | Joe   |
(1 row)

=> DROP USER Joe;
NOTICE 4927:  The Table t1 depends on User Joe
ROLLBACK 3128:  DROP failed due to dependencies
DETAIL:  Cannot drop User Joe because other objects depend on it
HINT:  Use DROP ... CASCADE to drop the dependent objects too
=> DROP USER Joe CASCADE;
DROP USER
=> \dt t1
             List of tables
 Schema | Name | Kind  | Owner | Comment
--------+------+-------+-------+---------
 public | t1   | table | SuzyQ |
(1 row)