Kubernetes админ сегрегации

Большинству операторов kubernetes требуется возможность создавать роли кластера, привязки роли кластера и crds.

Мне нужна правильная сегрегация rbac, и я хочу избежать установки учетной записи службы развертывания непосредственно как администратор.

Но если я только предоставлю ему права на выпуск для роли кластера, то, похоже, он в конце концов поставит себя администратором.

Как правильно бороться с этим? (если есть).

2 ответа

Вы можете иметь пространства имен и иметь учетные записи служб с доступом только к тем конкретным ресурсам и группам Api, которые вам нужны.

apiVersion: v1
kind: ServiceAccount
metadata:
  name: gitlab-tez-dev # account name
  namespace: tez-dev #namespace

---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tez-dev-full-access #role
  namespace: tez-dev
rules:
  - apiGroups: ["", "extensions", "apps"]
    resources: ["deployments", "replicasets", "pods", "services"] #resources to which permissions are granted
    verbs: ["*"] # what actions are allowed
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tez-dev-view
  namespace: tez-dev
subjects:
  - kind: ServiceAccount
    name: gitlab-tez-dev
    namespace: tez-dev
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: tez-dev-full-access

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

Затем вы можете использовать его для развертывания в определенном пространстве имен.

Вы видели, как это делается в случае с прометеем-оператором?
Это позволяет избежать предоставления учетной записи службы развертывания полных прав администратора, особенно позволяя ей контролировать разрешение на выполнение действий 'create/bind' над ролями или ресурсами clusterroles в группе API 'rbac.authorization.k8s.io'.
Я думаю, что вы можете использовать его как хорошую справочную схему для настройки отдельных правил RBAC для управляемого приложения и приложения-оператора.

Другие вопросы по тегам