我将 AKS 与 nginx 入口控制器结合使用。 我正在使用包含 .key 和 .crt 的 kubernetes tls Secret 并将其引用到 ingress.yaml
Kubectl create secret tls $secret_name --key=$file.key --cert=$file.crt
在 ingress.yaml 中:
Tls:
SecretName: $secret_name
建议的做法是使用密钥保管库来存储证书而不是直接存储机密,这样可以轮换并避免未加密的 kubernetes 机密。
过程在这里:https://learn.microsoft.com/en-us/azure/aks/csi-secrets-store-nginx-tls
我想知道这是否真的值得,因为无论如何都会使用从密钥保管库中提取的证书创建一个秘密,这个秘密必须在 ingreds.yaml 中引用,并且可以像任何一个一样使用 kubectl get Secret 来查看。
使用密钥保管库创建 kubernetes 机密时,安全性方面有什么好处?
我想知道你对此有何看法?
与直接使用 Kubernetes Secrets 相比,使用 Azure Key Vault 方法通常是更好的方法
直接使用 Kubernetes Secrets:要使用此方法,您需要创建一个包含 TLS 证书(.key
和
.crt
文件)的 Kubernetes Secret,并在
ingress.yaml
文件中引用它。这种方法虽然简单,但在安全性和可管理性方面存在一些缺点。
通过 Secrets Store CSI 驱动程序使用 Azure Key Vault:在 AKS 中使用 TLS 证书的一种方法是将它们存储在 Azure Key Vault 中,然后使用 Secrets Store CSI 驱动程序将它们连接到 AKS。这样,TLS 证书就成为 AKS 可以访问的 Kubernetes 机密,但它们是从 Key Vault 控制和获取的。
增强的安全性:Kubernetes 机密的安全功能少于 Azure Key Vault。 Kubernetes 机密仅以 Base64 编码,未加密,因此任何人都可以在未经授权的情况下对其进行解码。 Key Vault 对机密进行加密并提供更好的访问控制和审核功能。
集中管理和合规性:借助 Key Vault,您可以在中央位置管理机密、密钥和证书。这可以帮助您遵守不同的监管标准,因为您可以跟踪和记录您的行为。
自动轮换和续订:通过自动轮换和续订证书,Key Vault 可以降低运营开销和证书过期的风险。
减少 Kubernetes 中的暴露:虽然最终输出的是 Kubernetes 密钥,但密钥在 Kubernetes 环境中的暴露时间被最小化。该秘密不需要在集群内手动处理或长期存储。
与 Azure 生态系统集成:对于已经使用 Azure 服务的用户来说,Key Vault 是一个方便高效的选择,因为它与他们无缝集成。
Secrets Store CSI 驱动程序的 Azure Key Vault 提供程序及其与 AKS 的集成。它强调了将秘密安装到 Pod、支持多个秘密对象以及秘密自动旋转等功能。这些功能表明在 AKS 中处理 TLS 证书的方法更加安全且易于管理,特别是与直接使用 Kubernetes 密钥的传统方法相比。
参考:
设置 Secrets Store CSI 驱动程序以在 Azure Kubernetes 服务 (AKS) 上启用具有 TLS 的 NGINX 入口控制器 - Azure Kubernetes 服务 |微软学习
https://learn.microsoft.com/en-us/azure/aks/csi-secrets-store-driver
https://learn.microsoft.com/en-us/azure/aks/csi-secrets-store-configuration-options