kubernetes:безопасность_в_кластере
Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
kubernetes:безопасность_в_кластере [2022/02/15 18:19] – root | kubernetes:безопасность_в_кластере [2024/12/21 19:00] (текущий) – внешнее изменение 127.0.0.1 | ||
---|---|---|---|
Строка 10: | Строка 10: | ||
* сертификат; | * сертификат; | ||
* сторонний сервис аутентификации (ldap, kerberos, etc). | * сторонний сервис аутентификации (ldap, kerberos, etc). | ||
- | ===== Парольная аутентфиикация===== | + | ===== Парольная аутентификация===== |
Что бы указать kube-apiserver.service на необходимость использования статических паролей, | Что бы указать kube-apiserver.service на необходимость использования статических паролей, | ||
<code csv user-details.csv> | <code csv user-details.csv> | ||
Строка 50: | Строка 50: | ||
spec: | spec: | ||
groups: | groups: | ||
- | - system: authenticated | + | |
+ | | ||
usages: | usages: | ||
- digital signature | - digital signature | ||
- key encipherment | - key encipherment | ||
- | - server | + | - client |
request: | request: | ||
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0KTUlJQ1dUQ0NBVUVDQVFBd0ZERVNN | LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0KTUlJQ1dUQ0NBVUVDQVFBd0ZERVNN | ||
Строка 72: | Строка 73: | ||
MytCcWlDaEdlQjZtbTgwQVgKTnJMTHZDOVRkVTBlN0Uvek1KQ1Z0V2lVbGlIOFNET3dyVVlzaWtJ | MytCcWlDaEdlQjZtbTgwQVgKTnJMTHZDOVRkVTBlN0Uvek1KQ1Z0V2lVbGlIOFNET3dyVVlzaWtJ | ||
PQotLS0tLUVORCBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0K | PQotLS0tLUVORCBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0K | ||
+ | </ | ||
+ | <code bash> | ||
+ | kubectl get csr | ||
+ | kubectl certificate approve new_admin | ||
+ | kubectl get csr new_admin -o yaml | ||
+ | echo "coded certificate" | ||
</ | </ | ||
+ | ===== RBAC ===== | ||
+ | ==== Создание роли ==== | ||
+ | <code yaml pod-reader-role.yaml> | ||
+ | apiVersion: rbac.authorization.k8s.io/ | ||
+ | kind: Role | ||
+ | metadata: | ||
+ | namespace: default | ||
+ | name: pod-reader | ||
+ | rules: | ||
+ | - apiGroups: ["" | ||
+ | resources: [" | ||
+ | verbs: [" | ||
+ | - apiGroups: ["" | ||
+ | resources: [" | ||
+ | verbs: [" | ||
+ | </ | ||
+ | ==== Биндинг роли к конкретному пользователю ==== | ||
+ | |||
+ | <code yaml pod-reader-role.yaml> | ||
+ | apiVersion: rbac.authorization.k8s.io/ | ||
+ | kind: RoleBinding | ||
+ | metadata: | ||
+ | name: pod-reader-binding | ||
+ | namespace: default | ||
+ | subjects: | ||
+ | # You can specify more than one " | ||
+ | - kind: User | ||
+ | name: jane # " | ||
+ | apiGroup: rbac.authorization.k8s.io | ||
+ | roleRef: | ||
+ | # " | ||
+ | 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 | ||
+ | </ | ||
+ | ==== Просмотр сведений RBAC ==== | ||
+ | <code bash> | ||
+ | kubectl get roles | ||
+ | kubectl get rolebindings | ||
+ | kubectl describe role developer | ||
+ | kubectl describe rolebinding dev-users-rolebinding | ||
+ | </ | ||
+ | ==== Проверка доступа ==== | ||
+ | <code bash> | ||
+ | kubectl auth can-i create deployments | ||
+ | kubectl auth can-i delete nodes | ||
+ | kubectl auth can-i create pods --as sample-user | ||
+ | </ | ||
+ | ===== Кластерные роли ===== | ||
+ | Кластерные роли, в отличие от обычных, | ||
+ | ==== Кластерная роль ==== | ||
+ | <code yaml cluster-role.yaml> | ||
+ | apiVersion: rbac.authorization.k8s.io/ | ||
+ | kind: ClusterRole | ||
+ | metadata: | ||
+ | name: cluster-administrator | ||
+ | rules: | ||
+ | - apiGroups: ["" | ||
+ | resources: [" | ||
+ | verbs: [" | ||
+ | </ | ||
+ | ==== Привязка кластерной роли к пользователю ==== | ||
+ | <code yaml cluster-role-binding.yaml> | ||
+ | apiVersion: rbac.authorization.k8s.io/ | ||
+ | # This cluster role binding allows anyone in the " | ||
+ | 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 | ||
+ | </ | ||
+ | |||
+ | ===== Service Accounts ===== | ||
+ | По умолчанию в каждом namespace уже существует ServiceAccount с именем <color # | ||
+ | |||
+ | Создать ServiceAccount | ||
+ | <code bash> | ||
+ | Получить список ServiceAccount' | ||
+ | <code bash> | ||
+ | Вывести полную информацию о ServiceAccount' | ||
+ | <code bash> | ||
+ | Получить токен безопасности определенного ServiceAccount' | ||
+ | <code bash> | ||
+ | |||
+ | Применить ServiceAccount к поду: | ||
+ | <code yaml pod.yaml> | ||
+ | apiVersion: v1 | ||
+ | kind: Pod | ||
+ | metadata: | ||
+ | name: simplePod | ||
+ | spec: | ||
+ | containers: | ||
+ | - name: simplePod | ||
+ | image: simplePod | ||
+ | serviceAccountName: | ||
+ | </ |
kubernetes/безопасность_в_кластере.1644938399.txt.gz · Последнее изменение: 2024/12/21 19:00 (внешнее изменение)