kebacorp/vaultsecret

此扩展允许从json文件中加载Vault秘密并获取它们

安装量: 6,251

依赖: 0

建议者: 0

安全: 0

星标: 5

关注者: 2

分支: 1

开放问题: 1

类型:扩展

v2.0.4 2024-07-22 09:03 UTC

This package is auto-updated.

Last update: 2024-09-22 09:29:17 UTC


README

VaultSecret


此扩展允许从Vault服务或从json文件中加载Vault秘密并获取它们。

有关许可证信息,请检查LICENSE文件。

Total Downloads Latest Stable Version 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);