Vault with k8s: различия между версиями
Материал из noname.com.ua
Перейти к навигацииПерейти к поискуSirmax (обсуждение | вклад) |
Sirmax (обсуждение | вклад) (→k8s) |
||
Строка 51: | Строка 51: | ||
==Настройка== |
==Настройка== |
||
===k8s=== |
===k8s=== |
||
+ | <PRE> |
||
+ | --- |
||
+ | apiVersion: v1 |
||
+ | kind: ServiceAccount |
||
+ | metadata: |
||
+ | name: vault-tokenreview-service-account |
||
+ | namespace: test-namespace |
||
+ | </PRE> |
||
+ | <PRE> |
||
+ | apiVersion: rbac.authorization.k8s.io/v1 |
||
+ | kind: ClusterRoleBinding |
||
+ | metadata: |
||
+ | name: vault-tokenreview-service-account-role-binding |
||
+ | namespace: test-namespace |
||
+ | roleRef: |
||
+ | apiGroup: rbac.authorization.k8s.io |
||
+ | kind: ClusterRole |
||
+ | name: system:auth-delegator |
||
+ | subjects: |
||
+ | - kind: ServiceAccount |
||
+ | name: vault-tokenreview-service-account |
||
+ | namespace: test-namespace |
||
+ | |||
+ | |||
+ | --- |
||
+ | apiVersion: rbac.authorization.k8s.io/v1beta1 |
||
+ | kind: ClusterRoleBinding |
||
+ | metadata: |
||
+ | name: vault-tokenreview-service-account-role-binding-2 |
||
+ | namespace: default |
||
+ | roleRef: |
||
+ | apiGroup: rbac.authorization.k8s.io |
||
+ | kind: ClusterRole |
||
+ | name: system:auth-delegator |
||
+ | subjects: |
||
+ | - kind: ServiceAccount |
||
+ | name: vault-tokenreview-service-account |
||
+ | namespace: test-namespace |
||
+ | </PRE> |
||
+ | |||
===Vault=== |
===Vault=== |
||
==Получение токена== |
==Получение токена== |
Версия 18:38, 29 января 2019
Авторизация контейнеров/PODов в Hashicorp Vault
Задача - использовать сервисные аккаунты кубернетиса для авторизации а Hashicorp Vault
Схема работы
1. Создается сервисный аккаунт
2. Запускается POD с этим сервисным аккаунтом
3. Под получает адрес Vault (в моем случае - вычитывает из Consul но это не принципиально)
4. Авторизуется в Vault под определенной ролью используя JWT
5 Vault возвращает токе с политиками назначенными на роль
5. POD читает из Vault используя полученный токен
+-------------------------------------------------------------------------------------------------------------------------------+ | Google Cloud Engine | | | | | | +-----------------------------------------------------------+ | | | K8S Cluster (in GKE) | | | | | | | | | | | | +---------------------------------------------------+ | | | | | POD | | | | | | spec: | | | | | | serviceAccountName: k8s-test-service-account | | | | | | ... | | | | | | containers: | | | | | | - name: container-name | | | | | | image: ... | | +-------------------+ | | | | imagePullPolicy: Always | | | VM Instance | | | | | env: | | | | | | | | - name: VAULT_K8S_ROLE | | | +------------+ | | | | | value: k8s-test-role | ---|-->---> Token Request for role ->-->-->---| | Vault | | | | | +---------------------------------------------------+ | * POD's SA JWT | | Process | | | | | | * Role Name | | | | | | | | | | | | | | | +--------------------+ | Verify POS's Service Account JWT | | | | | | | | K8S API Endpoint |<--------<--------<----------------|-( auth with Vault's Service Account )-<--| | | | | | | +--------------------+ | | +------------+ | | | | | | | | | +-----------------------------------------------------------+ +-------------------+ | | | +-------------------------------------------------------------------------------------------------------------------------------+
Настройка
k8s
--- apiVersion: v1 kind: ServiceAccount metadata: name: vault-tokenreview-service-account namespace: test-namespace
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: vault-tokenreview-service-account-role-binding namespace: test-namespace roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: system:auth-delegator subjects: - kind: ServiceAccount name: vault-tokenreview-service-account namespace: test-namespace --- apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRoleBinding metadata: name: vault-tokenreview-service-account-role-binding-2 namespace: default roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: system:auth-delegator subjects: - kind: ServiceAccount name: vault-tokenreview-service-account namespace: test-namespace