stefna/secret-manager-core

秘密管理器核心

dev-main 2024-09-12 08:41 UTC

This package is auto-updated.

Last update: 2024-09-12 09:04:07 UTC


README

目录

  1. 安装
  2. API 文档
    1. Stefna\SecretsManager\Manager
      1. 初始化
      2. getSecret
      3. putSecret
      4. deleteSecret
      5. getProvider
    2. Stefna\SecretsManager\Secret
      1. getKey
      2. getValue

安装

$ 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';