policycontroller: 一个悬空的 roleRef 会丢弃服务帐户的其余绑定
作者: omlahore创建于 2026年9月20日更新于 2026年9月20日
我尝试了 VisitRulesFor,为同一个服务帐户配置了两个 ClusterRoleBindings,一个指向不存在的 ClusterRole,另一个指向真实的 ClusterRole,结果访问对象返回没有任何规则。GetRoleReferenceRules 为缺失的角色返回错误,循环就在此处结束(reconcile.go#L589-L593),因此之后的每个绑定都被跳过。下面的 RoleBinding 循环在 L612-L616 执行相同的操作。上游 Kubernetes 将此错误传递给访问者,并继续处理其余的绑定。因此,一个过时的绑定会悄悄地剥夺服务帐户在边缘上应有的访问权限。我在 master d062d298 上使用单元测试对假客户端进行检查,日志行内容为“无法获取用于 clusterrolebinding dangling 的规则”。
内容来源: kubeedge/kubeedge