)
文档/教程【免费下载链接】90DaysOfDevOpsThis repository started out as a learning in public project for myself and has now become a structured learning map for many in the community. We have 3 years under our belt covering all things DevOps, including Principles, Processes, Tooling and Use Cases surrounding this vast topic.项目地址https://gitcode.com/gh_mirrors/90/90DaysOfDevOps点击查看免费下载本篇技术指南以 90DaysOfDevOps 2024 社区系列第 6 天Kubernetes RBAC with Ansible主讲人 Elif Samedin 与 Andrei Buzoianu的演示为骨架系统拆解 Kubernetes 容器编排、Ansible 声明式自动化与 HashiCorp Vault 密钥管理三者如何协同实现客户端证书自动生成 → 安全存储 → 基于角色授权的完整安全链路。读完本文你将掌握三种技术在复杂 IT 环境中的职责边界、最小权限Least Privilege原则的落地方式以及 CSR 自动批准、外部 CA 集成等后续自动化扩展思路并能在仓库中定位对应的 RBAC 配置与 Ansible 实践资源。三种技术组件各自解决什么问题本演示的核心是三个成熟开源/商业组件的组合Kubernetes、Ansible 与 HashiCorp Vault。它们分别承担运行平台自动化编排安全存储三种职责组合起来正好覆盖了现代基础设施中谁来跑、怎么配置、如何保护三个关键问题。Kubernetes容器管理的控制平面Kubernetes 是容器管理平台核心价值在于简化应用的构建、部署与扩缩容流程。它把服务器视为可调度资源通过持续监控资源使用情况确定容器最高效的放置位置与扩缩策略从而最大化资源利用率、降低成本。从仓库中的实际部署脚本可见这一平台的搭建方式2022/Days/Kubernetes/scripts/master.sh 展示了用kubeadm init初始化控制平面、安装 Calico 网络插件与 Metrics Server 的完整过程——这正是把服务器当作资源池、由控制平面统一调度的实现基础。注意该脚本中还有一段为 Kubernetes Dashboard 创建admin-user的ServiceAccount与ClusterRoleBinding的代码它是理解下文 RBAC 概念的最佳起点apiVersion: v1 kind: ServiceAccount metadata: name: admin-user namespace: kubernetes-dashboard --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: admin-user roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: admin-user namespace: kubernetes-dashboard这段配置的核心逻辑是先定义一个服务账号ServiceAccount再通过ClusterRoleBinding把系统内置的cluster-admin集群角色授予该账号。角色Role/ClusterRole定义能做什么绑定RoleBinding/ClusterRoleBinding决定谁可以拥有这些权限——这正是 Kubernetes RBAC 的基本心智模型。Ansible声明式的自动化引擎Ansible 是开源自动化工具典型用途包括配置管理Configuration Management、应用部署Application Deployment、服务间编排Intraservice Orchestration与置备Provisioning。其最大特性是采用声明式Declarative方式通过 YAML 编写的 Playbook 定义 IT 环境的期望状态而非一步步描述怎么做。仓库中的 2022/Days/Configmgmt/simple_play.yml 就是一个最小可运行的 Playbook 示例展示了其声明目标状态的写作范式- name: Simple Play hosts: localhost connection: local tasks: - name: Ping me ping: - name: print os debug: msg: {{ ansible_os_family }}而 2022/Days/Configmgmt 目录下的多个ansible-scenario*目录则展示了更复杂的角色roles组织方式——每个角色包含meta/main.yml、tasks、templates等标准结构说明 Ansible 在真实工程中可以通过角色体系把配置逻辑模块化、可复用。在 Day 6 的演示场景里Ansible 的职责正是把生成 Kubernetes 客户端证书这类繁琐、易错的手工操作变成可重复执行的自动化流程。HashiCorp Vault集中式密钥管理HashiCorp Vault 是安全工具专长于密钥管理Secrets Management、数据加密Data Encryption与基于身份的访问控制Identity-based Access。它提供集中式平台用于安全地存储、访问和管理敏感数据如令牌tokens、密码passwords、证书certificates与 API 密钥API keys。Vault 的核心能力在原文档中明确列出本文将其整理为四个维度能力维度说明密钥集中存储将散落在各处的敏感数据统一收拢到单一平台避免密钥散落数据加密存储的机密通过强加密保护防止明文泄露基于身份的访问控制严格控制谁能访问哪些密钥配合审计日志可追踪每一次访问灵活后端与集成支持多种存储后端与云环境和本地环境on-premises无缝集成在本演示中Vault 使用Key ValueKVsecrets engine键值机密引擎来存放 Ansible 生成的客户端证书——这是 Vault 中最常用、最适合存储证书/文件类机密的引擎类型负责对这些关键文件提供安全存储与访问控制。演示主线Ansible 生成证书 Vault 保护证书整个演示的集成逻辑可以概括为一条清晰的安全流水线身份认证自动化用户向 Kubernetes API 进行身份认证所需的客户端证书由 Ansible 自动化批量生成。这避免了人工手动创建证书的低效与出错风险。证书安全落盘生成的关键证书文件并不直接散落在工作节点或运维机器上而是存入 Vault 集群的 KV secrets engine由 Vault 统一负责安全存储与访问控制。授权最小化结合 Kubernetes RBAC确保每个用户只拥有与其角色相匹配的必要资源访问权限。这条链路体现了两个安全设计要点安全性与保密性证书作为身份凭证类机密一旦泄露即可被冒用必须走集中式加密存储与审计而非停留在本地文件系统。体验无缝化Ansible 负责生成Vault 负责保管Kubernetes 负责授权三者的组合让管理员在管理客户端证书时既有高级别安全保障又获得顺畅的自动化体验。最小权限原则把授权校准到恰好够用演示所采用的方法与**最小权限原则Principle of Least Privilege**高度一致用户只应拥有执行其角色任务所必需的资源访问权。通过精心校准用户访问权限使其精确匹配各自的操作需求既能简化流程又能加固整体安全框架。在 Kubernetes 生态中这一原则落地在 RBAC 对象上。仓库中的 2022/Days/CICD/Jenkins/jenkins-sa.yml 是一个很好的精细授权范例——它没有使用粗暴的cluster-admin而是为 Jenkins 定义了定制化的ClusterRole仅授予其 CI/CD 场景实际需要的资源与操作apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: annotations: rbac.authorization.kubernetes.io/autoupdate: true labels: kubernetes.io/bootstrapping: rbac-defaults name: jenkins rules: - apiGroups: - * resources: - statefulsets - services - replicationcontrollers - replicasets - podtemplates - podsecuritypolicies - pods - pods/log - pods/exec - podpreset - poddisruptionbudget - persistentvolumes - persistentvolumeclaims - jobs - endpoints - deployments - deployments/scale - daemonsets - cronjobs - configmaps - namespaces - events - secrets verbs: - create - get - watch - delete - list - patch - update - apiGroups: - resources: - nodes verbs: - get - list - watch - update --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: annotations: rbac.authorization.kubernetes.io/autoupdate: true labels: kubernetes.io/bootstrapping: rbac-defaults name: jenkins roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: jenkins subjects: - apiGroup: rbac.authorization.k8s.io kind: Group name: system:serviceaccounts:jenkins从源码结构可以看出最小权限的两层实践按需声明规则rules字段逐一列出资源与动词get/list/watch/create/delete等的白名单而不是给一个*的万能权限按主体绑定授权ClusterRoleBinding只把角色授予特定主体这里是system:serviceaccounts:jenkins这个组确保权限不会外溢到其他服务账号。进一步自动化与集成机会原文档还提到若干可扩展方向这些是演示方案演进的自然延伸CSR 的自动批准与轮换Kubernetes 的 CertificateSigningRequestCSR机制本身支持以 RBAC 授权谁可以批准 CSR配合自动化可以在证书到期前自动发起、批准并轮换新证书形成证书生命周期自循环与外部 CA 集成证书签名不必局限于集群内部自签可以对接外部证书颁发机构CA统一签名策略满足企业级合规要求扩展管理工具与策略将上述能力接入更大的自动化平台与治理策略实现规模化推广。这些方向与 Vault 的 PKI secrets engine动态签发、自动续期天然互补从源码结构可以推断当管理规模扩大后采用Ansible 负责编排触发、Vault 负责签发与保管、Kubernetes RBAC 负责授权的分层架构是把演示方案工程化的可行路径。真实世界场景RBAC 为什么如此重要演讲者给出了贴近现实的两个应用案例医院场景不同岗位的医护人员对患者记录拥有不同的访问权限角色化的访问控制确保该看的能看到、不该看的碰不到直接关系到患者隐私安全合规场景组织通过精细的访问控制满足 HIPAA医疗健康信息隐私法规与 GDPR欧盟数据保护条例等监管要求。这两个案例的共同点是它们都属于同一套数据、多种身份、不同权限的经典 RBAC 问题与 Kubernetes 中多个用户/服务账号访问同一集群资源的问题本质一致。这也解释了为何Kubernetes Ansible Vault三件套的组合具备通用价值——Kubernetes 提供资源与身份的运行时Ansible 把授权与证书流程自动化Vault 为身份凭证提供加密存储与审计三者共同为复杂 IT 环境提供了安全与效率的平衡底座。仓库实践资源导航若希望进一步动手验证可在本仓库中找到以下配套资源Kubernetes 集群搭建与 RBAC 示例2022/Days/Kubernetes/scripts/master.sh含 kubeadm 初始化与 Dashboard 用户授权、2022/Days/Kubernetes/Vagrantfile多节点环境定义精细 RBAC 授权示例2022/Days/CICD/Jenkins/jenkins-sa.yml自定义 ClusterRole ClusterRoleBindingAnsible 入门与进阶2022/Days/Configmgmt/simple_play.yml最小 Playbook、2022/Days/Configmgmt多场景角色化配置管理2024 系列其他安全主题可继续阅读 2024/day14.mdKubernetes 中的 API 安全、2024/day24.mdDevSecOps等社区分享从不同视角深化对云原生安全的理解结合本仓库的 2024 社区系列上下文见 2024.md 的日程表Day 6 是安全主题链路上承上启下的一环它用一个可复现的演示把容器平台、自动化与密钥管理三个领域缝合在一起为后续的 API 安全、容器安全等主题奠定了身份与访问控制的基础认知。赞分享文档/教程【免费下载链接】90DaysOfDevOpsThis repository started out as a learning in public project for myself and has now become a structured learning map for many in the community. We have 3 years under our belt covering all things DevOps, including Principles, Processes, Tooling and Use Cases surrounding this vast topic.项目地址https://gitcode.com/gh_mirrors/90/90DaysOfDevOps点击查看免费下载相关推荐CANN/asc-devkit L1到GM数据搬运APIasc_copy_l12gm 产品支持情况 ! npu950 id1 Ascend 950PR/Ascend 950DT不支持 ! end id1人工智能深度学习算子库CANNAscend探索安全的密钥管理HashiCorp Vault-K8s探索安全的密钥管理HashiCorp Vault K8s 在云原生环境中数据安全性是至关重要的尤其是对于敏感的密码、API密钥和证书而言。这就是是将Vau深入解析xcit_medium_24_p16_384.fb_dist_in1k为什么这个图像分类模型如此高效深入解析xcit_medium_24_p16_384.fb_dist_in1k为什么这个图像分类模型如此高效 在计算机视觉领域图像分类模型xcit_med上一篇AutoClicker全局热键完全教程F6/F7/F8自动点击快捷键如何自定义设置下一篇RViz里看不到彩色网格solidworks_urdf_exporter的3DXML转DAE修复教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考