13518219792

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

创新互联kubernetes教程:Kubernetes基于角色的访问控制良好实践

基于角色的访问控制良好实践

Kubernetes RBAC 是一项关键的安全控制,可确保集群用户和工作负载只能访问执行其角色所需的资源。 重要的是确保在为集群用户设计权限时,集群管理员了解可能发生权限提升的区域,以降低过度访问导致安全事件的风险。

创新互联公司为您提适合企业的网站设计 让您的网站在搜索引擎具有高度排名,让您的网站具备超强的网络竞争力!结合企业自身,进行网站设计及把握,最后结合企业文化和具体宗旨等,才能创作出一份性化解决方案。从网站策划到网站设计制作、成都网站制作, 我们的网页设计师为您提供的解决方案。

一般良好做法

最低权限

理想情况下,应将最少的 RBAC 权限分配给用户和服务帐户。 仅应使用其操作明确要求的权限。 虽然每个集群都会有所不同,但可以应用的一些一般规则是:

尽量减少特权代币的分配

理想情况下,不应为 pod 分配被授予强大权限的服务帐户。 如果工作负载需要强大的权限,请考虑以下做法:

Hardening

Kubernetes 默认提供并非每个集群都需要的访问权限。 查看默认提供的 RBAC 权限可以为安全加固提供机会。 通常,不应更改提供给系统的权限:帐户存在一些强化集群权限的选项:

定期审查

定期检查 Kubernetes RBAC 设置是否有冗余条目和可能的权限升级至关重要。 如果攻击者能够创建与已删除用户同名的用户帐户,他们可以自动继承已删除用户的所有权限,尤其是分配给该用户的权限。

Kubernetes RBAC - 提权风险

在 Kubernetes RBAC 中有许多权限,如果授予这些权限,则可以允许用户或服务帐户提升其在集群中的权限或影响集群外的系统。

本节旨在提供集群操作员应注意的区域的可见性,以确保他们不会无意中允许对集群的访问超出预期。

Listing secrets

通常很清楚,允许对 Secrets 的访问将允许用户阅读其内容。 同样重要的是要注意,​list​和​watch​访问也有效地允许用户透露秘密内容。 例如,当返回 List 响应时(例如,通过 ​kubectl get secrets -A -o yaml​),响应包括所有 Secrets 的内容。

工作负载创建

除非有基于 Kubernetes Pod 安全标准的限制,否则能够创建工作负载(Pod 或管理 Pod 的工作负载资源)的用户将能够访问底层节点。

可以运行特权 Pod 的用户可以使用该访问权限来获得节点访问权限,并可能进一步提升他们的权限。如果您不完全信任具有创建适当安全和隔离 Pod 的能力的用户或​​其他主体,则应强制执行基线或受限 Pod 安全标准。您可以使用 Pod 安全准入或其他(第三方)机制来实施该强制。

您还可以使用已弃用的 PodSecurityPolicy 机制来限制用户创建特权 Pod 的能力(注意,PodSecurityPolicy 计划在版本 1.25 中删除)。

在命名空间中创建工作负载还会授予对该命名空间中 Secret 的间接访问权限。在 kube-system 或类似特权的命名空间中创建一个 pod 可以授予用户对他们直接通过 RBAC 没有的 Secret 的访问权限

持久卷创建

对创建 PersistentVolume 的访问可以允许升级对底层主机的访问。 在需要访问持久存储的地方,受信任的管理员应该创建 PersistentVolume,并且受限用户应该使用 PersistentVolumeClaims 来访问该存储。

访问节点的代理子资源

有权访问节点对象的代理子资源的用户有权访问 Kubelet API,该 API 允许在他们有权访问的节点上的每个 pod 上执行命令。 此访问绕过审核日志记录和准入控制,因此在授予此资源权限之前应小心。

Escalate verb

通常,RBAC 系统会阻止用户创建比他们拥有的权限更多的集群角色。 一个例外是​escalate ​verb,拥有此权限的用户可以有效地提升他们的权限。

Bind verb

与​escalate ​verb类似,授予用户此权限允许绕过 Kubernetes 内置的针对权限升级的保护,允许用户创建与具有他们不具有的权限的角色的绑定。

Impersonate verb

此verb允许用户模拟并获得集群中其他用户的权限。 授予它时应小心,以确保不能通过模拟帐户之一获得过多的权限。

CSRs 和证书颁发

CSR API 允许具有 CSR 创建权限和更新​certificatesigningrequests/approval​权限的用户,其中签名者是 ​kubernetes.io/kube-apiserver-client​,以创建新的客户端证书,允许用户对集群进行身份验证。 这些客户端证书可以具有任意名称,包括 Kubernetes 系统组件的副本。 这将有效地允许特权升级。

Token请求

对 ​serviceaccounts/token​ 具有​create​权限的用户可以创建 TokenRequests 来为现有的服务帐户颁发令牌。

控制准入 webhook

控制验证​webhookconfigurations​或​mutatingwebhookconfigurations​的用户可以控制可以读取集群允许的任何对象的webhook,并且在改变webhook的情况下,也可以改变允许的对象。

Kubernetes RBAC - 拒绝服务风险

对象创建拒绝服务

有权在集群中创建对象的用户可能能够根据对象的大小或数量创建足够大的对象来创建拒绝服务条件,正如 Kubernetes 使用的 etcd 中所讨论的那样容易受到 OOM 攻击。 如果允许半受信任或不受信任的用户对系统进行有限访问,这可能与多租户集群特别相关。

缓解此问题的一种选择是使用资源配额来限制可以创建的对象数量。


新闻标题:创新互联kubernetes教程:Kubernetes基于角色的访问控制良好实践
浏览地址:http://cdbrznjsb.com/article/cohpdgi.html

其他资讯

让你的专属顾问为你服务