nohnaimer / yii2-vault-project-configuration
此扩展帮助您轻松使用Hashicorp Vault后端存储和检索项目的设置。
0.1.1
2023-11-07 12:23 UTC
Requires
- php: >=7.1
- lav45/yii2-settings: 1.3.*
- nohnaimer/yii2-vault-client: 0.1.*
- yiisoft/yii2: >=2.0.13
Requires (Dev)
- roave/security-advisories: dev-master
Conflicts
This package is auto-updated.
Last update: 2024-09-21 13:38:45 UTC
README
此扩展帮助您轻松存储和检索项目的设置。
安装
建议通过composer安装此扩展。
您可以设置控制台
~$ composer require "nohnaimer/yii2-vault-project-configuration" --prefer-dist
或向composer.json
文件中的require
部分添加以下内容:
"require": {
"nohnaimer/yii2-vault-project-configuration": "0.1.*"
}
配置
要从系统存储php-fpm环境变量(macOS、Linux、Unix),需要在/etc/php/php-fpm.d/www.conf
中取消注释clear_env = no字符串。
需要添加环境变量
VAULT_ADDR=https://vault.url/ VAULT_TOKEN=token VAULT_KV_PATH=/kv
docker-compose示例
... php: image: php:latest container_name: php restart: on-failure working_dir: /var/www environment: VAULT_ADDR: https://127:0:0:1:8200/ VAULT_TOKEN: hvs.hrpvk3rEpD2HaHckeb976Ppw volumes: - .:/var/www:cached depends_on: - postgres ...
并且需要使用api或web gui通过VAULT_KV_PATH字符串初始化Hashicorp Vault中的键值存储。
使用
bootstrap.php
... const PROJECT_CONFIGURATION_USE_DEFAULT = YII_ENV_DEV; ...
$db_name = config('db.name', 'site-db-name'); $db_host = config('db.host', 'localhost'); return [ 'components' => [ 'db' => [ 'class' => 'yii\db\Connection', 'dsn' => "mysql:host={$db_host};dbname={$db_name}", 'username' => config('db.username', 'root'), 'password' => config('db.password', '****'), 'enableSchemaCache' => true, 'charset' => 'utf8', ], ], ];
其中包含秘密/kv/db和键名、主机、用户名、密码。分隔符为-。
管理
使用yii2-setting类和yii2迁移添加或删除从vault中的数据。
使用yii2迁移
return [ 'components' => [ 'vault' => [ 'class' => nohnaimer\config\storage\VaultStorage::class, 'kv' => [ 'class' => nohnaimer\vault\services\KVv1::class, 'path' => '/kv', 'client' => [ 'class' => nohnaimer\vault\Client::class, 'url' => 'url', 'token' => 'token', ], ], ], ], ];
您可以使用类似以下内容
class m221103_161325_vault_init extends Migration { /** * {@inheritdoc} */ public function safeUp() { $vault = Yii::$app->vault; //add $vault->setValue('/my/secret/key', 'value'); //delete secret with all keys $vault->deleteValue('/my/secret/key'); } }
许可协议
yii2-vault-project-configuration在BSD 3-Clause许可下提供。详细信息可在LICENSE.md
中找到。