Применяются ли правила RBA C к стручкам? - PullRequest
0 голосов
/ 25 марта 2020

У меня есть следующее определение модуля (обратите внимание на явно установленную учетную запись службы и secret ):

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"

Разве RBA C не применяется для модулей? Почему модуль может получить секрет, если нет?

1 Ответ

1 голос
/ 25 марта 2020

RBA C применяется к служебным учетным записям, группам, пользователям, а не к пакетам. Когда вы передаете секретный ключ в env пакета, служебная учетная запись не используется для получения секретного ключа. Кублет получает секрет с помощью его собственные kubernetes клиентские учетные данные. Поскольку kubelet использует свои учетные данные для получения секрета, не имеет значения, имеет ли служебная учетная запись RBA C для получения секрета или нет, потому что она не используется.

Сервисная учетная запись используется, когда вы хотите вызвать Kubernetes API от модуля, использующего стандартную клиентскую библиотеку kubernetes или Kubectl.

Фрагмент кода Kubelet для справки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...