这是本节的多页打印视图。
点击此处打印.
返回本页常规视图.
节点间 TLS
节点间 TLS 用于保护群集内节点之间的通信。如果您不信任节点之间的网络,请务必保护节点之间的通信。
在设置节点间 TLS 之前,请使用 SECURITY_CONFIG_CHECK 检查配置的当前状态。
=> SELECT SECURITY_CONFIG_CHECK('NETWORK');
服务器节点之间的通信使用两个通道:控制通道和数据通道。要启用节点间加密,请设置 EncryptSpreadComm 参数(默认情况下禁用)以对控制通道上的 Spread 通信进行加密,并配置 data_channel TLS CONFIGURATION 以对数据通道进行加密:
-
使用 EncryptSpreadComm
对控制通道上的 Spread 通信进行加密。有关详细信息,请参阅控制通道 Spread TLS。
-
使用 data_channel
TLS CONFIGURATION 对数据通道进行加密。有关详细信息,请参阅数据通道 TLS。
如果启用节点间加密,某些查询的运行速度可能会比预期慢。您的性能体验取决于发送的数据和网络质量。
Admintools 会生成或检索 spread 密钥以对控制通道上的所有流量进行加密,并将 spread 密钥发送到所有节点。Vertica 使用 TLS 对数据通道上的所有流量进行加密。TLS 凭据通过加密的控制通道在节点之间共享。
下图描述了节点间加密过程。
另请参阅
1 - 控制通道 Spread TLS
控制信道允许节点相互交换计划信息,并在节点之间分配调用。启用 Spread 安全可保护此通信。有关详细信息,请参阅节点间 TLS。
节点间 TLS 使用以下两个通道。在设置其他参数之前,必须按以下顺序启用这两个通道:
-
控制通道用于交换计划信息和分配调用。它是使用 Spread 实现的。有关详细信息,请访问 spread.org。
-
数据通道用于交换表数据。它是使用 TCP 实现的。
启用 EncryptSpreadComm
EncryptSpreadComm 可以设置为以下两个值之一:
通常情况下,您应该在设置任何其他安全参数之前设置 EncryptSpreadComm 参数,以启用 Spread 加密。
-
使用 ALTER DATABASE 设置 EncryptSpreadComm
参数。
=> ALTER DATABASE DEFAULT SET PARAMETER EncryptSpreadComm = 'vertica';
-
重新启动数据库。
-
使用 SECURITY_CONFIG_CHECK 验证您的设置。
=> SELECT SECURITY_CONFIG_CHECK('NETWORK');
权限
超级用户
限制
设置此参数后,必须重新启动数据库。
示例
这将启用 EncryptSpreadComm
参数,并告知 Vertica 在下次数据库启动时生成一个 Spread 加密密钥。
=> ALTER DATABASE DEFAULT SET PARAMETER EncryptSpreadComm = 'vertica';
有关此安全参数和其他安全参数的详细信息,请参阅安全性参数。
另请参阅
2 - 数据通道 TLS
节点在查询等操作期间使用数据通道交换表数据。
节点间通信使用以下通道。在启用其他组件之前,必须按以下顺序启用其关联的组件和参数:
-
控制通道,以交换计划信息并分发调用。它是使用 Spread 实现的。有关详细信息,请访问 spread.org。
-
数据通道,以交换表数据。它是使用 TCP 实现的。
配置数据通道 TLS
此过程在 Vertica 节点之间配置 TLS,并使用预定义的 TLS 配置 data_channel
。要使用自定义 TLS 配置,请参阅 TLS 配置。
-
在控制通道上启用 TLS。
-
生成或导入以下项:
-
CA(证书颁发机构)证书。
例如,要创建自签名 CA 证书,请生成密钥并使用该密钥对 CA 证书进行签名:
=> CREATE KEY SSCA_key TYPE 'RSA' LENGTH 2048;
=> CREATE CA CERTIFICATE SSCA_cert
SUBJECT '/C=US/ST=Massachusetts/L=Cambridge/O=Micro Focus/OU=Vertica/CN=Vertica Root CA'
VALID FOR 3650
EXTENSIONS 'nsComment' = 'Self-signed root CA cert'
KEY SSCA_key;
-
节点间 TLS 证书的私钥。
例如,使用 CREATE KEY 生成密钥:
=> CREATE KEY internode_key TYPE 'RSA' LENGTH 2048;
-
**节点间 TLS 证书。**这必须有一个以 CA 结尾的完整链,且必须是 x509v1 证书或使用 extendedKeyUsage
扩展 serverAuth
和 clientAuth
。
例如,要生成 internode_cert
并使用 SSCA_cert
对其进行签名:
=> CREATE CERTIFICATE internode_cert
SUBJECT '/C=US/ST=Massachusetts/L=Cambridge/O=Micro Focus/OU=Vertica/CN=data channel'
SIGNED BY SSCA_cert
EXTENSIONS 'nsComment' = 'Vertica internode cert', 'extendedKeyUsage' = 'serverAuth, clientAuth'
KEY internode_key;
-
在 data_channel
TLS 配置中设置证书。对于数据通道 TLS,TLSMODE 自动设置为 VERIFY_CA,且不应更改。
=> ALTER TLS CONFIGURATION data_channel CERTIFICATE internode_cert;
-
验证 InternodeTLSConfig 参数是否正在使用 TLS 配置:
=> SHOW CURRENT InternodeTLSConfig;
level | name | setting
---------+--------------------+--------------
DEFAULT | InternodeTLSConfig | data_channel
(1 row)
-
验证是否已使用 SECURITY_CONFIG_CHECK('NETWORK') 启用数据通道加密:
=> SELECT SECURITY_CONFIG_CHECK('NETWORK');
SECURITY_CONFIG_CHECK
---------------------------
Spread security details:
* EncryptSpreadComm = [vertica]
Spread encryption is enabled
It is now safe to set/change other security knobs
Data Channel security details:
TLS Configuration 'data_channel' TLSMODE is VERIFY_CA
TLS on the data channel is enabled
特权
超级用户
限制
另请参阅