Vault with k8s v2: различия между версиями
Материал из noname.com.ua
Перейти к навигацииПерейти к поискуSirmax (обсуждение | вклад) |
Sirmax (обсуждение | вклад) |
||
Строка 26: | Строка 26: | ||
=Настройка Vault= |
=Настройка Vault= |
||
==Настройка со стороны k8s== |
==Настройка со стороны k8s== |
||
+ | ===Namespace=== |
||
+ | * Создать пространство (имен если не создано) |
||
+ | * '''kubectl apply -f kilda-namespace.yaml''' |
||
+ | * Содержимое '''kilda-namespace.yaml''' |
||
+ | <PRE> |
||
+ | --- |
||
+ | apiVersion: v1 |
||
+ | kind: Namespace |
||
+ | metadata: |
||
+ | name: kilda |
||
+ | </PRE> |
||
===Сервисный аккаунт=== |
===Сервисный аккаунт=== |
||
Версия 12:14, 9 февраля 2022
Авторизация K8S POD в Vault
Постановка задачи
- Получать "секреты" из Vault при этом не передавая в POD пароли, токены или другую секретную информацию
Предварительны условия
- Установлен и настроен Vault
(базовая настройка - https://noname.com.ua/mediawiki/index.php/Vault_Basic_Setup)
- кластер Kubernetes установлен и настроен
- kubectl настроен для работы с кластером
Принципы работы
- Создается один или несколько Service Account
- POD запускается в определенном Service Account
- POD может воспользоваться токеном этого Service Account
- В качестве входных данных POD получает НЕ СЕКРЕТНУЮ информацию
- Адрес Vault в переменной окружения VAULT_ADDR
- Имя роли в переменной окружения VAULT_K8S_ROLE
- POD авторизуется в VAULT под ролью переданной в переменной VAULT_K8S_ROLE используя для этого JWT принадлежащий Service Account
- Vault настроен на проверку прав токена PODs в API K8S (Сам процесс VAULT использует ДРУГОЙ сервисный аккаунт, отличный от того под которым запускается POD для проверки токена PODa)
- После успешной авторизации POD может читать "секреты" из VAULT согласно политик которые привязаны к роле (политики и роли тут - это объекты в Vault)
Настройка Vault
Настройка со стороны k8s
Namespace
- Создать пространство (имен если не создано)
- kubectl apply -f kilda-namespace.yaml
- Содержимое kilda-namespace.yaml
--- apiVersion: v1 kind: Namespace metadata: name: kilda
Сервисный аккаунт
Это аккаунт с которым Vault подключается к API k8s для валидации JWT
Этот аккаунт отличается от того который используется для запуска POD
--- apiVersion: v1 kind: ServiceAccount metadata: name: vault-token-review-service-account namespace: kilda