kebacorp / vaultsecret
此扩展允许从json文件中加载Vault秘密并获取它们
v2.0.4
2024-07-22 09:03 UTC
Requires
- php: >=5.3
- ext-curl: *
- ext-json: *
- psr/simple-cache: *
README
VaultSecret
此扩展允许从Vault服务或从json文件中加载Vault秘密并获取它们。
有关许可证信息,请检查LICENSE文件。
要求
- PHP 5.3及以上。
安装
安装此扩展的首选方式是通过composer。
运行以下命令:
php composer.phar require --prefer-dist kebacorp/vaultsecret
或者
"kebacorp/vaultsecret": "*"
将以下内容添加到您的composer.json文件的require部分。
使用方法
从包含json字符串的文件中获取秘密
<?php use KebaCorp\VaultSecret\VaultSecret; // Get secret from file that contains json string VaultSecret::getSecret('SECRET_KEY', 'path/secret.json');
通过KV2从Vault服务获取秘密
<?php use KebaCorp\VaultSecret\VaultSecret; use KebaCorp\VaultSecret\VaultSecretParams; // Set params $vaultSecretParams = new VaultSecretParams(); $vaultSecretParams->setToken('vaultToken'); VaultSecret::setParams($vaultSecretParams); // Get secret from Vault service VaultSecret::getSecret('SECRET_KEY', 'https://:8200/v1/kv2/data/secretName');
通过KV1从Vault服务获取秘密
<?php use KebaCorp\VaultSecret\template\TemplateCreator; use KebaCorp\VaultSecret\VaultSecret; use KebaCorp\VaultSecret\VaultSecretParams; // Set params $vaultSecretParams = new VaultSecretParams(); $vaultSecretParams->setToken('vaultToken'); VaultSecret::setParams($vaultSecretParams); // Get secret from Vault service VaultSecret::getSecret( 'SECRET_KEY', 'https://:8200/v1/kv2/data/secretName', null, TemplateCreator::TEMPLATE_KV1 );
参数
设置Vault令牌
<?php use KebaCorp\VaultSecret\VaultSecret; use KebaCorp\VaultSecret\VaultSecretParams; $vaultSecretParams = new VaultSecretParams(); $vaultSecretParams->setToken('vaultToken'); VaultSecret::setParams($vaultSecretParams);
启用Vault秘密模板json文件创建
<?php use KebaCorp\VaultSecret\VaultSecret; use KebaCorp\VaultSecret\VaultSecretParams; $vaultSecretParams = new VaultSecretParams(); $vaultSecretParams->setIsSaveTemplate(true); // Not necessary $vaultSecretParams->setSaveTemplateFilename(__DIR__ . '/jsonTemplates/template'); // Not necessary VaultSecret::setParams($vaultSecretParams);
禁用Vault秘密模板json文件创建
<?php use KebaCorp\VaultSecret\VaultSecret; use KebaCorp\VaultSecret\VaultSecretParams; $vaultSecretParams = new VaultSecretParams(); $vaultSecretParams->setIsSaveTemplate(false); VaultSecret::setParams($vaultSecretParams);
将默认Vault源设置为秘密
这可能是一个指向Vault服务的链接。例如:'https://:8200/v1/kv2/data/secretName'
<?php use KebaCorp\VaultSecret\VaultSecret; use KebaCorp\VaultSecret\VaultSecretParams; $vaultSecretParams = new VaultSecretParams(); $vaultSecretParams->setSource('https://:8200/v1/kv2/data/secretName'); VaultSecret::setParams($vaultSecretParams);
或者它可能是json文件的路径。例如:'path/secret.json'
<?php use KebaCorp\VaultSecret\VaultSecret; use KebaCorp\VaultSecret\VaultSecretParams; $vaultSecretParams = new VaultSecretParams(); $vaultSecretParams->setSource('path/secret.json'); VaultSecret::setParams($vaultSecretParams);
设置自己的缓存对象
您可以使用实现CacheInterface
类继承的任何缓存。
默认使用SecretHybridCache
。
还有一个SecretMemoryCache
,它将数据存储在RAM中,但仅在客户端连接期间存储。因此,每次它们从秘密源加载数据时。
<?php use KebaCorp\VaultSecret\SecretMemoryCache; use KebaCorp\VaultSecret\VaultSecret; use KebaCorp\VaultSecret\VaultSecretParams; // Use your cache object here $myCacheObject = SecretMemoryCache::getInstance(); $vaultSecretParams = new VaultSecretParams(); $vaultSecretParams->setCache($myCacheObject); VaultSecret::setParams($vaultSecretParams);