问题标签 [kubernetes-rbac]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kubernetes - 用户“system:serviceaccount:default:flink”无法在集群范围内列出 API 组“”中的资源“节点”
我正在尝试在一个 k8s pod 中调用 k8s api。但是遇到以下权限问题:
在我的 yaml 文件中,我已经指定了Role
& RoleBinding
。我在这里想念什么?
kubernetes - 尽管我的用户/角色 ARN 不是 aws-auth CM 的一部分,但我如何能够访问 EKS 集群?
EKS 新手,学习。我知道可以通过添加到 aws-auth 配置映射来向 IAM 用户/角色提供访问权限,但是当第一次创建集群时,AWS-auth 只有一个条目。
kubeconfig 文件
问题:我如何能够以管理员身份访问集群?我(IAM 用户)具有集群管理员访问权限的集群中定义的位置?请帮助我理解。先感谢您!
kubernetes-helm - 为什么 helm3 install trigger pre-delete 而不是在 Helm2
我有一个项目需要使用mutating Webhook
,基于namespaceselector
,需要首先将特定标签添加到命名空间。
我使用了三个钩子,hook1(pre-install, pre-delete,etc)为hook2(pre-install)创建RBAC以通过Job和hook3(pre-delete)为名称空间添加标签以删除Job Hook 内容的标签如下:
Hook1设置权限
hook2将标签添加到命名空间
hook3从 hook2 删除标签到命名空间
在图表部署期间,由于未找到服务帐户(ns-edit),hook2 和 hook3 作业都被触发并且未完成。
但是在helm2中可以正确执行,即触发hook1和hook2helm install
添加命名空间标签,触发hook1和hook3helm delete --purge
删除hook2添加的标签
为什么 helm2 和 helm3 在Hook上有如此巨大的差异。
请问如何修改才能实现两者的统一?如果没有,在helm3中如何设计
我真的很感激这方面的任何帮助。
注:helm2 为 v2.17.0,helm3 为 v3.3.0
kubernetes - Kubernetes 服务帐户,具有对部署注释的升级/补丁权限
我想创建 kubernetes 服务帐户和角色/rbac,这将授予修补/更新部署注释的权限。服务帐户不应该能够对 Kubernetes 部署执行任何其他更新。它应该仅对元数据部分具有升级和修补权限。
kubernetes - system:node 无法通过 curl 从 apiserver 获取机密
我正在为安全研究做一些 POC,试图直接从工作节点访问命名空间机密。我在 GKE 上有一个运行 Kubernetes 1.20 的集群
我正在从工作(非主)节点运行以下命令:
它工作正常。
但是,尝试获取秘密失败:
查看文档,我看到在节点上运行的 kubelet 应该能够访问机密:https ://kubernetes.io/docs/reference/access-authn-authz/node/
据我了解,授权由ClusterRole
system:node
. 看着它,我确实看到它对get
秘密有作用:
还有一些更相关的关于 kubelet 和 kube-apiserver 之间通信的文档:https ://kubernetes.io/docs/concepts/architecture/control-plane-node-communication/#node-to-control-plane
kubernetes - 无法使用 Kubernetes ServiceAccount 列出或删除 ClusterRole 或 ClusterRoleBinding
我想创建一个 Kubernetes CronJob 来删除可能剩余的资源(命名空间、ClusterRole、ClusterRoleBinding)(最初,标准将是“有标签=某事”和“超过 30 分钟”。(每个命名空间包含用于试运行)。
我创建了 CronJob、ServiceAccount、ClusterRole、ClusterRoleBinding,并将服务帐户分配给 cronjob 的 pod。
cronjob 使用包含 kubectl 的映像和一些脚本来选择正确的资源。
我的初稿是这样的:
cronjob 能够列出和删除命名空间,但不能列出和删除集群角色或集群角色绑定。我错过了什么?
(实际上,我先用 Job 对此进行测试,然后再转向 CronJob):
kubernetes - 如何在 Kubebuilder 中将 RBAC 角色添加到控制器以获取不同类型的资源
我正在使用 Kubebuilder 创建一个新的 Operator 来部署 Kubernetes 控制器来管理新的 CRD 自定义资源定义。
这个新的 CRD(假设被称为MyNewResource
)需要列出/创建/删除 CronJobs。
因此,在定义该方法的 Controller Go 代码中,Reconcile(...)
我添加了一个新的 RBAC 注释以允许对 CronJobs 进行协调(请参见此处):
然而,在构建推送和部署 Docker/Kubernetes 控制器(repo myrepo
、make manifests
、 then make install
、 then make docker-build docker-push
、 then make deploy
)之后,我仍然在日志中看到:
我还看到有关缓存的问题,但它们可能不相关(不确定):
如何让我的新 Operator 处理 CronJobs 资源?
目前,当我通过调用为我的 CRD 的新实例提供一些 YAML 时,基本上我无法以编程方式(Go 代码)创建新的 CronJobs:
kubernetes - 在 GKE 中启用 Google Cloud Groups RBAC 后被禁止
我们正在现有 GKE 集群中启用 Google Cloud Groups RBAC。
为此,我们首先在 Workspace 中创建了所有组,并根据文档创建了所需的“gke-security-groups@ourdomain.com”。
这些组是在 Workspace 中创建的,并与 Active Directory 集成以实现单点登录。
如文档所述,所有组都是“gke-security-groups@ourdomain”的成员。并且所有组都可以查看成员。
集群已更新以启用 Google Cloud Groups RBAC 的标志,我们将值指定为“gke-security-groups@ourdomain.com”。
然后,我们将其中一个组(我们称之为 group_a@ourdomain.com)添加到 IAM 并分配了一个自定义角色,该角色仅允许访问:
这只是用户能够登录 Kubernetes 集群并从那里能够应用 Kubernetes RBAC 的最低要求。
在 Kubernetes 中,我们应用了一个角色,它提供了特定命名空间中的 pod 列表,以及一个角色绑定,它指定了我们刚刚添加到 IAM 的组。
直到现在一切看起来都很好。但是,当尝试使用属于组“group_a@ourdomain.com”的用户列出此命名空间的 pod 时,我们得到:
来自服务器的错误(禁止):pod 被禁止:用户“my-user@ourdomain.com”无法在命名空间“custom-namespace”中的 API 组“”中列出资源“pod”:需要 [“container.pods”之一。 list"] 权限。
当然,如果我将 container.pods.list 赋予 group_a@ourdomain 分配的角色,我可以列出 pod,但它会为所有命名空间打开,因为 GCloud 中的此权限是全局的。
我在这里想念什么?
不确定这是否相关,但我们在 gcloud 中的组织名为“my-company.io”,而 SSO 的组名为“...@groups.my-company.io”,而 gke-security -groups 组也是使用“groups.my-company.io”域创建的。
此外,如果我直接指定用户而不是 RoleBinding 中的组,则它可以工作。
kubernetes - Service Account for creating/removing namespaces and add/remove ClusterRole Bindings
Can I create a service account for such specific things and no more. I'm interested because I don't know how clustered roles will behave in this context.
- One(first) service account has the right to create/remove namespaces
- Create/remove ClusterRole Binding for another(second) account.
The idea is that I want to make developers only have access to certain namespaces. These namespaces are created dynamically, so every time I create a namespace, I will be adding a RoleBinding to their(second) service account.
This is described in this article https://faun.pub/kubernetes-rbac-use-one-role-in-multiple-namespaces-d1d08bb08286 This I know and understand how to do.
I don’t understand a little how to define a role for an account(first) that will only have the right to create/remove namespaces and create/remove ClusterRole Binding
I hope my question is clear.
Thanks
kubernetes - K8s集群角色排除权限
有没有办法创建一个具有完全访问权限的 K8s 集群角色(任何命名空间上的所有资源、动词和 apigroup)但在所有命名空间上都没有命令执行,例如:kubectl delete pods --all-namespaces
或kubectl delete pv --all-namespaces
?
(应该允许在单个命名空间上运行相同的命令,而不是对所有命名空间批量运行)。
如果使用集群角色无法实现这一点,是否有其他方法可以实现?