【问题标题】:Openshift custom resources restrictionsOpenshift 自定义资源限制
【发布时间】:2022-10-21 22:13:59
【问题描述】:
我不知道如何使用 RBAC 限制 Openshift 中自定义资源的访问
假设我有一个自定义 api:
apiVersion: yyy.xxx.com/v1
kind: MyClass
metadata:
...
是否可以防止部分用户在apiVersion=yyy.xxx.com/v1 和kind=MyClass 的位置部署资源?
我还可以授予其他用户访问apiVersion=yyy.xxx.com/v1 和kind=MyOtherClass 的资源吗?
如果这可以使用 RBAC 角色完成,我如何在 Openshift 中部署 RBAC 角色?仅使用 CLI 还是我可以创建一些 yaml 配置文件并使用 Yaml 部署它们?
【问题讨论】:
标签:
kubernetes
openshift
rbac
【解决方案1】:
您可以使用集群角色和 RBAC 角色:
oc adm policy add/remove-cluster-role-to-group oauth:system:authenticated
所以一般的想法是删除将资源部署到所有经过身份验证的用户的权限。
下一步是添加仅将该资源部署到分配给特定名称空间的 ServicesAccounts 的权限
【解决方案2】:
OpenShift/Kubernetes 具有集群角色/绑定和本地角色/绑定。
这是文档中的定义。 *1
Cluster role/binding: Roles and bindings that are applicable across all projects. Cluster roles exist cluster-wide, and cluster role bindings can reference only cluster roles.
Local role/binding: Roles and bindings that are scoped to a given project. While local roles exist only in a single project, local role bindings can reference both cluster and local roles.
如果您的自定义资源是存在于单个命名空间中的资源。您可以设法向他人授予权限。
然而,如果自定义资源是集群范围的资源,集群管理员只能部署该资源。
*1:https://docs.openshift.com/container-platform/4.11/authentication/using-rbac.html