stefna/secret-manager-core
秘密管理器核心
dev-main
2024-09-12 08:41 UTC
Requires
- php: ^7.1 || ^8.0
- ext-json: *
This package is auto-updated.
Last update: 2024-09-12 09:04:07 UTC
README
目录
安装
$ composer require stefna/secrets-manager-core
核心仅提供基本功能和一些基本的内存提供程序。
我们提供了一些可以单独安装的提供程序。
API 文档
Stefna\SecretsManager\Manager
Stefna\SecretsManager\Manager->__construct(ProviderInterface $provider)
传入您期望的提供程序。
<?php use Stefna\SecretsManager\Manager; use Stefna\SecretsManager\Provider\ArrayProvider; $manager = new Manager( ArrayProvider::fromArray([ 'key' => 'value', 'key2' => new \Stefna\SecretsManager\Values\Secret('key2', ['mixed' => 'value'], ['stage' => 'dev']) ]) );
您也可以链式调用提供程序。
<?php use Stefna\SecretsManager\Manager; use Stefna\SecretsManager\Provider\ArrayProvider; use Stefna\SecretsManager\Provider\ChainProvider; use Stefna\SecretsManager\Provider\JsonProvider\JsonProvider; $defaultSecretsProvider = ArrayProvider::fromArray([ 'key' => 'value', 'key2' => new \Stefna\SecretsManager\Values\Secret('key2', ['mixed' => 'value'], ['stage' => 'dev']) ]); $manager = new Manager( new ChainProvider( new JsonProvider('secrets.json'), $defaultSecretsProvider // if secrets are missing in JsonProvider will fallback to defaultProvider ) );
Stefna\SecretsManager\Manager->getSecret(string $key, ?array $options): Secret
从配置的提供程序获取秘密,$key
是您要获取的秘密的名称(或路径)。
如果秘密未找到,将抛出 Stefna\SecretsManager\SecretNotFoundException
。
use Stefna\SecretsManager\Manager; use Stefna\SecretsManager\Provider\ArrayProvider; $manager = new Manager(ArrayProvider::fromArray([ 'databases/redis/dsn' => 'redis://localhost:6379', ])); $secret = $manager->getSecret('databases/redis/dsn'); $secret->getValue() === 'redis://localhost:6379';
Stefna\SecretsManager\Manager->putSecret(string $key, string|array $value, ?array $options): void
使用给定的 $value
将秘密存储在给定的 $key
下。
如果当前适配器不支持数组,并且您传递了一个数组,它将抛出 Stefna\SecretsManager\ValueNotSupportedException
。
再次,一些适配器允许在请求中传递自定义选项。
$manager->putSecret('database/redis', 'postgres://localhost:5432');
对于支持将键/值映射作为值的适配器
$manager->putSecret('database/redis', ['dsn' => 'redis://localhost:6379', 'password' => 'my_super_strong_password']);
Stefna\SecretsManager\Manager->deleteSecret(Secret $secret, ?array $options): void
使用给定的 $secret
从提供程序中删除秘密。
use Stefna\SecretsManager\Manager; use Stefna\SecretsManager\Provider\ArrayProvider; $manager = new Manager(ArrayProvider::fromArray([ 'databases/redis/dsn' => 'redis://localhost:6379', ])); $secret = $manager->getSecret('databases/redis/dsn'); $manager->deleteSecret($secret);
Stefna\SecretsManager\Manager->getProvider(): ProviderInterface
将返回当前正在使用的提供程序。
Stefna\SecretsManager\Secret
秘密是不可变的,如果您尝试修改它,将抛出异常。
该类实现了ArrayAccess接口,以便轻松读取存储在关联数组中的机密。
Stefna\SecretsManager\Secret->getKey(): string
返回机密的键
use Stefna\SecretsManager\Manager; $manager = new Manager($provider); $secret = $manager->getSecret('database/redis'); $secret->getKey() === 'database/redis';
Stefna\SecretsManager\Secret->getValue(): string|array<string, mixed>
返回机密的值。如果机密是一个键/值映射,它可以作为一个数组使用
use Stefna\SecretsManager\Manager; use Stefna\SecretsManager\Provider\ArrayProvider; $manager = new Manager(ArrayProvider::fromArray([ 'databases/redis/dsn' => 'redis://localhost:6379', ])); $secret = $manager->getSecret('dabase/redis/dsn'); $secret->getValue() === 'redis://localhost:6379';
数组式访问
use Stefna\SecretsManager\Manager; use Stefna\SecretsManager\Provider\ArrayProvider; $manager = new Manager(ArrayProvider::fromArray([ 'database' => new \Stefna\SecretsManager\Values\Secret('database', [ 'user' => 'test', 'name' => 'testDb', ]), ])); $secret = $manager->getSecret('database'); $secret['user'] === 'test';