Развёртывание Secret Manager
Подготовьте сервер со статическим IP или DNS-адресом. Выпишите для openbao пару сертификата и ключа в формате X.509 v3 с обязательным указанием в SAN этого IP и/или DNS-адреса.
Для развёртывания OpenBao на отдельном внешнем сервере можно воспользоваться инструкцией. Здесь вам также потребуются выпущенные сертификаты вместе с сертификатом сертифицирующего центра CA, подписавшего ваши сертификаты. Их необходимо поместить в папку ssl репозитория с предопределёнными именами.
Важный момент: если ваш сертификат выпущен промежуточным CA, а в папку ssl вы кладёте сертификат его родителя ROOT CA, то, возможно, вам потребуется создать chain. Например, сертификат для openbao у вас будет называться my-openbao.crt, промежуточного CA - middleCA.crt, а root CA - ca.crt. Тогда под видом требуемого в инструкции openbao.crt вы должны положить не выпущенный для openbao сертификат, а chain, созданный таким образом:
cat my-openbao.crt middleCA.crt > openbao.crt
Настройка
Основная часть
Установите пакет openbao на компьютер, с которого планируете управлять сервером:
apt-get install openbao
Установите переменные среды с информацией для удалённого подключения через клиент openbao:
- VAULT_ADDR — URL вашего сервера,
- VAULT_CACERT — путь к PEM-файлу корневого CA,
- VAULT_TLS_SERVER_NAME — имя/IP, которое должно совпадать с сертификатом сервера.
Например:
export VAULT_ADDR='https://10.10.7.200:8200'
export VAULT_CACERT="$HOME/ca.crt" # Путь к копии того самого ROOT CA, который вы использовался при установке OpenBao на сервере
export VAULT_TLS_SERVER_NAME='10.10.7.200'
Запустите команду, чтобы получить токен управления и ключи для операции unseal:
bao operator init # Сохраните полученные ключи и токен в безопасном месте
Непосредственно перед логином вам, возможно, нужно провести операцию unseal с помощью введения полученных ранее ключей через команду:
bao operator unseal # вводится несколько раз для каждого ключа
Входим в режим управления хранилищем:
bao login <INITIAL_ROOT_TOKEN>
Для altflow нам понадобится не kv-v2, а обычный non-versioned KV (KV v1), включить который нужно так:
bao secrets enable -path=kv kv
Завершающим шагом будет внесение в базу данных секретов, необходимых для функциорования компонентов alflow. Для этого можно воспользоваться скриптом.
Примечание! Данная инструкция может помощь в упрощённом развёртывании altflow. В реальности же правильно рассмотреть развёртывание openbao внутри кластера kubernetes.
Создание AppRole
Для доступа из kubernetes, вероятнее всего, потребуются RoleID и SecretID.
Для того чтобы создать их, включите AppRole auth method:
bao auth enable approle
Создайте policy только на чтение нужных секретов в отдельном файле altflow-read.hcl:
cat > altflow-read.hcl <<'EOF'
path "kv/altflow-system-helm-secrets/*" {
capabilities = ["read", "list"]
}
path "kv/altflow-builds" {
capabilities = ["create", "update", "read", "list"]
}
path "kv/altflow-builds/*" {
capabilities = ["create", "update", "read", "list"]
}
EOF
Загрузите policy в OpenBao:
bao policy write altflow-read altflow-read.hcl
Создайте AppRole (в документации AppRole описано, что роль создаётся на пути auth/approle/role/<name>):
bao write auth/approle/role/altflow-secrets \
token_policies="altflow-read" \
token_ttl="1h" \
token_max_ttl="24h"
Получите RoleID:
bao read auth/approle/role/altflow-secrets/role-id
Сгенерируйте SecretID:
bao write -f auth/approle/role/altflow-secrets/secret-id