当前位置: 首页 > news >正文

【kubernetes】--安全认证机制

文章目录

    • 安全认证
      • 1. **身份认证(Authentication)**
      • 2. **授权(Authorization)**
      • 3. **准入控制(Admission Control)**
      • 4. **机密信息管理**
      • 5. **其他安全实践**

安全认证

Kubernetes 的安全机制覆盖了从身份验证到资源操作的完整链条:

  1. 认证 → 2. 授权 → 3. 准入控制 → 4. 资源管理
    生产环境中建议:
  • 使用 RBAC + ServiceAccount 进行最小权限分配。
  • 启用 Pod 安全准入网络策略
  • 定期轮换证书和令牌。

通过组合这些机制,可以构建一个符合零信任原则的 Kubernetes 集群安全体系。

1. 身份认证(Authentication)

http token和账户密码等
https ca证书

  • X.509 客户端证书

    • 通过 TLS 双向认证,客户端使用证书(如 kubectl--client-certificate--client-key 参数)向 API Server 证明身份。
    • 证书由集群 CA 签发,需在 API Server 启动时配置 --client-ca-file
  • Bearer Token(静态令牌)

    • 静态令牌文件通过 --token-auth-file 指定,令牌以明文形式存储在文件中(不推荐生产环境使用)。
    • 通常用于服务账户(ServiceAccount)的自动生成令牌(JWT格式)。
  • ServiceAccount(服务账户)

    • 每个 Pod 默认挂载一个 ServiceAccount 的令牌(位于 /var/run/secrets/kubernetes.io/serviceaccount/token)。
    • API Server 通过 --service-account-key-file 验证令牌签名。
  • OpenID Connect (OIDC)

    • 集成第三方身份提供商(如 Google、Azure AD),用户通过 OAuth 2.0 流程获取 ID Token 后访问集群。
  • Webhook 令牌认证

    • 将令牌验证委托给外部服务(如自定义认证服务),通过 --authentication-token-webhook-config-file 配置。
  • 匿名请求

    • 默认允许匿名请求(身份为 system:anonymous),可通过 --anonymous-auth=false 禁用。

2. 授权(Authorization)

通过 RBAC(主流)、ABAC、Node Authorization 等机制控制已认证用户的权限:

  • RBAC(基于角色的访问控制)

    • 定义 Role(命名空间内权限)和 ClusterRole(集群范围权限),再通过 RoleBinding/ClusterRoleBinding 绑定到用户、组或 ServiceAccount。
    • 示例:允许某用户读取 Pod 信息:
      apiVersion: rbac.authorization.k8s.io/v1
      kind: Role
      metadata:namespace: defaultname: pod-reader
      rules:
      - apiGroups: [""]resources: ["pods"]verbs: ["get", "list", "watch"]
      
  • ABAC(基于属性的访问控制)

    • 通过策略文件(--authorization-policy-file)定义规则,灵活性差,已逐渐被 RBAC 取代。
  • Node Authorization

    • 专门授权 kubelet 访问节点相关资源(如 Pod、Secret)。
  • Webhook 授权

    • 将授权决策委托给外部 HTTP 服务。

3. 准入控制(Admission Control)

在请求通过认证和授权后,API Server 会调用准入控制器(Admission Controllers)进行更精细的资源校验或修改:

  • 内置控制器

    • NamespaceLifecycle:防止在终止的命名空间中创建资源。
    • ResourceQuota:限制命名空间的资源使用量。
    • PodSecurity(替代 PSP):强制执行 Pod 安全标准(如禁止特权容器)。
    • MutatingAdmissionWebhook/ValidatingAdmissionWebhook:通过 Webhook 动态修改或验证资源。
  • 示例:使用 ValidatingAdmissionWebhook 拦截不符合标签要求的 Deployment。

4. 机密信息管理

  • Secrets
    • 存储敏感数据(如密码、令牌),以 Base64 编码形式存在 Etcd 中,建议启用加密(--encryption-provider-config)。
  • ConfigMap
    • 存储非敏感配置,与 Secrets 分离以降低风险。

5. 其他安全实践

  • API Server 安全配置
    • 启用 HTTPS(--tls-cert-file, --tls-private-key-file)。
    • 限制匿名访问和废弃 API 版本。
  • Etcd 加密
    • 静态数据加密(--encryption-provider-config)。
  • 网络策略(NetworkPolicy)
    • 控制 Pod 间网络流量(需 CNI 插件支持,如 Calico)。
  • Pod 安全上下文(SecurityContext)
    • 限制容器权限(如 runAsNonRoot: truereadOnlyRootFilesystem: true)。
http://www.lryc.cn/news/590254.html

相关文章:

  • 快速掌握 Kafka:从核心概念到生产级部署指南
  • 【ROS/DDS】FastDDS:C++编写一个发布者和订阅者应用程序(三)
  • C# 8.0 创建一个简单的控制台应用程序
  • Prompt Engineering 快速入门+实战案例
  • 面向向量检索的教育QA建模:九段日本文化研究所日本语学院的Prompt策略分析(6 / 500)
  • 基于大数据电信诈骗行为分析与可视化预测系统的设计与实现【海量数据、多种机器学习对比、数据优化、过采样】
  • 多房间 WebSocket 连接管理设计:从单例模式到多终端连接池
  • 【Qt】构建和编译 Qt 程序时如何减少生成的二进制可执行文件的大小
  • Navicat操作指南:MySQL数据库配置与Todo应用部署
  • MySQL 配置性能优化赛:用创意配置解锁性能潜能
  • 《Java语言程序设计》1.2.4复习题
  • 海盗王如何拍摄和打包小地图
  • 深度赋能推客,让 “业余选手” 变 “带货高手”​
  • Xsens人形机器人拟人动作AI训练,提升机器人工作精度与效率
  • HertzBeat 监控 SpringBoot 使用案例
  • 基于dcmtk的dicom工具 第二章 图像接受StoreSCP(1)
  • windows内核研究(进程与线程-等待链表和调度链表和线程切换)
  • 非控制器(如 Service、工具类)中便捷地获取当前 HTTP 请求的上下文信息
  • 16路串口光纤通信FPGA项目实现指南
  • 数据结构-1(顺序表)
  • 关于 OpenAI 的反思
  • GESP2025年6月认证C++四级( 第三部分编程题(2)排序)
  • 多态,内部类(匿名内部类),常用API(1)
  • HTTP vs HTTPS
  • 【React Native】布局文件-顶部导航栏
  • 从零开始学习 Redux:React Native 项目中的状态管理
  • 3D TOF 安全防护传感器
  • Ubuntu 上 GBase 8s 实例重启与字符集踩坑实录
  • 在UE中如何给骨骼网格体赋予动画
  • conda activate 时报错: CondaError: Run ‘conda init‘ before ‘conda activate‘