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

Kubernetes RBAC 怎么配置和使用?

想象一下管理一个繁忙的 Kubernetes 集群其中多个团队部署应用程序、监控服务并排查问题。如果没有适当的访问控制就会出现混乱导致开发者意外修改关键资源或未经授权的用户访问敏感数据。为了防止此类情况Kubernetes 提供了基于角色的访问控制 (RBAC)这是一种基于用户角色的访问调控机制。在本章中我们将探索 Kubernetes 中的 RBAC了解其组件并学习如何使用 YAML 配置实现它。到最后我们将能够定义角色、分配权限并维护一个安全的集群环境。什么是 RBACRBAC 是一种安全机制帮助我们根据用户的角色管理权限。它确保只有授权用户才能访问或修改 Kubernetes 中的资源。它基于四个关键组件运行Role− 定义可以在哪些资源上执行哪些操作。RoleBinding− 将 Role 分配给用户或组。ClusterRole− 适用于整个集群的 Role。ClusterRoleBinding− 将 ClusterRole 授予用户或组。为什么我们需要 RBAC没有 RBAC任何有权访问集群的用户都可以删除 pods、修改配置甚至关闭服务。这是一个安全噩梦有了 RBAC我们可以限制对敏感数据的访问。防止意外或恶意操作。根据团队职责组织权限。步骤 1启用 RBAC大多数现代 Kubernetes 发行版默认启用了 RBAC。要验证其状态请运行kubectl api-versions | grep rbac.authorization.k8s.io如果 RBAC 已启用将看到以下输出rbac.authorization.k8s.io/v1如果未启用您可以在 Kubernetes API server 中使用--authorization-modeRBAC标志简单启用它。步骤 2创建 RoleKubernetes 中的 Role 定义特定 namespace 内的权限。假设我们想授予开发团队在 development namespace 中列出和获取 pods 的权限。创建 Namespace在定义 Role 之前我们首先确保 development namespace 存在$ kubectl create namespace development输出namespace/development created创建 Role 定义使用编辑器创建一个名为role.yaml的文件并添加以下内容apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: development name: developer-role rules: - apiGroups: [] resources: [pods] verbs: [get, list]应用 Role$ kubectl apply -f role.yaml输出role.rbac.authorization.k8s.io/developer-role created这确保了 Role 在 development namespace 中成功创建。步骤 3将 Role 绑定到用户RoleBinding 将 Role 链接到用户或组。让我们将 developer-role 分配给名为 alice 的用户。使用编辑器创建以下名为rolebinding.yaml的文件并添加以下内容apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: developer-rolebinding namespace: development subjects: - kind: User name: alice apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: developer-role apiGroup: rbac.authorization.k8s.io应用 RoleBinding$ kubectl apply -f rolebinding.yaml输出role.rbac.authorization.k8s.io/developer-role created现在Alice 可以在 development namespace 中列出和获取 pods但无法进行更改。步骤 4创建 ClusterRole如果我们需要一个跨所有 namespace 应用的 role我们可以简单地创建 ClusterRole。例如让 Alice 查看集群中的所有 pods。使用编辑器创建以下名为clusterrole.yaml的文件并添加以下内容apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: cluster-viewer rules: - apiGroups: [] resources: [pods] verbs: [get, list]应用 ClusterRole$ kubectl apply -f clusterrole.yaml输出clusterrole.rbac.authorization.k8s.io/cluster-viewer created步骤 5绑定 ClusterRole由于此 role 应用于整个集群我们可以使用 ClusterRoleBinding 授予 Alice 这些权限。使用编辑器创建以下名为clusterrolebinding.yaml的文件并添加以下内容apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: cluster-viewer-binding subjects: - kind: User name: alice apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: cluster-viewer apiGroup: rbac.authorization.k8s.io应用 ClusterRoleBindingkubectl apply -f clusterrolebinding.yaml输出clusterrolebinding.rbac.authorization.k8s.io/cluster-viewer-binding created现在Alice 可以在任何 namespace 中列出 pods。步骤 6验证 RBAC 权限要确认 Alice 的权限请使用kubectl auth can-ikubectl auth can-i list pods --namespacedevelopment --asalice如果权限设置正确将看到以下输出yes如果 Alice 尝试未经授权的操作例如删除 podkubectl auth can-i delete pods --namespacedevelopment --asalice输出将是no步骤 7管理和审计 RBAC列出现有 Roles要查看 namespace 中的所有 roles$ kubectl get roles -n development输出NAME CREATED AT developer-role 2025-03-06T17:13:24Z对于 ClusterRoles$ kubectl get clusterroles输出NAME CREATED AT admin 2025-02-25T10:07:12Z argocd-application-controller 2025-02-27T11:38:34Z argocd-applicationset-controller 2025-02-27T11:38:34Z argocd-server 2025-02-27T11:38:34Z calico-cni-plugin 2025-02-26T13:55:30Z calico-kube-controllers 2025-02-26T13:55:30Z calico-node 2025-02-26T13:55:30Z cluster-admin 2025-02-25T10:07:11Z cluster-viewer 2025-03-06T17:25:05Z edit 2025-02-25T10:07:12Z kubeadm:get-nodes 2025-02-25T10:07:18Z system:aggregate-to-admin 2025-02-25T10:07:12Z system:aggregate-to-edit 2025-02-25T10:07:12Z system:aggregate-to-view 2025-02-25T10:07:12Z system:auth-delegator 2025-02-25T10:07:13Z system:basic-user 2025-02-25T10:07:12Z system:certificates.k8s.io:certificatesigningrequests:nodeclient 2025-02-25T10:07:13Z system:certificates.k8s.io:certificatesigningrequests:selfnodeclient 2025-02-25T10:07:13Z system:certificates.k8s.io:kube-apiserver-client-approver 2025-02-25T10:07:13Z system:certificates.k8s.io:kube-apiserver-client-kubelet-approver 2025-02-25T10:07:14Z system:certificates.k8s.io:kubelet-serving-approver 2025-02-25T10:07:13Z system:certificates.k8s.io:legacy-unknown-approver 2025-02-25T10:07:13Z system:controller:attachdetach-controller 2025-02-25T10:07:14Z system:controller:certificate-controller 2025-02-25T10:07:15Z system:controller:clusterrole-aggregation-controller 2025-02-25T10:07:14Z system:controller:cronjob-controller 2025-02-25T10:07:14Z system:controller:daemon-set-controller 2025-02-25T10:07:14Z检查 RoleBindings要在某个 namespace 中查看 RoleBindings$ kubectl get rolebindings -n development输出NAME ROLE AGE developer-rolebinding Role/developer-role 13m对于 ClusterRoleBindings$ kubectl get clusterrolebindings输出NAME ROLE AGE argocd-application-controller ClusterRole/argocd-application-controller 7d5h argocd-applicationset-controller ClusterRole/argocd-applicationset-controller 7d5h argocd-server ClusterRole/argocd-server 7d5h calico-cni-plugin ClusterRole/calico-cni-plugin 8d calico-kube-controllers ClusterRole/calico-kube-controllers 8d calico-node ClusterRole/calico-node 8d cluster-admin ClusterRole/cluster-admin 9d cluster-viewer-binding ClusterRole/cluster-viewer 9m52s kubeadm:cluster-admins ClusterRole/cluster-admin 9d kubeadm:get-nodes ClusterRole/kubeadm:get-nodes 9d kubeadm:kubelet-bootstrap ClusterRole/system:node-bootstrapper 9d删除 Role 或 RoleBinding要删除一个 Role$ kubectl delete role developer-role -n development输出role.rbac.authorization.k8s.io developer-role deleted要删除一个 RoleBinding$ kubectl delete rolebinding developer-rolebinding -n development输出rolebinding.rbac.authorization.k8s.io developer-rolebinding deleted总结在 Kubernetes 中实现基于角色的访问控制 (RBAC) 是保护集群安全并确保对资源具有适当访问权限的基础。定期审计和管理 RBAC 配置可以确保您的访问控制适应不断演变的团队结构和项目需求。随着 Kubernetes 环境的增长良好实施的 RBAC 策略对于维护安全高效的基础设施变得不可或缺。通过遵循本章概述的步骤您可以自信地在 Kubernetes 集群中设置和管理 RBAC。

相关文章:

Kubernetes RBAC 怎么配置和使用?

想象一下管理一个繁忙的 Kubernetes 集群,其中多个团队部署应用程序、监控服务并排查问题。如果没有适当的访问控制,就会出现混乱,导致开发者意外修改关键资源,或未经授权的用户访问敏感数据。为了防止此类情况,Kubern…...

Text2Video-Zero性能优化终极指南:Token Merging技术如何让AI视频生成提速3倍?

Text2Video-Zero性能优化终极指南:Token Merging技术如何让AI视频生成提速3倍? 【免费下载链接】Text2Video-Zero [ICCV 2023 Oral] Text-to-Image Diffusion Models are Zero-Shot Video Generators 项目地址: https://gitcode.com/gh_mirrors/te/Tex…...

泛素酶:泛素化研究的基石,PROTAC开发的核心

泛素酶与PROTAC蛋白质作为生命活动的主要承担者,在完成使命后需要及时启动降解和清除。如果在这个过程中出现问题,就会引发一系列疾病,最典型的当属神经退行性疾病,如阿尔茨海默症、帕金森、亨廷顿病等。人体细胞降解蛋白质的主要…...

Amazon VPC CNI安全组每Pod配置:终极网络隔离方案详解

Amazon VPC CNI安全组每Pod配置:终极网络隔离方案详解 【免费下载链接】amazon-vpc-cni-k8s Networking plugin repository for pod networking in Kubernetes using Elastic Network Interfaces on AWS 项目地址: https://gitcode.com/gh_mirrors/am/amazon-vpc-…...

重组过敏原蛋白:新一代过敏原检测核心试剂

过敏性疾病包括哪些过敏性疾病如特异性皮炎、食物过敏、过敏性鼻炎、哮喘、荨麻疹等,发病率逐年提高,已经成为影响人类健康的主要疾病之一。处理不及时可能会危及生命,已成为公共卫生关注的热点,是六大慢性疾病之一。据世界变态反…...

【C#】读取csv文件数据返回DataTable

CSV(Comma-Separated Values)是数据交换中最常用的格式之一。在.NET开发中,将CSV数据加载到DataTable对象中可以方便地进行数据绑定、查询和操作。本文将介绍几种主流实现方案及其适用场景。 一、方案对比概览方案优点缺点适用场景OleDb Mic…...

如何快速掌握TX-LCN分布式事务框架:从理论到实践的完整指南

如何快速掌握TX-LCN分布式事务框架:从理论到实践的完整指南 【免费下载链接】tx-lcn codingapi/tx-lcn: 一个基于 Java 的分布式事务框架,用于解决分布式系统中的事务问题。适合在分布式系统中需要处理事务的场景,可以实现高性能、高可用性的…...

剪映-技巧

1.动画的关键帧关键帧:在一段素材的任意两个位置插入两个关键帧,就能对这段素材进行一些缩放,阴影淡入等等操作,第一个关键帧处相当于是起始点,第二个关键帧处相当于是终止点。(小菱形是插入关键帧&#xf…...

凌欧FOC框架硬件初始化实战:从DSP到ADC的启动配置

1. 凌欧FOC框架硬件初始化概述 第一次接触凌欧FOC框架时,我被它简洁高效的硬件抽象层设计所吸引。作为国产电机控制芯片的佼佼者,凌欧的这套框架特别适合需要快速实现无刷电机控制的开发者。硬件初始化作为整个系统启动的第一步,直接决定了后…...

UE4中利用Render Target实现动态绘画效果的实战指南

1. 理解Render Target的基本概念 在UE4中,Render Target(渲染目标)是一个非常重要的概念,它本质上是一个可以被渲染器写入的纹理。你可以把它想象成一块画布,游戏引擎可以把任何3D场景或者2D元素渲染到这个画布上&…...

CVPR2024知识蒸馏前沿:10大创新方法与应用场景解析

1. 知识蒸馏技术演进与CVPR2024新趋势 知识蒸馏作为模型压缩领域的核心技术,近年来在CVPR会议上持续引发研究热潮。2024年的最新进展显示,这项技术正在从传统的师生架构向更复杂的多模态、对抗性训练范式演进。与早期仅关注分类任务不同,当前…...

终极JSON Web Token安全实践:learn-json-web-tokens代码审查与重构指南

终极JSON Web Token安全实践:learn-json-web-tokens代码审查与重构指南 【免费下载链接】learn-json-web-tokens :closed_lock_with_key: Learn how to use JSON Web Token (JWT) to secure your next Web App! (Tutorial/Example with Tests!!) 项目地址: https:…...

10个JavaScript核心概念深度解析:从基础到高级的面试通关指南

10个JavaScript核心概念深度解析:从基础到高级的面试通关指南 【免费下载链接】front-end-interview-handbook Front End interview preparation materials for busy engineers (updated for 2026) 项目地址: https://gitcode.com/GitHub_Trending/fr/front-end-i…...

低代码AI短剧创作平台源码 附二次开发文档

温馨提示:文末有资源获取方式为什么选择这套系统?2025年短剧市场产值已突破600亿,全年预计超1000亿24部AI短剧播放量破千万,头部作品播放量达2.7亿AI制作成本仅为传统方式的10%甚至更低几人团队、无需拍摄,几天完成一部…...

告别依赖管理噩梦:Renovate多语言依赖自动更新全攻略

告别依赖管理噩梦:Renovate多语言依赖自动更新全攻略 【免费下载链接】renovate Home of the Renovate CLI: Cross-platform Dependency Automation by Mend.io 项目地址: https://gitcode.com/GitHub_Trending/re/renovate 在现代软件开发中,依赖…...

旅游推荐进入多模态纪元(SITS2026权威白皮书首发):融合CV、NLP、时空图神经网络的工业级落地路径

第一章:旅游推荐进入多模态纪元(SITS2026权威白皮书首发) 2026奇点智能技术大会(https://ml-summit.org) 随着视觉语言模型、跨模态对齐技术和多源异构数据融合能力的突破性进展,旅游推荐系统正经历从单模态文本驱动向多模态协同…...

AI短剧制作系统源码 源码解读+二次开发指南

温馨提示:文末有资源获取方式一、系统源码核心架构解读1. 整体技术栈后端:PHP MySQL,采用MVC分层架构前端:Vue3 Element Plus,支持响应式布局AI接口层:统一封装多模型调用接口,便于扩展2. 核心…...

3分钟定位Redux状态异常:DevTools Extension高级调试指南

3分钟定位Redux状态异常:DevTools Extension高级调试指南 【免费下载链接】redux-devtools-extension Redux DevTools extension. 项目地址: https://gitcode.com/gh_mirrors/re/redux-devtools-extension Redux DevTools Extension是一款强大的调试工具&…...

突破语言壁垒:The Art of Command Line多语言架构与本地化实践指南

突破语言壁垒:The Art of Command Line多语言架构与本地化实践指南 【免费下载链接】the-art-of-command-line Master the command line, in one page 项目地址: https://gitcode.com/GitHub_Trending/th/the-art-of-command-line The Art of Command Line 是…...

Chart.js项目实战:AI关键领域安全监控系统的完整指南

Chart.js项目实战:AI关键领域安全监控系统的完整指南 【免费下载链接】awesome A curated list of awesome Chart.js resources and libraries 项目地址: https://gitcode.com/GitHub_Trending/awesome/awesome 在当今数字化时代,AI技术的快速发展…...

intv_ai_mk11绿色低碳:24GB显存低功耗运行,适合边缘AI服务器部署

intv_ai_mk11绿色低碳:24GB显存低功耗运行,适合边缘AI服务器部署 1. 模型概述 intv_ai_mk11是一款基于Llama架构的中等规模文本生成模型,专为边缘计算环境优化设计。该模型在保持高性能的同时,显著降低了硬件资源需求&#xff0…...

Vue Font Awesome 升级指南:从旧版本迁移到 Vue 3 的 7 个关键步骤

Vue Font Awesome 升级指南:从旧版本迁移到 Vue 3 的 7 个关键步骤 【免费下载链接】vue-fontawesome Font Awesome Vue component 项目地址: https://gitcode.com/gh_mirrors/vu/vue-fontawesome Vue Font Awesome 是一款强大的 Font Awesome Vue 3 组件&am…...

如何高效集成DVA与Apollo Client:GraphQL状态管理终极指南

如何高效集成DVA与Apollo Client:GraphQL状态管理终极指南 【免费下载链接】dva 🌱 React and redux based, lightweight and elm-style framework. (Inspired by elm and choo) 项目地址: https://gitcode.com/gh_mirrors/dv/dva DVA是一个基于R…...

【Docker】防火墙规则配置实战:从ufw到iptables的进阶指南

1. 为什么Docker需要防火墙配置? 想象一下,你刚把一个Web应用打包成Docker容器,兴冲冲地部署到服务器上。结果第二天发现服务器被挖矿程序入侵了——原因仅仅是容器暴露的某个端口被恶意扫描利用。这种场景在实际运维中并不罕见,…...

终极指南:如何用math-as-code实现差分隐私的数学符号转换

终极指南:如何用math-as-code实现差分隐私的数学符号转换 【免费下载链接】math-as-code a cheat-sheet for mathematical notation in code form 项目地址: https://gitcode.com/gh_mirrors/ma/math-as-code 在数据驱动的时代,保护用户隐私至关重…...

终极指南:如何在Tsuru平台中实现分布式追踪和OpenTelemetry集成

终极指南:如何在Tsuru平台中实现分布式追踪和OpenTelemetry集成 【免费下载链接】tsuru Open source and extensible Platform as a Service (PaaS). 项目地址: https://gitcode.com/gh_mirrors/ts/tsuru Tsuru是一个开源且可扩展的Platform as a Service (P…...

团队代码质量协作利器:PMD实时共享分析结果的终极指南

团队代码质量协作利器:PMD实时共享分析结果的终极指南 【免费下载链接】pmd An extensible multilanguage static code analyzer. 项目地址: https://gitcode.com/gh_mirrors/pm/pmd PMD是一款功能强大的多语言静态代码分析工具,能帮助开发团队自…...

终极Favicon跨平台适配指南:Windows、macOS与Linux的图标差异全解析

终极Favicon跨平台适配指南:Windows、macOS与Linux的图标差异全解析 【免费下载链接】favicon-cheat-sheet Obsessive cheat sheet to favicon sizes/types. 项目地址: https://gitcode.com/gh_mirrors/fa/favicon-cheat-sheet favicon-cheat-sheet是一份详尽…...

终极指南:Vuls代理配置自动化——环境变量注入与动态调整方案

终极指南:Vuls代理配置自动化——环境变量注入与动态调整方案 【免费下载链接】vuls Agent-less vulnerability scanner for Linux, FreeBSD, Container, WordPress, Programming language libraries, Network devices 项目地址: https://gitcode.com/gh_mirrors/…...

从跌倒检测到平衡小车:用ADXL345传感器玩转STM32的几种实战应用

从跌倒检测到平衡小车:用ADXL345传感器玩转STM32的几种实战应用 当你已经成功驱动ADXL345传感器并能够读取XYZ三轴数据时,是否曾思考过这些数字背后隐藏的无限可能?在创客的世界里,传感器从来不只是冰冷的数据采集器,而…...