Как обезопасить кубернетес секретов? - PullRequest
2 голосов
/ 21 января 2020

Я пытаюсь избежать секретов kubernetes, видимых любому пользователю. Я пробовал запечатанные секреты, но это просто скрывает секреты, которые будут храниться в системе контроля версий. Как только я применяю этот секрет, я могу увидеть секрет, используя приведенную ниже команду.

kubectl get secret mysecret -o yaml

Эта команда по-прежнему показывает закодированную в base64 форму секрета.

Как избежать кого-либо просмотр секрета (даже в формате base64) с помощью приведенной выше простой команды.

Ответы [ 3 ]

4 голосов
/ 21 января 2020

Вы можете использовать Hashicrop Vault или kubernetes-external-secrets (https://github.com/godaddy/kubernetes-external-secrets).

Или, если вы хотите ограничить только, вы должны создать пользователя только для чтения. и ограничьте доступ к секрету для пользователя, доступного только для чтения, с помощью привязки роли и роли.

Тогда, если кто-то попытается описать секрет, он выдаст ошибку «Отказано в доступе».

Пример кода:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: test-secrets
  namespace: default
rules:
- apiGroups:
  - ""
  resources:
  - pods
  verbs:
  - get
  - list
  - watch
  - create
  - delete
- apiGroups:
  - ""
  resources:
  - pods/exec
  verbs:
  - create
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: test-secrets
  namespace: default
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: test-secrets
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: User
  name: demo

Вышеуказанная роль не имеет доступа к секретам. Следовательно, демонстрационный пользователь получает отказ в доступе.

1 голос
/ 07 февраля 2020

Нет способа выполнить sh это с помощью внутренних инструментов Kubernetes. Вам всегда придется полагаться на сторонний инструмент. Я бы порекомендовал вам использовать Sealed-Secrets . Он шифрует ваши секреты, и вы можете безопасно sh зашифровать секреты в своем хранилище.

0 голосов
/ 21 января 2020

Вы можете вводить секреты Hashicrop Vault в капсулы Kubernetes через контейнеры Init и обновлять их с помощью контейнера с коляской.

Подробнее здесь https://www.hashicorp.com/blog/injecting-vault-secrets-into-kubernetes-pods-via-a-sidecar/

...