RBAC 规则是否适用于 pods?

Does RBAC rules apply to pods?

我有以下 Pod 定义,(注意明确设置的 服务帐户秘密):

apiVersion: v1
kind: Pod
metadata:
  name: pod-service-account-example
  labels:
    name: pod-service-account-example
spec:
  serviceAccountName: example-sa
  containers:
  - name: busybox
    image: busybox:latest
    command: ["sleep", "10000000"]
    env:
      - name: SECRET_KEY
        valueFrom:
          secretKeyRef:
            name: example-secret
            key: secret-key-123

运行成功。但是,如果我使用相同的服务帐户 example-sa,并尝试检索 example-secret,它会失败:

kubectl get secret example-secret
Error from server (Forbidden): secrets "example-secret" is forbidden: User "system:serviceaccount:default:example-sa" cannot get resource "secrets" in API group "" in the namespace "default"

RBAC不申请pods吗?如果不能,为什么 pod 能够检索到秘密?

RBAC 适用于服务帐户、组、用户,而不适用于 pods.When 您在 pod 的环境中引用秘密,服务帐户未被用于获取 secret.Kubelet 正在获取通过使用它自己的 kubernetes 客户端凭证来保密。由于 kubelet 使用自己的凭据来获取机密,因此服务帐户是否具有 RBAC 来获取机密并不重要,因为它未被使用。

当您想使用 kubernetes 标准客户端库或 Kubectl 从 pod 调用 Kubernetes API 时使用服务帐户。

Kubelet的

Code snippet供参考。