kubernetes:безопасность_в_кластере
Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
kubernetes:безопасность_в_кластере [2022/02/14 22:48] – root | kubernetes:безопасность_в_кластере [2024/12/21 19:00] (текущий) – внешнее изменение 127.0.0.1 | ||
---|---|---|---|
Строка 10: | Строка 10: | ||
* сертификат; | * сертификат; | ||
* сторонний сервис аутентификации (ldap, kerberos, etc). | * сторонний сервис аутентификации (ldap, kerberos, etc). | ||
+ | ===== Парольная аутентификация===== | ||
+ | Что бы указать kube-apiserver.service на необходимость использования статических паролей, | ||
+ | <code csv user-details.csv> | ||
+ | P@ssw0rd1, | ||
+ | P@ssw0rd2, | ||
+ | P@ssw0rd3, | ||
+ | </ | ||
+ | Для аутентификации: | ||
- | Что бы указать kube-apiserver | + | ===== Аутентификация по токену ===== |
+ | Аналогично для файла с токенами <color # | ||
+ | <code csv user-token-details.csv> | ||
+ | 9OSR4OYO6QwM7cfg6sKcerCyiVC6xnFZ, | ||
+ | yDLmsJptxat04MUvuFdBw2CFWwv2ogcr, | ||
+ | IonP8eYFUEfsZJDflyiRVSoMeDJSpBcq, | ||
+ | </ | ||
+ | Для | ||
+ | |||
+ | ===== Аутентификация по сертификату ===== | ||
+ | Для аутентификации по сертификату, | ||
+ | <code bash> | ||
+ | openssl genrsa -out admin.key 2048 | ||
+ | openssl req -new -key admin.key -subj "/ | ||
+ | openssl x509 -req -in admin.csr -CA ca.crt -CAkey ca.key -out admin.crt | ||
+ | </ | ||
+ | Для | ||
+ | |||
+ | ===== Создание сертификата пользователя при помощи Certificate API ===== | ||
+ | <code bash> | ||
+ | openssl genrsa -out new_admin.key 2048 | ||
+ | openssl req -new -key new_admin.key -subj "/ | ||
+ | cat new_admin.csr | base64 | ||
+ | </ | ||
+ | <code yaml new_admin_csr.yaml> | ||
+ | apiVersion: certificates.k8s.io/ | ||
+ | kind: CertificateSigningRequest | ||
+ | metadata: | ||
+ | name: New Admin | ||
+ | spec: | ||
+ | groups: | ||
+ | - system: | ||
+ | - system: | ||
+ | usages: | ||
+ | - digital signature | ||
+ | - key encipherment | ||
+ | - client auth | ||
+ | request: | ||
+ | LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0KTUlJQ1dUQ0NBVUVDQVFBd0ZERVNN | ||
+ | QkFHQTFVRUF3d0pUbVYzSUVGa2JXbHVNSUlCSWpBTkJna3Foa2lHOXcwQgpBUUVGQUFPQ0FROEFN | ||
+ | SUlCQ2dLQ0FRRUF3bS94SWphM3JGNjk4aU4xUlpFWEkvYTVteG93V0ZLWW83STBvMFc0ClBueW1K | ||
+ | cVFqZEVIN21VM1d0ZnBPMm9PQWRMSUdTQXVockFpeExmNklNaHU3QzVCMWRuaTBDSFd5dUdBQ1FI | ||
+ | eXoKNEdjdjRZREVQajVoYkt3Z3ozWkFteG94OHE2VjZCNVNnZ0RvaXo4RytVeDJLSGFFZ3RjN1NK | ||
+ | ZXVTbStCZ2RuNwpWMldDbVFHaWcrUXRPS0w2L1NBdTJCdG1ML201V05CVm9IdWVmTmZNZEJOVWFC | ||
+ | K0dYYURtaWRoZmhnVXl6UVNHCnp4RGgvbTJmZUs1RjNrUXN5T3NCVGdVbElDVG9ydnlZOURFTDdF | ||
+ | bXUra0NFT0kzcXhmU1Q0WHNGZDI4aW9LS0cKSEt3c2R1MWE5OUMwVXR6QXRvRzVVbEZBS28zK2pO | ||
+ | ODBEbWxBS2JReEtlQ3lId0lEQVFBQm9BQXdEUVlKS29aSQpodmNOQVFFTEJRQURnZ0VCQUJjUGR6 | ||
+ | UjhlRnNqZzlUT3Fsd2I4WkZsd3MwbDNhdG1QdFRSaUZqQnpudjRoem95Ck1BNG9TWkNhdVN2akdY | ||
+ | Z2VSclpDdG9iZkpPemxRMGI1bTlic2tPNWl3Wnk0WGg5Q3lMTStnTUFkWlhkSk9uaWYKOHNBYzVq | ||
+ | b1hOY0ZmMDRJOEZtZTZDV0RPVnBEbW1peVM2bFNiVHpwU1NIbEluU3BuV1RRSzFDVGVYeXNIaXds | ||
+ | SgplVDFKMy9yM0dOQTk0eE1TN3VFTVM2VTR2dW1RcEx2UG9KSW5rL3NMeGRUa1BuTEJmQXl3N1ZX | ||
+ | V04wNmRGZHJXClllTkhTcVVBRFBQYWR1TWlsc3lnZmdjR3RMZGZnc2tpNlBjTENrbTBKY2RINXVq | ||
+ | MytCcWlDaEdlQjZtbTgwQVgKTnJMTHZDOVRkVTBlN0Uvek1KQ1Z0V2lVbGlIOFNET3dyVVlzaWtJ | ||
+ | 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 | ||
+ | </code> | ||
+ | |||
+ | ===== Service Accounts ===== | ||
+ | По умолчанию в каждом namespace уже существует ServiceAccount с именем <color # | ||
+ | |||
+ | Создать ServiceAccount | ||
+ | <code bash> | ||
+ | Получить список | ||
+ | <code bash> | ||
+ | Вывести полную информацию о ServiceAccount' | ||
+ | <code bash> | ||
+ | Получить токен безопасности определенного 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: | ||
+ | </ |
kubernetes/безопасность_в_кластере.1644868094.txt.gz · Последнее изменение: 2024/12/21 19:00 (внешнее изменение)