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

【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.xdnf.cn/news/15520.html

相关文章:

  • xss-labs通关
  • 微服务架构升级:从Dubbo到SpringCloud的技术演进
  • PandaWiki与GitBook深度对比:AI时代的知识管理工具,选谁好?
  • 数据库(five day)——物物而不物于物,念念而不念于念。
  • 自适应哈希索引 和 日志缓冲区
  • 将Android Studio创建的一个apk工程放到Android15源码中构建
  • Jmeter+ant+jenkins接口自动化测试框架
  • docker run elasticsearch 报错
  • Spring之核心容器(IoC,DI,基本操作)详解
  • LeetCode|Day15|125. 验证回文串|Python刷题笔记
  • 912. 排序数组
  • 基于docker的redis集群
  • web前端用MVP模式搭建项目
  • Redisson实现限流器详解:从原理到实践
  • Vue加密文章密码 VuePress
  • 数据结构 双向链表(1)
  • 基于Matlab的四旋翼无人机动力学PID控制仿真
  • PyTorch 参数初始化详解:从理论到实践
  • ZYNQ Petalinux系统FLASH固化终极指南:创新多分区与双系统切换实战
  • 如何区分Bug是前端问题还是后端问题?
  • UE5多人MOBA+GAS 24、创建属性UI(一)
  • 插板式系统的“生命线“:EtherCAT分布式供电该如何实现?
  • 第13章 AB实验平台的建设
  • 解锁高效Excel技能:摆脱鼠标,快速编辑单元格
  • 凯伦股份融合复合瓦:新时代可焊接物理防腐金属屋面系统方案
  • Mysql练习
  • Linux命令大全
  • 第五章 管道工程 5.4 管道安全质量控制
  • 设计一款用于捕捉动态产品视频的摄像机器人
  • 元宇宙经济:虚实融合引发经济新变革