nohnaimer/yii2-vault-project-configuration

此扩展帮助您轻松使用Hashicorp Vault后端存储和检索项目的设置。

0.1.1 2023-11-07 12:23 UTC

This package is auto-updated.

Last update: 2024-09-21 13:38:45 UTC


README

Latest Stable Version License Total Downloads

此扩展帮助您轻松存储和检索项目的设置。

安装

建议通过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中找到。