Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 47 additions & 1 deletion content/documentation/admin/security/credentials.ru.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,17 @@ weight: 30

После сохранения пользователь не может просмотреть значение учетных данных, только обновить его. В профиле отображается информация о том, заполнены ли те или иные учетные данные.

### Выбор хранилища для типа учётных данных

При создании или редактировании типа учётных данных указывается **хранилище**:
- **База данных** — значения хранятся в PostgreSQL (по умолчанию).
- **Vault** — значения хранятся в HashiCorp Vault или в Deckhouse Stronghold. Доступно только если в платформе включена и настроена интеграция с Vault.

Один и тот же тип учётных данных всегда использует одно выбранное хранилище. Изменить хранилище для существующего типа можно; при этом уже сохранённые учётные данные в старом хранилище не переносятся автоматически.

### Хранение в базе данных

Учетные данные хранятся в базе данных PostgreSQL. Перед сохранением в базу данных значения шифруются с использованием алгоритма **AES-GCM**.
Учетные данные с типом хранилища «База данных» сохраняются в PostgreSQL. Перед сохранением значения шифруются с использованием алгоритма **AES-GCM**.

**Параметры шифрования:**
- **Алгоритм:** AES-GCM.
Expand All @@ -36,6 +44,40 @@ weight: 30
При изменении ключа шифрования (`security.secretKey`) в конфигурации все текущие учетные данные станут невалидными и не смогут быть расшифрованы.
{{< /alert >}}

### Хранение в HashiCorp Vault

Если для типа учётных данных выбрано хранилище **Vault**, то реквизиты пользователей сохраняются платформой в HashiCorp Vault или в Deckhouse Stronghold.

**Как это устроено:**
- В Vault используется движок **KV Secrets Engine v2**. Путь к секретам задаётся в настройках Vault в DDP (например, `secrets/data/ddp`).
- Для каждого пользователя создаётся отдельный секрет по пути `{path}/credentials/{uuid_типа}/users/{uuid_пользователя}`. Внутри секрета один ключ **value**, значение — зашифрованные учетные данные. Шифрование выполняется ключом DDP (`security.secretKey`).
- Подключение к Vault выполняется по **AppRole** (AppRole Role ID и AppRole Secret ID). AppRole Role ID и AppRole Secret ID сохраняются в БД DDP в зашифрованном виде. Токен Vault продлевается автоматически; при сбое продления выполняется повторный вход по AppRole.

**Настройка Vault в DDP:**

1. В разделе «Администрирование» → «Учетные данные» нажмите **«Настройки Vault»**.
2. Включите использование Vault (**Включено**).
3. Заполните параметры:
- **URL** — адрес сервера Vault (например, `https://vault.example.com`).
- **AppRole Role ID** — идентификатор AppRole, полученный при создании роли в Vault.
- **AppRole Secret ID** — секрет AppRole, используется вместе с Role ID для аутентификации в Vault.
- **Путь** — путь к секретам в KV v2. Для KV v2 путь должен содержать сегмент `/data/` (например, `secrets/data/ddp` или `secrets/data/ddp/credentials`). Mount (например, `secrets`) должен быть заранее создан в Vault; подкаталоги после `data/` создаются платформой автоматически при сохранении учётных данных.
4. Нажмите **«Проверить подключение»**, чтобы убедиться, что DDP может аутентифицироваться и обращаться к Vault.
5. Сохраните конфигурацию.

После сохранения конфигурации при создании или редактировании типа учётных данных в списке хранилищ будет доступен вариант **Vault**. Если Vault выключен или не настроен, типы с хранилищем Vault останутся в списке, но учётные данные такого типа заполнять и использовать будет нельзя до включения и настройки Vault.

**Права доступа:**

Для просмотра, изменения конфигурации Vault и проверки подключения требуется глобальное разрешение на редактирование типов учётных данных: `edit:user-access-credentials-types`.

**Особенности конфигурации:**

- Поддерживается только **KV Secrets Engine v2**. Путь в настройках должен включать `/data/` (например, `mount/data/подкаталог`).
- Одна конфигурация Vault на инстанс DDP: один URL, одна AppRole, один базовый путь. Все типы учётных данных с хранилищем Vault используют этот путь (подкаталоги формируются автоматически по UUID типа).
- Очистить все сохранённые значения типа из текущего хранилища (база данных или Vault) в любой момент можно через действие **«Очистить хранилище»** в таблице типов учётных данных.
- Смена ключа шифрования DDP (`security.secretKey`) делает нечитаемыми и учётные данные в Vault, так как значения в Vault хранятся в зашифрованном виде.

### Использование учетных данных

Учетные данные расшифровываются только при необходимости их использования, непосредственно перед обращением к внешнему сервису. После использования расшифрованные значения не сохраняются в памяти дольше необходимого.
Expand Down Expand Up @@ -106,6 +148,10 @@ security:
- Не должен быть слабым или часто используемым ключом.
- Не должен состоять из одного повторяющегося символа.

### Интеграция с Vault

Подключение к HashiCorp Vault (URL, AppRole, путь к KV v2) настраивается в веб-интерфейсе в разделе «Администрирование» → «Учетные данные» → «Настройки Vault». В конфигурационном файле DDP задаётся только ключ шифрования (`security.secretKey`), который используется в том числе для шифрования значений, хранящихся в Vault.

## Безопасность

- Учетные данные никогда не передаются пользователю в расшифрованном виде.
Expand Down
3 changes: 3 additions & 0 deletions content/documentation/admin/security/rbac.ru.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,9 @@ weight: 20
- `create:icons` — создание иконок.
- `delete:icons` — удаление иконок.

Типы учётных данных:
- `edit:user-access-credentials-types` — создание, редактирование и удаление типов учётных данных; настройка интеграции с Vault (просмотр и изменение конфигурации, проверка подключения).

{{< alert level="info" >}}
Разрешение `update:team-variables` позволяет редактировать переменные только тех команд, участником которых является пользователь. Даже супер-администратор не сможет изменить переменные команд, в которых не состоит.
{{< /alert >}}
Expand Down
7 changes: 6 additions & 1 deletion content/documentation/release-notes/v1.3.0.ru.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,17 @@ weight: 940

### Ролевая модель

Добавлено глобальное разрешение `edit:team-filter-rules` для настройки правил фильтрации при синхронизации команд ([подробнее](../../admin/security/rbac/#глобальные-разрешения)).
- Добавлено глобальное разрешение `edit:team-filter-rules` для настройки правил фильтрации при синхронизации команд ([подробнее](../../admin/security/rbac/#глобальные-разрешения)).
- Добавлено глобальное разрешение `edit:user-access-credentials-types` для управления типами учётных данных ([подробнее](../../admin/security/rbac/#глобальные-разрешения)).

### Параметры

Добавлен новый тип параметра **Enum** ([подробнее](../../user/properties/#enum)).

### Учётные данные

Добавлена возможность хранения пользовательских учётных данных в **HashiCorp Vault** или **Deckhouse Stronghold** ([подробнее](../../admin/security/credentials/#хранение-в-hashicorp-vault)).

## Улучшения интерфейса

- Пункты верхнего и боковых меню теперь можно открыть в новой вкладке: щёлкните по пункту колесиком мыши или с зажатыми Ctrl (Windows/Linux) / Cmd (macOS).
Expand Down