首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么即使我没有访问权限也应用我的PodSecurityPolicy?

为什么即使我没有访问权限也应用我的PodSecurityPolicy?
EN

Stack Overflow用户
提问于 2019-08-30 04:52:46
回答 1查看 279关注 0票数 0

我有两个PodSecurityPolicy:

  • 000特权(只有kube系统服务帐户和管理用户)
  • 100-限制(其他一切)

我对他们分配豆荚有问题。

第一项政策约束力:

代码语言:javascript
复制
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: psp:privileged
rules:
- apiGroups:
  - extensions
  resources:
  - podsecuritypolicies
  resourceNames:
  - 000-privileged
  verbs:
  - use
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: psp:privileged-kube-system
  namespace: kube-system
subjects:
- kind: Group
  name: system:serviceaccounts
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: psp:privileged
  apiGroup: rbac.authorization.k8s.io

第二项政策约束力:

代码语言:javascript
复制
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: psp:restricted
rules:
- apiGroups:
  - extensions
  resources:
  - podsecuritypolicies
  resourceNames:
  - 100-restricted
  verbs:
  - use
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: psp:restricted
subjects:
- kind: Group
  name: system:authenticated
  apiGroup: rbac.authorization.k8s.io
- kind: Group
  name: system:serviceaccounts
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: psp:restricted
  apiGroup: rbac.authorization.k8s.io

库贝系统一切正常。

但是,在其他名称空间中,它不像预期的那样工作:

  • 如果我创建一个部署(kubectl应用-f deployment.yml),它的pod会被psp 100限制标记。
  • 如果我创建了一个Pod (kubectl应用-f pod.yml),它就会被标记为psp 000特权。我真的不明白为什么不限制100.

我的kubectl配置了来自OpenID连接(OIDC)的外部身份验证令牌。

我验证了访问权限,一切看起来都很好:

代码语言:javascript
复制
kubectl auth can-i use psp/100-restricted
yes
kubectl auth can-i use psp/000-privileged
no

有线索吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-30 15:45:09

问题是,我的用户可以访问apiGroup的角色中所有资源(*)的所有谓词(*)。

文档有点不清楚(https://github.com/kubernetes/examples/tree/master/staging/podsecuritypolicy/rbac):

use谓词是一个特殊的动词,它授予对使用策略的访问权,而不允许任何其他访问。请注意,在名称空间中具有超级用户权限的用户(访问*资源上的*谓词)将被允许使用该名称空间中的任何PodSecurityPolicy。

提到“在那个名称空间中”,我感到很困惑。因为PodSecurityGroup不是“名称空间”,所以我认为如果没有在名称空间中提供显式访问的集群could /RoleBinding,就无法使用它们。看来我错了..。

我修改了角色以指定以下内容:

代码语言:javascript
复制
rules:
- apiGroups: ["", "apps", "autoscaling", "batch"]
  resources: ["*"]
  verbs: ["*"]
- apiGroups: ["extensions"]
  resources: ["*"]
  # Avoid using * here to prevent use of 'use' verb for podsecuritypolicies resource
  verbs: ["create", "get", "watch", "list", "patch", "delete", "deletecollection", "update"]

现在它找到了合适的PSP。有趣的是,它还阻止用户修改(create/delete/update/etc) podsecuritypolicies。

似乎“使用”动词毕竟是很特别的……

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57720681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档