Можно добавить другие секреты движков.
Движки секретов – это модель расширяемости Vault, которая позволяет получать данные, выполнять действия и возвращать результат.
Например, если вы хотите динамически подготовить участников службы в Azure, можно добавить механизм Azure (при условии, что у них есть достаточные привилегии в Azure).
Примечание. Секретный механизм Azure предназначен для создания принципалов службы. Включение аутентификации Azure не имеет ничего общего с AKV
$ vault write azure/config \
> subscription_id=******-****-****-****-********** \
> tenant_id=******-****-****-****-********** \
> client_id=******-****-****-****-********** \
> client_secret=*********************************
Success! Data written to: azure/config
$ vault write azure/roles/my-role ttl=1h max_ttl=24h azure_roles=-<<EOF
> [
> {
> "role_name": "Contributor",
> "scope": "/subscriptions/<uuid>/resourceGroups/Website"
> },
> {
> "role_id": "/subscriptions/<uuid>/providers/Microsoft.Authorization/roleDefinitions/<uuid>",
> "scope": "/subscriptions/<uuid>"
> },
> {
> "role_name": "This won't matter as it will be overwritten",
> "role_id": "/subscriptions/<uuid>/providers/Microsoft.Authorization/roleDefinitions/<uuid>",
> "scope": "/subscriptions/<uuid>/resourceGroups/Database"
> }
> ]
> EOF
Примеры Secrets Engines: базы данных
Мощное использование Vault Engines взаимодействует с базами данных.
Например, во время проверки программного обеспечения можно динамически создать временного тестового пользователя.
См. Стандартный пайплайн CI CD, показанный ниже.
Пример с MongoDB:
Сначала можно создать экземпляр MongoDB, используя бесплатный образ bitnami в Azure («MongoDB Certified by Bitnami»)
После запуска добавьте входящее правило для порта 27017.
Пароль базы данных находится в журнале диагностики загрузки.
Затем вы можете использовать команду «read», чтобы получить временную учетную запись пользователя
Вы можете использовать Compass CLI, но я решил загрузить только CLI.
$ ~/Downloads/mongodb-osx-x86_64-3.6.2/bin/mongo mongodb://137.117.104.120:27017
MongoDB shell version v3.6.2
connecting to: mongodb://137.117.104.120:27017
MongoDB server version: 4.0.3
WARNING: shell and server versions do not match
Welcome to the MongoDB shell.
$ vault write database/config/my-azure-mongodb \
plugin_name=mongodb-database-plugin \
allowed_roles="my-role" \
connection_url="mongodb://{{username}}:{{password}}@137.117.104.120:27017/admin" \
username="root" \
password="pvK9Xk9sz357"
$ vault write database/roles/my-role \
> db_name=my-azure-mongodb \
> creation_statements='{ "db": "admin", "roles": [{ "role": "readWrite" }, {"role": "read", "db": "foo"}] }' \
> default_ttl="2h" \
> max_ttl="24h"
Success! Data written to: database/roles/my-role
$ vault read database/creds/my-role
Key Value
--- -----
lease_id database/creds/my-role/zquLtoyl8Mk6SvLyZoQeJFpH
lease_duration 2h
lease_renewable true
password A1a-U5JzyT5YBRHprZrF
username v-token-my-role-2Ph0kxLfI2gAE634ElHu-1546356485