<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Vertica Documentation – Internode TLS</title>
    <link>/en/security-and-authentication/internode-tls/</link>
    <description>Recent content in Internode TLS on Vertica Documentation</description>
    <generator>Hugo -- gohugo.io</generator>
    
	  <atom:link href="/en/security-and-authentication/internode-tls/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Security-and-Authentication: Control channel spread TLS</title>
      <link>/en/security-and-authentication/internode-tls/control-channel-spread-tls/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/security-and-authentication/internode-tls/control-channel-spread-tls/</guid>
      <description>
        
        
        &lt;p&gt;The control channel allows nodes to exchange plan information with one another, and to distribute calls among nodes. Enabling spread security secures this communication. See &lt;a href=&#34;../../../en/security-and-authentication/internode-tls/&#34;&gt;Internode TLS&lt;/a&gt; for more information.&lt;/p&gt;
&lt;p&gt;Internode TLS uses the following channels. Both must be enabled, and in the following order, before setting other parameters:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Control Channel to exchange plan information and distribute calls. It is implemented using &lt;a href=&#34;../../../en/glossary/spread/&#34;&gt;Spread&lt;/a&gt;. For more information, visit &lt;a href=&#34;http://www.spread.org/&#34;&gt;spread.org&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../../en/security-and-authentication/internode-tls/data-channel-tls/&#34;&gt;Data Channel&lt;/a&gt; to exchange table data. It is implemented using TCP.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;enabling-encryptspreadcomm&#34;&gt;Enabling EncryptSpreadComm&lt;/h2&gt;
&lt;p&gt;EncryptSpreadComm can be set with one of two values:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;&lt;code&gt;vertica&lt;/code&gt;&lt;/em&gt;. Vertica generates the spread encryption key for the cluster when the database starts up.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;aws-kms|&lt;/code&gt;&lt;em&gt;&lt;code&gt;&amp;amp;lt;key_name&amp;amp;gt;&lt;/code&gt;&lt;/em&gt;. Vertica fetches the user-specified key from the AWS Key Management Service when the database starts up, rather than generating one itself.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In general, you should set the EncryptSpreadComm parameter to enable spread encryption before setting any other security parameters.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Set the &lt;code&gt;EncryptSpreadComm&lt;/code&gt; parameter with &lt;a href=&#34;../../../en/sql-reference/statements/alter-statements/alter-db/&#34;&gt;ALTER DATABASE&lt;/a&gt;.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; ALTER DATABASE DEFAULT SET PARAMETER EncryptSpreadComm = &amp;#39;vertica&amp;#39;;
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Restart the database.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Verify your settings with &lt;a href=&#34;../../../en/sql-reference/functions/management-functions/db-functions/security-config-check/&#34;&gt;SECURITY_CONFIG_CHECK&lt;/a&gt;.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; SELECT SECURITY_CONFIG_CHECK(&amp;#39;NETWORK&amp;#39;);
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;privileges&#34;&gt;Privileges&lt;/h2&gt;
&lt;p&gt;Superuser&lt;/p&gt;
&lt;h2 id=&#34;restrictions&#34;&gt;Restrictions&lt;/h2&gt;
&lt;p&gt;After setting this parameter, you must restart your database.&lt;/p&gt;
&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
&lt;p&gt;This enables the &lt;code&gt;EncryptSpreadComm&lt;/code&gt; parameter and tells Vertica to generate a spread encryption key the next time the database starts up.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; ALTER DATABASE DEFAULT SET PARAMETER EncryptSpreadComm = &amp;#39;vertica&amp;#39;;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;For more information on this and other security parameters, see &lt;a href=&#34;../../../en/sql-reference/config-parameters/security-parameters/&#34;&gt;Security parameters&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;see-also&#34;&gt;See also&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href=&#34;../../../en/security-and-authentication/internode-tls/&#34;&gt;Internode TLS&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&#34;../../../en/security-and-authentication/internode-tls/data-channel-tls/&#34;&gt;Data channel TLS&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&#34;../../../en/security-and-authentication/tls-protocol/tls-overview/&#34;&gt;TLS overview&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Security-and-Authentication: Data channel TLS</title>
      <link>/en/security-and-authentication/internode-tls/data-channel-tls/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/security-and-authentication/internode-tls/data-channel-tls/</guid>
      <description>
        
        
        &lt;p&gt;Nodes use the data channel to exchange table data during operations such as queries.&lt;/p&gt;
&lt;p&gt;Internode communication uses the following channels. Their associated components and parameters must be enabled in the following order:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../../en/security-and-authentication/internode-tls/control-channel-spread-tls/&#34;&gt;Control Channel&lt;/a&gt; to exchange plan information and distribute calls. It is implemented using &lt;a href=&#34;../../../en/glossary/spread/&#34;&gt;Spread&lt;/a&gt;. For more information, visit &lt;a href=&#34;http://www.spread.org/&#34;&gt;spread.org&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Data Channel to exchange table data. It is implemented using TCP.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;configuring-data-channel-tls&#34;&gt;Configuring data channel TLS&lt;/h2&gt;
&lt;p&gt;This procedure configures TLS between Vertica nodes and uses the predefined TLS Configuration &lt;code&gt;data_channel&lt;/code&gt;. To use a custom TLS Configuration, see &lt;a href=&#34;../../../en/security-and-authentication/tls-protocol/tls-overview/tls-configs/&#34;&gt;TLS configurations&lt;/a&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../../en/security-and-authentication/internode-tls/control-channel-spread-tls/&#34;&gt;Enable TLS on the control channel&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../../en/security-and-authentication/tls-protocol/tls-overview/generating-tls-certificates-and-keys/&#34;&gt;Generate or import&lt;/a&gt; a CA (Certificate Authority) certificate. For example, to create a self-signed CA certificate, generate a key and sign CA certificate with the key:
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; CREATE KEY SSCA_key TYPE &amp;#39;RSA&amp;#39; LENGTH 2048;
&lt;/code&gt;&lt;/pre&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; CREATE CA CERTIFICATE SSCA_cert
SUBJECT &amp;#39;/C=US/ST=Massachusetts/L=Cambridge/O=Micro Focus/OU=Vertica/CN=Vertica Root CA&amp;#39;
VALID FOR 3650
EXTENSIONS &amp;#39;nsComment&amp;#39; = &amp;#39;Self-signed root CA cert&amp;#39;
KEY SSCA_key;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Generate or import a private key. For example, to generate the private key:
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; CREATE KEY internode_key TYPE &amp;#39;RSA&amp;#39; LENGTH 2048;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Generate or import a TLS certificate. The certificate must have a full chain that ends in a CA, and must be either a x509v1 certificate or use the &lt;code&gt;extendedKeyUsage&lt;/code&gt; extensions &lt;code&gt;serverAuth&lt;/code&gt; and &lt;code&gt;clientAuth&lt;/code&gt;. For example, to generate &lt;code&gt;internode_cert&lt;/code&gt; and sign it with &lt;code&gt;SSCA_cert&lt;/code&gt;:
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; CREATE CERTIFICATE internode_cert
SUBJECT &amp;#39;/C=US/ST=Massachusetts/L=Cambridge/O=Micro Focus/OU=Vertica/CN=data channel&amp;#39;
SIGNED BY SSCA_cert
EXTENSIONS &amp;#39;nsComment&amp;#39; = &amp;#39;Vertica internode cert&amp;#39;, &amp;#39;extendedKeyUsage&amp;#39; = &amp;#39;serverAuth, clientAuth&amp;#39;
KEY internode_key;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../../en/sql-reference/statements/alter-statements/alter-tls-config/&#34;&gt;Set&lt;/a&gt; the certificate, and optionally the TLSMODE for &lt;code&gt;data_channel&lt;/code&gt; TLS configuration. If the TLSMODE is set to &lt;code&gt;TRY_VERIFY&lt;/code&gt; or higher, the certificate&#39;s signing CA is added to the TLS Configuration&#39;s &lt;a href=&#34;../../../en/sql-reference/system-tables/v-monitor-schema/tls-configs/&#34;&gt;list of CA certificates&lt;/a&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; ALTER TLS CONFIGURATION data_channel CERTIFICATE internode_cert TLSMODE &amp;#39;TRY_VERIFY&amp;#39;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If you do not specify a TLSMODE, and the TLSMODE was previously set to &lt;code&gt;DISABLE&lt;/code&gt; (default), &lt;code&gt;TRY_VERIFY&lt;/code&gt;, &lt;code&gt;VERIFY_CA&lt;/code&gt;, or &lt;code&gt;VERIFY_FULL&lt;/code&gt; (which behaves like &lt;code&gt;VERIFY_CA&lt;/code&gt;), the TLSMODE automatically changes to &lt;code&gt;VERIFY_CA&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; ALTER TLS CONFIGURATION data_channel CERTIFICATE internode_cert;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If the certificate is not signed by a known CA, the TLSMODE is set to &lt;code&gt;DISABLE&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Verify that the InternodeTLSConfig parameter uses the TLS Configuration:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; SHOW CURRENT InternodeTLSConfig;
  level  |        name        |   setting
---------+--------------------+--------------
 DEFAULT | InternodeTLSConfig | data_channel
(1 row)
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Verify that data channel encryption is enabled with &lt;a href=&#34;../../../en/sql-reference/functions/management-functions/db-functions/security-config-check/&#34;&gt;SECURITY_CONFIG_CHECK(&#39;NETWORK&#39;)&lt;/a&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; SELECT SECURITY_CONFIG_CHECK(&amp;#39;NETWORK&amp;#39;);
   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 &amp;#39;data_channel&amp;#39; TLSMODE is VERIFY_CA
TLS on the data channel is enabled
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;privileges&#34;&gt;Privileges&lt;/h2&gt;
&lt;p&gt;Superuser&lt;/p&gt;
&lt;h2 id=&#34;restrictions&#34;&gt;Restrictions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;In general, you should set EncryptSpreadComm before configuring data channel TLS.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Changes to the InternodeTLSConfig parameter and its underlying TLS Configuration take effect immediately and interrupt all ongoing queries in order to update node connections.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;see-also&#34;&gt;See also&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href=&#34;../../../en/security-and-authentication/internode-tls/&#34;&gt;Internode TLS&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&#34;../../../en/security-and-authentication/internode-tls/control-channel-spread-tls/&#34;&gt;Control channel spread TLS&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&#34;../../../en/security-and-authentication/tls-protocol/tls-overview/&#34;&gt;TLS overview&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
  </channel>
</rss>
