有线加密可保护移动中的数据,而传输层安全性(TLS)是有线加密中使用最广泛的安全协议。TLS通过对端点之间传输的数据包进行加密,在通过网络进行通信的应用程序之间提供身份验证、隐私和数据完整性。用户通过浏览器或命令行工具与Hadoop集群进行交互,而应用程序则使用REST API或Thrift。
手动启用TLS的步骤
下面介绍了在Hortonworks Data Platform(HDP)或Cloudera Enterprise(CDH)集群上启用有线加密的典型过程。
获取证书
• 在每个主机上生成一个公共/私有密钥对
• 为所有主机生成证书签名请求(CSR)。
• 获取由公司内部证书颁发机构(CA)签署的CSR。
• 生成keystore和truststore,并将其部署在所有集群主机上。
集群配置
• 对于每个服务,通过设置keystore和truststore配置来启用TLS。
• 在继续为下一个服务启用TLS之前,请重新启动受影响的组件。
• 在集群管理器的用户界面之外进行所需的更改(例如,设置truststore,启用Knox SSL等)
持续维护
• 对于新服务的安装,需要为服务配置keystore和truststore信息。重新启动受影响的服务。
• 对于要添加到集群中的每个新主机,管理员必须执行“获取证书”章节中的步骤(仅适用于新主机)。
• 证书在到期之前被轮换。
使用Ambari,可以在Hortonworks数据平台(HDP)中使用这些步骤启用TLS 。在Cloudera Manager(CM)中,可以使用这些步骤手动启用TLS 。从历史上看,这一直是在CDH分发上实施TLS的标准过程。
Cloudera Manager中启用Auto-TLS功能
在大型部署中,上述过程可能是一项巨大的工作,通常会导致部署时间长和操作困难。Auto-TLS功能在集群级别自动执行启用TLS加密所需的所有步骤。使用Auto-TLS,您可以让Cloudera管理集群中所有证书的证书颁发机构(CA)或使用公司现有的CA。在大多数情况下,可以通过Cloudera Manager UI轻松启用所有必需的步骤。此功能可自动执行以下过程–
• 当Cloudera Manager用作证书颁发机构时–
o 创建根证书颁发机构或证书签名请求(CSR),以创建要由公司现有证书颁发机构(CA)签名的中间证书颁发机构
o 为主机生成CSR并自动对其进行签名
• 始终执行以下步骤
o 为主机创建keystore和truststore。
o 将证书、keystore和truststore部署到集群中的所有主机。
o 然后,通过配置角色实例特定目录中的keystore和truststore信息,将自动启用所有TLS的TLS服务。
o 为Cloudera Manager服务器和代理启用TLS。
o 完成此初始设置后,默认情况下将自动启用所有新服务,主机(或)其他计算集群设置。
o 提供用于轮换证书的自动化框架。
Auto-TLS功能类似于kube master现在如何在香草Kubernetes集群上对节点证书进行自签名,CM的好处是它在保护集群服务方面也迈出了第一步。这 是官方文档的链接。让我们在CDP DC 7.1集群上通过以下示例回顾这些选项。
选项1 –使用Cloudera Manager生成内部证书颁发机构和相应的证书
最简单的选择是让Cloudera Manager创建和管理自己的证书颁发机构。要选择此选项,请从Cloudera Manager中转到管理>安全性>启用Auto-TLS并完成向导。
系统将提示您启动Cloudera Manager,然后启动Cloudera管理服务和所有受影响的集群。启动Cloudera Manager服务器时,默认情况下应该在TLS端口7183上看到UI。浏览器将显示来自SCM本地CA机构的自签名证书,如下所示。浏览器显示警告,因为它不知道CM生成的根CA。将根CA导入客户端浏览器的truststore后,浏览器将不会显示此警告。
设置集群时,应该看到一条消息,说明已启用Auto-TLS。继续安装所需的服务。瞧!整个集群均经过TLS加密。任何新的主机或服务都将自动配置。这是默认情况下启用TLS加密的HDFS服务的示例(在信任Cloudera Manager生成的根证书之后)。
尽管此选项是最简单的,但它可能不适用于某些企业部署,在这些企业部署中,公司现有的证书颁发机构(CA)颁发TLS证书以维护集中的信任链。
选项2 –使用现有的证书颁发机构
您可以将Cloudera Manager CA设置为现有根CA的中间CA,也可以手动生成由现有根CA签名的证书并将其上载到Cloudera Manager。以下将这两个选项描述为2a和2b。
选项2a –使用现有的根CA启用Auto-TLS
仅对于新安装,您可以使Cloudera Manager成为一个中间CA,该CA为所有集群主机和服务签署证书。这是一个三步的处理过程。首先,使Cloudera Manager生成证书签名请求(CSR)。其次,由公司的证书颁发机构(CA)签署CSR。第三,提供签名证书链以继续Auto-TLS设置。下面的示例演示了这三个步骤。
1) 在启动Cloudera Manager之前,使用–stop-at-csr 选项初始化证书管理器。
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk;
/opt/cloudera/cm-agent/bin/certmanager --location /var/lib/cloudera-scm-server/certmanager setup --configure-services --stop-at-csr
2) 这将 在/var/lib/cloudera-scm-server/certmanager/CMCA/private/ca_csr.pem中生成一个证书签名请求(CSR)文件。如果仔细检查CSR,您将看到CSR请求必要的扩展名X509v3密钥用法:关键证书签名,以自行签署证书。
3) 获得签名证书后,请确保该证书具有所需的扩展名– X509v3基本约束:CA:TRUE 和 X509v3密钥用法:密钥证书签名。使用以下命令继续安装。
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk;
/opt/cloudera/cm-agent/bin/certmanager --location /var/lib/cloudera-scm-server/certmanager setup --configure-services --signed-ca-cert=cm_cert_chain.pem
启动Cloudera Manager,它应该以TLS端口7183上的UI开头。如果已将签名的中间证书导入到客户端浏览器的truststore中,那么您应该不会看到任何警告。在下面的屏幕快照中,“ Vkarthikeyan Internal Root CA”是根证书。该证书已被系统信任,并已签署Cloudera中间CA。
选项2b –使用现有证书启用Auto-TLS
如果您有需要启用Auto-TLS的现有集群,或者需要获得由公司现有CA单独签名的主机证书,请使用以下方法。此选项增加了为任何新主机生成证书并通过API请求上传到Cloudera Manager的操作开销。在此选项中,将暂存由CA签名的证书,并通过调用Cloudera Manager API启用Auto-TLS。
1) 在Cloudera Manager服务器中创建Auto-TLS目录/opt/cloudera/AutoTLS 。该目录必须由cloudera-scm 用户拥有。
2) 为每个主机创建一个公用/专用密钥,并生成相应的证书签名请求(CSR)。由公司的证书颁发机构(CA)签署这些CSR。
3) 在CM服务器上准备公司CA签署的所有证书。在此示例中,所有证书都位于/tmp/auto-tls 目录下。用于keystore和truststore的密码分别存在于key.pwd 和 truststore.pwd 文件中。
4) 如下运行Cloudera Manager API
curl -i -v -uadmin:admin -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{
"location" : "/opt/cloudera/AutoTLS",
"customCA" : true,
"interpretAsFilenames" : true,
"cmHostCert" : "/tmp/auto-tls/certs/ccycloud-7.vcdp71.root.hwx.site.pem",
"cmHostKey" : "/tmp/auto-tls/keys/ccycloud-7.vcdp71.root.hwx.site-key.pem",
"caCert" : "/tmp/auto-tls/ca-certs/cfssl-chain-truststore.pem",
"keystorePasswd" : "/tmp/auto-tls/keys/key.pwd",
"truststorePasswd" : "/tmp/auto-tls/ca-certs/truststore.pwd",
"hostCerts" : [ {
"hostname" : "ccycloud-7.vcdp71.root.hwx.site",
"certificate" : "/tmp/auto-tls/certs/ccycloud-7.vcdp71.root.hwx.site.pem",
"key" : "/tmp/auto-tls/keys/ccycloud-7.vcdp71.root.hwx.site-key.pem"
}, {
"hostname" : "ccycloud-3.vcdp71.root.hwx.site",
"certificate" : "/tmp/auto-tls/certs/ccycloud-3.vcdp71.root.hwx.site.pem",
"key" : "/tmp/auto-tls/keys/ccycloud-3.vcdp71.root.hwx.site-key.pem"
}, {
"hostname" : "ccycloud-2.vcdp71.root.hwx.site",
"certificate" : "/tmp/auto-tls/certs/ccycloud-3.vcdp71.root.hwx.site.pem",
"key" : "/tmp/auto-tls/keys/ccycloud-3.vcdp71.root.hwx.site-key.pem"
}, {
"hostname" : "ccycloud-1.vcdp71.root.hwx.site",
"certificate" : "/tmp/auto-tls/certs/ccycloud-1.vcdp71.root.hwx.site.pem",
"key" : "/tmp/auto-tls/keys/ccycloud-1.vcdp71.root.hwx.site-key.pem"
} ],
"configureAllServices" : "true",
"sshPort" : 22,
"userName" : "root",
"password" : "cloudera"
}' 'http://ccycloud-7.vcdp71.root.hwx.site:7180/api/v41/cm/commands/generateCmca'
5) 此API成功返回后,您应该看到最近运行的命令如下。
6) 当这个API是执行,您可以检查/var/log/cloudera-scm-server/cloudera-scm-server.log 的API日志,也是certmanager 在日志中的/var/log/cloudera-scm-agent/certmanager.log。
7) 重新启动CM服务。然后在所有集群服务器上重新启动CM agent
8) CM UI / API现在将在TLS端口上可用。现在重新启动所有Cloudera Manager管理服务。
9) 重新启动集群服务。现在,所有服务都已配置为有线加密。
10) 将新主机添加到此集群时,需要执行以下附加步骤,以将CA签名的主机证书上载到CM。
o “添加主机”向导将提示以下屏幕,其中包含有关上载证书的说明。
o 使用以下命令将证书上载到CM。
curl -uadmin:admin -X POST --header 'Content-Type:
application/json' --header 'Accept: application/json' -d '{
"location": "/opt/cloudera/AutoTLS",
"interpretAsFilenames": true,
"hostCerts": [ {
"hostname": "ccycloud-10.vcdp71.root.hwx.site",
"Certificate":
"/tmp/auto-tls/certs/ccycloud-10.vcdp71.root.hwx.site.pem",
"Key":
"/tmp/auto-tls/certs/ccycloud-10.vcdp71.root.hwx.site.pemm"
} ]
}' 'https://ccycloud-7.vcdp71.root.hwx.site:7183/api/v41/cm/commands/addCustomCerts'
o 照常继续添加主机。
在此示例中,用于签署所有证书的CA是“Sec Lab Intermediate CA”,可以在下面的屏幕快照中找到–
Cloudera Manager UI
KnoxUI
新集群部署
使用以上任何选项,在启用了Auto-TLS的CM上创建新集群时,您可以重用现有的TLS设置。当启动向导创建新集群时,应该看到以下消息。现在,当您部署集群时,所有服务都将通过有线加密自动配置。
总结
Auto-TLS功能不仅可以加快有线加密的初始设置,还可以自动执行集群的将来TLS配置步骤。下表总结了此博客中描述的选项之间的差异。
步骤 | HDP / EDH (手动) | CDP DC选项1 | CDP DC选项2a | CDP DC选项2b |
---|---|---|---|---|
生成CSR | 手动 | 自动化 | 自动化 | 手动 |
CA签署的CSR | 手动 | 自动化 | 一次性 | 手动 |
将证书部署到所有主机 | 手动 | 自动化 | 自动化 | 自动化 |
每个服务的配置 | 手动 | 自动化 | 自动化 | 自动化 |
集群重启 | 多次 | 一次性 | 一次性 | 一次性 |
配置步骤 | 手动 | 自动化 | 自动化 | 自动化 |
新服务的步骤 | 手动 | 自动化 | 自动化 | 自动化 |
新的主机证书生成 | 手动 | 自动化 | 自动化 | 手动 |
Auto-TLS功能极大地减少了集群TLS管理的开销,从而提供了增强的安全性并减少了操作开销,并帮助您专注于客户及其工作负载。喜欢你看到的吗?立即试用 新的Cloudera数据平台数据中心!
原文链接:https://blog.cloudera.com/auto-tls-in-cloudera-data-platform-data-center/
原文作者:Vijay Karthikeyan