Ограничение доступа к учетной записи службы по пространству имен - PullRequest
0 голосов
/ 01 января 2019

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

  ---
  apiVersion: v1
  kind: ServiceAccount
  metadata:
    name: sa-test-1

  ---
  kind: Role
  apiVersion: rbac.authorization.k8s.io/v1beta1
  metadata:
    name: sa-test-1
  rules:
  - apiGroups: [""]
    resources: ["pods"]
    verbs: ["create","delete","get","list","patch","update","watch"]
  - apiGroups: [""]
    resources: ["pods/exec"]a
    verbs: ["create","delete","get","list","patch","update","watch"]
  - apiGroups: [""]
    resources: ["pods/log"]
    verbs: ["get","list","watch"]
  - apiGroups: [""]
    resources: ["secrets"]
    verbs: ["get"]

  ---
  apiVersion: rbac.authorization.k8s.io/v1beta1
  kind: RoleBinding
  metadata:
    name: sa-test-1
    namespace: qa-namespaces

  roleRef:
    apiGroup: rbac.authorization.k8s.io
    kind: Role
    name: sa-test-1
  subjects:
  - kind: ServiceAccount
    name: sa-test-1

Для тестирования привязки учетной записи службы или роли, установленного kubectl для моего модуля, как я вижу, мой модуль может обращаться к модулям во всех кластерах (даже в пространстве имен по умолчанию).

Таким образом, мой модуль может иметь доступ только в определенных пространствах имен.Пожалуйста помоги!

1 Ответ

0 голосов
/ 02 января 2019

Из того, что я вижу, ваш yaml файл поврежден в нескольких местах.

Как упоминается @ rfum , вам нужно указать пространство имен внутри Role и тамв конце resources: ["pods/exec"] кажется лишним символом, поэтому ваш Role должен выглядеть следующим образом:

kind: Role  
apiVersion: rbac.authorization.k8s.io/v1  
metadata:  
  namespace: qa-namespaces  
  name: sa-test-role
rules:  
 - apiGroups: [""]
    resources: ["pods"]
    verbs: ["create", "delete", "get", "list", "patch", "update", "watch"]
  - apiGroups: [""]
    resources: ["pods/exec"]
    verbs: ["create", "delete", "get", "list", "patch", "update", "watch"]
  - apiGroups: [""]
    resources: ["pods/log"]
    verbs: ["get", "list", "watch"]
  - apiGroups: [""]
    resources: ["secrets"]
    verbs: ["get"]

Вы можете создать ServiceAccount, используя следующую команду:

kubectl create serviceaccount sa-test-serviceaccount --namespace qa-namespaces

Ваш RoleBinding также немного отключен и должен выглядеть следующим образом:

kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: sa-test-rolebinding
  namespace: qa-namespaces
subjects:
- kind: ServiceAccount
  name: sa-test-serviceaccount
  namespace: qa-namespaces
roleRef:
  kind: Role
  name: sa-test-role
  apiGroup: rbac.authorization.k8s.io

Я также рекомендую прочитать Настройка разрешений в Kubernetes с помощью RBAC Использование авторизации RBAC .

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