K8S 九 安全认证 TLS

目录

  • [第九章 安全认证](#第九章 安全认证)
  • 其他
    • K8S的TLS是什么(DeepSeek)
      • [1. 加密通信](#1. 加密通信)
      • [2. 身份认证(Authentication)](#2. 身份认证(Authentication))
      • [3. 数据完整性](#3. 数据完整性)
      • [K8s 中 TLS 的具体应用](#K8s 中 TLS 的具体应用)
        • [**1. API Server 的 TLS 配置**](#1. API Server 的 TLS 配置)
        • [**2. etcd 的 TLS 配置**](#2. etcd 的 TLS 配置)
        • [**3. kubelet 的 TLS 配置**](#3. kubelet 的 TLS 配置)
        • [**4. Ingress 的 TLS 配置**](#4. Ingress 的 TLS 配置)
      • [**4. 证书管理**](#4. 证书管理)
      • [**为什么必须使用 TLS?**](#为什么必须使用 TLS?)
      • **总结**

第九章 安全认证

实战内容参考
K8S 75 kubernetes-1.29 部署 ingress-nginx1.10

访问控制概述


认证管理

HTTPS证书认证:基于CA根证书签名的双向数字证书认证方式。

这种认证方式是安全性最高的一种方式,但同时也是操作起来最麻烦的一种方式。

授权管理 RBAC

RBAC

Role

rules中的参数
RoleBinding

cr

实战

创建Role和RoleBinding,为devUser用户授权


9.4 准入控制

了解原理

当前可配置的Admission Control准入控制如下:

其他

K8S的TLS是什么(DeepSeek)

K8S的TLS是什么,怎样使用(询问 DeepSeek AI的问题)

Kubernetes(k8s)使用 TLS(Transport Layer Security) 是为了确保集群内外的通信安全,防止数据泄露、篡改和中间人攻击。以下是 TLS 在 Kubernetes 中的核心作用及具体应用场景:

1. 加密通信

TLS 对 Kubernetes 组件之间的通信进行加密,保护敏感数据(如认证令牌、配置信息、Pod 日志等)不被窃取。

  • 核心场景
    • API Server 与客户端(如 kubectl):所有通过 HTTPS 的请求和响应均加密。
    • API Server 与 etcd:API Server 与 etcd 存储集群状态数据的通信需加密。
    • 节点间通信:kubelet、kube-proxy 与 API Server 的交互需加密。
    • Service 流量:通过 Ingress 暴露的 HTTPS 服务(如 Web 应用)使用 TLS 证书。

2. 身份认证(Authentication)

TLS 证书用于验证组件或用户的身份,确保只有授权的实体可以访问集群资源。

  • 核心场景
    • 组件间认证
      • API Server 验证 kubelet、scheduler、controller-manager 的客户端证书。
      • etcd 验证 API Server 的客户端证书。
    • 用户认证
      • kubectl 使用客户端证书或 Token 向 API Server 证明身份。
    • Service Account:Pod 内应用通过 TLS 证书与 API Server 安全通信。

3. 数据完整性

TLS 确保传输的数据未被篡改,防止中间人攻击(MITM)。

  • 核心场景
    • 配置下发:确保 kubelet 收到的 Pod 定义来自合法的 API Server。
    • Secret 传输:加密敏感信息(如密码、密钥)的传输过程。

K8s 中 TLS 的具体应用

1. API Server 的 TLS 配置

API Server 是集群的"网关",所有请求必须通过 TLS 加密和认证。

  • 服务端证书:API Server 使用 TLS 证书对外提供 HTTPS 服务。
  • 客户端证书kubectl、kubelet 等组件需提供有效证书才能访问 API Server。
yaml 复制代码
# API Server 启动参数示例(/etc/kubernetes/manifests/kube-apiserver.yaml)
spec:
  containers:
  - command:
    - kube-apiserver
    - --tls-cert-file=/etc/kubernetes/pki/apiserver.crt     # 服务端证书
    - --tls-private-key-file=/etc/kubernetes/pki/apiserver.key
    - --client-ca-file=/etc/kubernetes/pki/ca.crt          # 客户端 CA 根证书
2. etcd 的 TLS 配置

etcd 存储集群所有敏感数据,必须通过 TLS 保护。

  • 服务端证书:etcd 使用证书对外提供加密服务。
  • 客户端证书:API Server 需提供有效证书才能访问 etcd。
yaml 复制代码
# etcd 启动参数示例(/etc/kubernetes/manifests/etcd.yaml)
spec:
  containers:
  - command:
    - etcd
    - --cert-file=/etc/kubernetes/pki/etcd/server.crt      # 服务端证书
    - --key-file=/etc/kubernetes/pki/etcd/server.key
    - --client-cert-auth=true                              # 要求客户端证书认证
    - --trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt    # 客户端 CA 根证书
3. kubelet 的 TLS 配置

kubelet 是节点上的代理,需通过 TLS 与 API Server 通信。

  • 服务端证书:kubelet 提供 HTTPS 端点供 API Server 访问(如日志、exec 功能)。
  • 客户端证书:kubelet 使用证书向 API Server 认证自己。
yaml 复制代码
# kubelet 配置示例(/var/lib/kubelet/config.yaml)
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
serverTLSBootstrap: true   # 自动生成服务端证书
clientCAFile: /etc/kubernetes/pki/ca.crt
4. Ingress 的 TLS 配置

通过 Ingress 暴露的 HTTPS 服务需配置 TLS 证书。

yaml 复制代码
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
spec:
  tls:
  - hosts:
    - api.example.com
    secretName: tls-secret  # 引用存储证书的 Secret
  rules:
  - host: api.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: gateway-service
            port:
              number: 80

4. 证书管理

Kubernetes 依赖证书颁发机构(CA)体系管理证书:

  1. 根证书(CA) :集群信任的根证书(如 /etc/kubernetes/pki/ca.crt)。
  2. 自动轮换 :kubelet 支持自动轮换证书(通过 RotateKubeletServerCertificate 特性)。
  3. 工具支持
    • kubeadm:自动生成集群证书。
    • cert-manager:自动化管理 Ingress 证书(如 Let's Encrypt)。

为什么必须使用 TLS?

  1. 默认安全要求:Kubernetes 设计时即要求所有生产环境通信必须加密。
  2. 合规性:满足 GDPR、HIPAA 等数据安全法规。
  3. 防御攻击
    • 防止集群内部流量被监听(如同一 VPC 内的其他服务)。
    • 防止 API Server 被未授权访问(如公网暴露的集群)。
  4. 零信任架构:默认不信任任何组件,所有通信需验证身份。

总结

Kubernetes 使用 TLS 是构建安全集群的基石,涵盖加密、认证和完整性三大核心安全需求。无论是集群内部组件通信,还是对外暴露服务,TLS 都是防止数据泄露和未授权访问的关键防线。

相关推荐
风落无尘5 小时前
Stable Diffusion WebUI & ComfyUI 完整安装教程:官方部署+一键整合包+Docker容器化(2026最新)
docker·容器·stable diffusion
CodeMartain10 小时前
Dify Windows 原生部署(无 Docker、纯本地)
运维·docker·容器
牛奶咖啡1311 小时前
k8s容器编排技术实践——使用containerd作为容器运行时部署k8s集群
kubernetes·k8s的安装部署·开启系统的ipvs支持·安装containerd·containerd配置加速器·安装k8s的工具·安装calico网络插件
万里侯11 小时前
云原生数据备份与恢复:保障数据安全的最佳实践
微服务·容器·k8s
llrraa201012 小时前
配置docker国内镜像源
运维·docker·容器
上海云盾-小余12 小时前
网站恶意爬虫拦截策略:智能识别与封禁实操方案
网络·爬虫·安全·web安全
2301_7807896613 小时前
手游遇到攻击为什么要用SDK游戏盾手游遇到攻击为什么要用 SDK 游戏盾?
安全·web安全·游戏·架构·kubernetes·ddos
黎阳之光14 小时前
黎阳之光:视频孪生重构新能源智慧工地,打造大型风光基地数智化建设标杆
大数据·人工智能·物联网·安全·数字孪生
珂玥c14 小时前
k8s集群ingress碎碎念
云原生·容器·kubernetes
佳杰云星14 小时前
如何给大模型集群选“大脑”?智算调度与管理平台 10 维选型指南(附选型评分表)
人工智能·kubernetes·大模型·云计算·gpu·算力调度·智算中心