auditing-kubernetes-rbac-permissions

Kubernetes 基于角色的访问控制(RBAC)审计,系统性地审查角色、集群角色、绑定关系及服务账户权限,以识别过度宽松的访问配置、权限提升路径及违反最小权限原则的情况。

9 stars

Best use case

auditing-kubernetes-rbac-permissions is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Kubernetes 基于角色的访问控制(RBAC)审计,系统性地审查角色、集群角色、绑定关系及服务账户权限,以识别过度宽松的访问配置、权限提升路径及违反最小权限原则的情况。

Teams using auditing-kubernetes-rbac-permissions should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/auditing-kubernetes-rbac-permissions/SKILL.md --create-dirs "https://raw.githubusercontent.com/killvxk/cybersecurity-skills-zh/main/skills/auditing-kubernetes-rbac-permissions/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/auditing-kubernetes-rbac-permissions/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How auditing-kubernetes-rbac-permissions Compares

Feature / Agentauditing-kubernetes-rbac-permissionsStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Kubernetes 基于角色的访问控制(RBAC)审计,系统性地审查角色、集群角色、绑定关系及服务账户权限,以识别过度宽松的访问配置、权限提升路径及违反最小权限原则的情况。

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# 审计 Kubernetes RBAC 权限

## 概述

Kubernetes 基于角色的访问控制(RBAC)审计系统性地审查角色、集群角色、绑定关系及服务账户权限,以识别过度宽松的访问配置、权限提升路径及违反最小权限原则的情况。rbac-tool、KubiScan 和 rakkess 等工具可自动发现危险的权限组合。

## 前置条件

- 启用 RBAC 的 Kubernetes 集群(自 1.6 版本起为默认配置)
- 具有 cluster-admin 访问权限的 kubectl 以进行完整审计
- 已安装 rbac-tool、rakkess 或 KubiScan

## 核心概念

### RBAC 组件

| 资源 | 作用域 | 用途 |
|----------|-------|---------|
| Role | 命名空间 | 授予命名空间内的权限 |
| ClusterRole | 集群 | 授予集群范围的权限 |
| RoleBinding | 命名空间 | 在命名空间内将 Role/ClusterRole 绑定到主体 |
| ClusterRoleBinding | 集群 | 将 ClusterRole 绑定到集群范围的主体 |

### 危险权限组合

| 权限 | 风险等级 | 影响 |
|-----------|------|--------|
| `*` on `*` 资源 | 严重 | 等同于 cluster-admin |
| create pods | 高 | 可部署特权 Pod |
| create pods/exec | 高 | 可 exec 进入任意 Pod |
| get secrets | 高 | 可读取所有 Secret |
| create clusterrolebindings | 严重 | 可提升至 cluster-admin |
| impersonate users | 严重 | 可伪装成任意用户 |
| escalate on roles | 严重 | 可授予超出自身的权限 |
| bind on roles | 高 | 可创建新的角色绑定 |

## 实施步骤

### 步骤 1:枚举所有 RBAC 资源

```bash
# 列出所有 ClusterRole
kubectl get clusterroles -o name | wc -l
kubectl get clusterroles --no-headers | grep -v "system:"

# 列出所有 ClusterRoleBinding
kubectl get clusterrolebindings -o wide

# 按命名空间列出所有 Role
kubectl get roles -A

# 按命名空间列出所有 RoleBinding
kubectl get rolebindings -A -o wide

# 导出所有 RBAC 以进行离线分析
kubectl get clusterroles,clusterrolebindings,roles,rolebindings -A -o yaml > rbac-export.yaml
```

### 步骤 2:识别通配符权限

```bash
# 查找对所有资源具有通配符动词的 ClusterRole
kubectl get clusterroles -o json | jq -r '
  .items[] |
  select(.rules[]? |
    (.verbs | index("*")) and
    (.resources | index("*"))
  ) |
  .metadata.name'

# 查找可以创建 Pod 的角色
kubectl get clusterroles -o json | jq -r '
  .items[] |
  select(.rules[]? |
    (.verbs | index("create") or index("*")) and
    (.resources | index("pods") or index("*"))
  ) |
  .metadata.name'

# 查找可以读取 Secret 的角色
kubectl get clusterroles -o json | jq -r '
  .items[] |
  select(.rules[]? |
    (.verbs | index("get") or index("list") or index("*")) and
    (.resources | index("secrets") or index("*"))
  ) |
  .metadata.name'
```

### 步骤 3:检查服务账户权限

```bash
# 列出所有服务账户
kubectl get serviceaccounts -A

# 检查默认服务账户的权限
for ns in $(kubectl get ns -o jsonpath='{.items[*].metadata.name}'); do
  echo "=== $ns/default ==="
  kubectl auth can-i --list --as=system:serviceaccount:$ns:default 2>/dev/null | grep -v "no"
done

# 检查具有 cluster-admin 的服务账户
kubectl get clusterrolebindings -o json | jq -r '
  .items[] |
  select(.roleRef.name == "cluster-admin") |
  {binding: .metadata.name, subjects: [.subjects[]? | {kind, name, namespace}]}'
```

### 步骤 4:使用 rbac-tool 进行自动分析

```bash
# 安装 rbac-tool
kubectl krew install rbac-tool

# 可视化 RBAC
kubectl rbac-tool viz --outformat dot | dot -Tpng > rbac-graph.png

# 查找谁可以执行特定操作
kubectl rbac-tool who-can get secrets -A
kubectl rbac-tool who-can create pods -A
kubectl rbac-tool who-can '*' '*'

# 分析所有权限
kubectl rbac-tool analysis

# 生成 RBAC 策略报告
kubectl rbac-tool auditgen > rbac-audit.yaml
```

### 步骤 5:检查权限提升路径

```bash
# 检查是否有角色可以提升权限
kubectl get clusterroles -o json | jq -r '
  .items[] |
  select(.rules[]? |
    (.verbs | index("escalate") or index("bind") or index("impersonate")) and
    (.resources | index("clusterroles") or index("roles") or index("clusterrolebindings") or index("rolebindings") or index("users") or index("groups") or index("serviceaccounts"))
  ) |
  .metadata.name'

# 检查伪装权限
kubectl get clusterroles -o json | jq -r '
  .items[] |
  select(.rules[]? |
    (.verbs | index("impersonate"))
  ) |
  {name: .metadata.name, rules: .rules}'
```

### 步骤 6:使用 KubiScan 审计

```bash
# 安装 KubiScan
pip install kubiscan

# 查找有风险的角色
kubiscan --risky-roles

# 查找有风险的 ClusterRole
kubiscan --risky-clusterroles

# 查找有风险的主体
kubiscan --risky-subjects

# 查找具有有风险服务账户的 Pod
kubiscan --risky-pods

# 完整报告
kubiscan --all
```

## 验证命令

```bash
# 验证特定权限
kubectl auth can-i create pods --as=system:serviceaccount:default:myapp

# 检查用户的所有权限
kubectl auth can-i --list --as=developer@example.com

# 使用 kubescape 验证 RBAC
kubescape scan framework nsa --controls-config rbac-controls.json

# 测试最小权限
kubectl auth can-i delete nodes --as=system:serviceaccount:app:web-server
# 预期结果: no
```

## 参考资料

- [Kubernetes RBAC 文档](https://kubernetes.io/docs/reference/access-authn-authz/rbac/)
- [rbac-tool GitHub](https://github.com/alcideio/rbac-tool)
- [KubiScan - 风险权限扫描器](https://github.com/cyberark/KubiScan)
- [CIS Kubernetes Benchmark - 第 5.1 节](https://www.cisecurity.org/benchmark/kubernetes)

Related Skills

securing-kubernetes-on-cloud

9
from killvxk/cybersecurity-skills-zh

本技能涵盖通过实施 Pod 安全标准(Pod Security Standards)、网络策略、工作负载身份、RBAC 权限控制、镜像准入控制和运行时安全监控,对 EKS、AKS 和 GKE 上的托管 Kubernetes 集群进行加固。涉及云平台特定安全功能,包括 EKS 的 IRSA、GKE 的工作负载身份(Workload Identity)以及 AKS 的托管身份(Managed Identity)。

securing-aws-iam-permissions

9
from killvxk/cybersecurity-skills-zh

本技能引导从业者加固 AWS 身份和访问管理(Identity and Access Management)配置,在云账户中强制执行最小权限(Least Privilege)访问。涵盖 IAM 策略范围界定、权限边界(Permission Boundary)、Access Analyzer 集成和凭据轮换策略,以降低受损身份的影响范围。

scanning-kubernetes-manifests-with-kubesec

9
from killvxk/cybersecurity-skills-zh

使用 Kubesec 对 Kubernetes 资源清单执行安全风险分析,识别错误配置、权限提升风险以及与安全最佳实践的偏差。

performing-kubernetes-penetration-testing

9
from killvxk/cybersecurity-skills-zh

Kubernetes 渗透测试(Penetration Testing)通过对 API server、kubelet、etcd、Pod、RBAC、网络策略和密钥模拟攻击者技术,系统性评估集群安全性。使用 kube-hunter、Kubescape、peirates 等工具识别可能导致集群被攻陷的错误配置。

performing-kubernetes-etcd-security-assessment

9
from killvxk/cybersecurity-skills-zh

通过评估静态加密、TLS 配置、访问控制、备份加密和网络隔离,评估 Kubernetes etcd 集群的安全态势。

performing-kubernetes-cis-benchmark-with-kube-bench

9
from killvxk/cybersecurity-skills-zh

使用 kube-bench 对照 CIS Benchmark 审计 Kubernetes 集群安全态势,对控制平面、工作节点和 RBAC 执行自动化检查。

implementing-rbac-hardening-for-kubernetes

9
from killvxk/cybersecurity-skills-zh

通过实施最小权限策略、审计角色绑定、消除 cluster-admin 权限蔓延并集成外部身份提供商,加固 Kubernetes 基于角色的访问控制(RBAC)。

implementing-rbac-for-kubernetes-cluster

9
from killvxk/cybersecurity-skills-zh

配置 Kubernetes 基于角色的访问控制(RBAC),对集群资源强制执行最小权限访问。涵盖 Role/ClusterRole 设计、RoleBinding 配置、服务账户安全、命名空间隔离,以及多租户 Kubernetes 环境的审计日志。

implementing-network-policies-for-kubernetes

9
from killvxk/cybersecurity-skills-zh

通过配置 Kubernetes NetworkPolicy 资源实施 Pod 级别的网络分段,强制执行最小权限通信并限制集群内的横向移动(Lateral Movement)。

implementing-kubernetes-pod-security-standards

9
from killvxk/cybersecurity-skills-zh

Pod 安全标准(PSS)定义了三个安全策略级别——特权级、基线级和受限级——由 Kubernetes 1.25+ 内置的 Pod 安全准入(PSA)控制器强制执行。

implementing-kubernetes-network-policy-with-calico

9
from killvxk/cybersecurity-skills-zh

使用 Calico NetworkPolicy 和 GlobalNetworkPolicy 实施 Kubernetes 网络分段,实现 Pod 间零信任通信。

detecting-privilege-escalation-in-kubernetes-pods

9
from killvxk/cybersecurity-skills-zh

通过使用 Falco 和 OPA 策略监控安全上下文、能力和系统调用模式,检测并防止 Kubernetes Pod 中的权限提升。