Инструменты пользователя

Инструменты сайта


kubernetes:безопасность_в_кластере

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
kubernetes:безопасность_в_кластере [2022/02/15 19:13] – [Парольная аутентфиикация] rootkubernetes:безопасность_в_кластере [2024/12/21 19:00] (текущий) – внешнее изменение 127.0.0.1
Строка 50: Строка 50:
 spec: spec:
   groups:   groups:
-  - system: authenticated+  - system:masters 
 +  - system:authenticated
   usages:   usages:
   - digital signature   - digital signature
   - key encipherment   - key encipherment
-  - server auth+  - client auth
   request:   request:
     LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0KTUlJQ1dUQ0NBVUVDQVFBd0ZERVNN     LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0KTUlJQ1dUQ0NBVUVDQVFBd0ZERVNN
Строка 78: Строка 79:
 kubectl get csr new_admin -o yaml kubectl get csr new_admin -o yaml
 echo "coded certificate" | base64 --decode > new_admin.crt echo "coded certificate" | base64 --decode > new_admin.crt
 +</code>
 +
 +===== RBAC =====
 +==== Создание роли ====
 +<code yaml pod-reader-role.yaml>
 +apiVersion: rbac.authorization.k8s.io/v1
 +kind: Role
 +metadata:
 +  namespace: default
 +  name: pod-reader
 +rules:
 +- apiGroups: [""] #
 +  resources: ["pods"]
 +  verbs: ["get", "watch", "list"]
 +- apiGroups: [""] #
 +  resources: ["ConfigMap"]
 +  verbs: ["get", "create"]
 +</code>
 +==== Биндинг роли к конкретному пользователю ====
 +
 +<code yaml pod-reader-role.yaml>
 +apiVersion: rbac.authorization.k8s.io/v1
 +kind: RoleBinding
 +metadata:
 +  name: pod-reader-binding
 +  namespace: default
 +subjects:
 +# You can specify more than one "subject"
 +- kind: User
 +  name: jane # "name" is case sensitive
 +  apiGroup: rbac.authorization.k8s.io
 +roleRef:
 +  # "roleRef" specifies the binding to a Role / ClusterRole
 +  kind: Role #this must be Role or ClusterRole
 +  name: pod-reader # this must match the name of the Role or ClusterRole you wish to bind to
 +  apiGroup: rbac.authorization.k8s.io
 +</code>
 +==== Просмотр сведений RBAC  ====
 +<code bash>
 +kubectl get roles
 +kubectl get rolebindings
 +kubectl describe role developer
 +kubectl describe rolebinding dev-users-rolebinding
 +</code>
 +==== Проверка доступа ====
 +<code bash>
 +kubectl auth can-i create deployments
 +kubectl auth can-i delete nodes
 +kubectl auth can-i create pods --as sample-user
 +</code>
 +===== Кластерные роли =====
 +Кластерные роли, в отличие от обычных, не привязаны к ресурсам в определенном namespace.
 +==== Кластерная роль ====
 +<code yaml cluster-role.yaml>
 +apiVersion: rbac.authorization.k8s.io/v1
 +kind: ClusterRole
 +metadata:
 +  name: cluster-administrator
 +rules:
 +- apiGroups: [""]
 +  resources: ["nodes"]
 +  verbs: ["list","get","create","delete"]
 +</code>
 +==== Привязка кластерной роли к пользователю ====
 +<code yaml cluster-role-binding.yaml>
 +apiVersion: rbac.authorization.k8s.io/v1
 +# This cluster role binding allows anyone in the "manager" group to read secrets in any namespace.
 +kind: ClusterRoleBinding
 +metadata:
 +  name: cluster-admin-role-binding
 +subjects:
 +- kind: User
 +  name: cluster-administrator # Name is case sensitive
 +  apiGroup: rbac.authorization.k8s.io
 +- kind: Group
 +  name: cluster-admins # Name is case sensitive
 +  apiGroup: rbac.authorization.k8s.io
 +roleRef:
 +  kind: ClusterRole
 +  name: cluster-administrator
 +  apiGroup: rbac.authorization.k8s.io
 +</code>
 +
 +===== Service Accounts =====
 +По умолчанию в каждом namespace уже существует ServiceAccount с именем <color #ed1c24>default</color>, который автоматически цепляется каждым создаваемым Pod'ом. При этом, default аккаунт сильно порезан в правах.
 +
 +Создать ServiceAccount
 +<code bash>kubectl create serviceaccount test-sa</code>
 +Получить список ServiceAccount'ов
 +<code bash>kubectl get serviceaccount</code>
 +Вывести полную информацию о ServiceAccount'е
 +<code bash>kubectl describe serviceaccount test-sa</code>
 +Получить токен безопасности определенного ServiceAccount'а
 +<code bash>kubectl describe secret test-sa-token-kbbdm</code>
 +
 +Применить ServiceAccount к поду:
 +<code yaml pod.yaml>
 +apiVersion: v1
 +kind: Pod
 +metadata:
 +  name: simplePod
 +spec:
 +  containers:
 +  - name: simplePod
 +    image: simplePod
 +  serviceAccountName: simplePod-sa 
 </code> </code>
kubernetes/безопасность_в_кластере.1644941636.txt.gz · Последнее изменение: 2024/12/21 19:00 (внешнее изменение)