【问题标题】:Controlling application access to different namespace using RBAC in kubernetes在 kubernetes 中使用 RBAC 控制应用程序对不同命名空间的访问
【发布时间】:2020-04-18 18:51:14
【问题描述】:

我正在尝试找到应用程序在以下情况下在 kubernetes 中通信所需的最低权限

  1. App1 在命名空间 1 中,app2 在命名空间 2 中
  2. App1 在集群 1 中,而 app2 在集群 2 中

我已在我的集群 (https://github.com/kubernetes/kubernetes/tree/release-1.2/examples/guestbook) 中的两个不同命名空间中部署了一个示例应用程序

无论我如何将这些应用程序与服务帐户关联起来,在各自的命名空间中都没有权限,我的 php 应用程序仍然能够访问 redis 应用程序。 我期待它会抛出一个错误,即使我的服务帐户没有角色,我的应用程序如何运行

以下是我与我的服务帐户关联的角色

apiVersion: rbac.authorization.k8s.io/v1beta1
kind: Role
metadata:
 name: no-access-cr
rules:
- apiGroups: [""] # "" indicates the core API group
  resources: [""] 
  verbs: [""]

请帮忙!!!

【问题讨论】:

  • my php application is still able to reach redis application. 如果您想阻止网络,请检查 NetworkPolicy。 kubernetes.io/docs/concepts/services-networking/…
  • 网络是可达的,但是有没有办法用 RBAC 阻止它
  • 我的问题是,跨命名空间或跨集群的应用程序之间的通信是否需要任何最低 RBAC 权限,这就是我正在检查的内容
  • 可以在 apiGroups 中使用networking.k8s.io/v1 并检查吗?

标签: kubernetes google-kubernetes-engine kubernetes-pod azure-aks


【解决方案1】:

您应用于应用程序的 RBAC 策略与网络 (L3/L4) 本身无关。它们与对 k8s API(kube-api 服务器)的 L7 访问有关,因此可以访问通过这些 API 公开的 k8s 对象。

如果您想在网络级别(L3/L4)限制应用程序之间的访问,您需要申请 network policies 也取决于网络插件,例如可以使用calico policies

【讨论】:

  • 谢谢,这真的帮助我理解了,我可以使用策略控制流量并使用 RBAC 控制对 api 对象的访问
猜你喜欢
  • 2022-11-23
  • 2020-06-09
  • 1970-01-01
  • 2021-12-11
  • 2019-10-08
  • 2013-05-31
  • 1970-01-01
  • 2012-01-23
  • 2021-05-16
相关资源
最近更新 更多