For the complete documentation index, see llms.txt. This page is also available as Markdown.

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(仅 TLS 模式)

使用 CA 证书验证 HTTPS 是否正常工作:

TLS 握手成功后,verbose 输出中会显示 SSL connection using TLSv1.x

可选:验证明文 HTTP 是否被拒绝(当 alluxio.worker.s3.only.https.access=true 时):

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

验证 S3 API(mTLS)

alluxio.worker.s3.tls.mutual.enabled=true 时,服务器也会验证客户端证书:

验证网关 (mTLS)

第 5 部分:安全最佳实践

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

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

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

附录

PEM 到 JKS 格式转换

Last updated