启用 TLS

传输层安全性 (TLS) 是一种加密协议,可为 Alluxio 服务提供安全通信。通过启用 TLS,您可以确保在客户端和 Alluxio 之间以及 Alluxio 组件本身之间传输的数据都经过加密并受到保护,免受窃听。

本指南全面介绍了在 Alluxio 中配置 TLS 的过程,从生成证书到部署和验证安全集群。

注意: 启用 TLS 会带来计算开销,这可能会影响数据传输性能。

证书格式

Alluxio 支持两种标准证书格式:

  • PEM:现代推荐的格式,与 OpenSSL 兼容,并广泛用于容器化环境。

  • Java 密钥库 (JKS):传统的 Java 原生格式。

本指南重点介绍 PEM 格式。有关在格式之间进行转换的说明,请参阅附录。

第 1 部分:生成证书

在启用 TLS 之前,您必须有一组证书来验证您的服务。以下步骤使用 openssl 创建一个简单的证书颁发机构 (CA) 并为服务器和客户端颁发证书。

1. 创建证书颁发机构 (CA)

CA 用于签名和验证集群中的所有证书。

# 为 CA 生成私钥
openssl genrsa -out ca.key 2048

# 生成自签名 CA 证书
openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.pem \
  -subj "/C=US/ST=State/L=City/O=Organization/OU=OrgUnit/CN=rootCA"

2. 生成服务器证书

每个 Alluxio 服务器(Coordinator、Worker、网关)都需要一个服务器证书。

3. 生成客户端证书

客户端证书是双向 TLS (mTLS) 所必需的,在这种情况下,服务器也会验证客户端的身份。

第 2 部分:配置 Alluxio 服务

准备好证书后,您现在可以配置 Alluxio 服务来使用它们。以下属性应该在 alluxio-site.properties 中设置。

保护内部集群通信

此配置加密 Alluxio Coordiantor和Worker之间的 RPC 流量。

保护 S3 API

您可以对 worker上的 Alluxio S3 API 端点进行保护。这与内部 RPC 加密是独立配置的。

选项 1:仅 TLS 模式

此模式对所有 S3 API 访问强制使用 HTTPS。

选项 2:双端口模式(HTTP 和 HTTPS)

此模式同时允许安全 (HTTPS) 和不安全 (HTTP) 连接。

选项 3:双向 TLS (mTLS)

为了获得最大安全性,启用 mTLS 以要求客户端提供有效证书。

保护网关

Alluxio 网关提供管理 API,可以配置为支持 TLS 连接。当网关暴露给外部网络时,这一点尤为重要。

注意: 网关 TLS 设置通常在 Kubernetes 部署的 alluxio-cluster.yaml 中配置。

选项 1:仅 TLS 模式

此模式对所有网关 API 访问强制使用 HTTPS。

选项 2:双端口模式(HTTP 和 HTTPS)

此模式同时允许安全 (HTTPS) 和不安全 (HTTP) 连接。

配置 Alluxio 客户端

连接到启用 TLS 的 Alluxio 集群的客户端必须配置为信任服务器的 CA。

保护 ETCD 通信

如果您使用外部 ETCD 集群进行服务发现,可以对与其的连接进行安全保护。

重要提示:ETCD 客户端密钥必须是 PKCS8 格式。使用以下命令转换标准 PEM 密钥:

高级:指定 TLS 协议

为了增强安全性,您可以将服务器限制为特定的 TLS 协议版本。将以下属性添加到 alluxio-site.properties

第 3 部分:在 Kubernetes 中使用 TLS 部署

在 Kubernetes 中配置 TLS 涉及使用 secrets 来管理证书,并通过 Helm chart 或 alluxio-cluster.yaml 应用配置。

1. 创建 Kubernetes Secret

将生成的 PEM 证书存储在 Kubernetes secret 中。

2. 配置并挂载 Secret

在您的 alluxio-cluster.yaml 中,引用 secret 并配置 TLS 属性。

3. 部署集群

将配置应用到您的 Kubernetes 集群。

第 4 部分:验证 TLS 设置

部署后,使用 curlopenssl 等工具验证 TLS 配置是否正常工作。

验证 S3 API (mTLS)

验证 S3 API(仅 TLS 模式)

alluxio.worker.s3.only.https.accesstrue 时,尝试通过 HTTP 连接应该失败。

此命令应该导致"Connection refused"错误。

验证网关 (mTLS)

第 5 部分:安全最佳实践

  • 证书轮换:定期更新和轮换您的证书,以限制密钥泄露时的暴露窗口。

  • 安全密钥存储:保护您的私钥。在文件系统上,使用严格的权限:

  • 环境隔离:为开发、测试和生产环境使用单独的 CA 和证书。

附录

PEM 到 JKS 格式转换

Last updated