安全性参数
可使用以下客户端身份验证配置参数和常规安全性参数配置 TLS。
-
要为客户端-服务器 TLS 配置 Vertica,请参阅配置客户端-服务器 TLS。
-
要为 TLS 配置 JDBC 和 ODBC 客户端,请参阅为 JDBC 客户端配置 TLS和 为 ODBC 客户端配置 TLS。
-
对于 Kerberos 相关参数,请参阅 Kerberos 参数。
数据库参数
- 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
- 用于 HTTPS 的 TLS 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_FORCE
、VERIFY_CA_FORCE
和VERIFY_FULL_FORCE
:分别与REQUIRE
、VERIFY_CA
和VERIFY_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 链接服务的 TLS 的 TLS 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
- 用于客户端-服务器 TLS 的 TLS 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
- 基于 Red Hat:
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)