secretary / 核心
PHP 的秘密管理器
Requires
- php: ^8.0
- symfony/options-resolver: ^5.4 || ^6.0 || ^7.0
Requires (Dev)
- mockery/mockery: ^1.4
- phpunit/phpunit: ^9.0
Suggests
- secretary/aws-secrets-manager-adapter: For reading secrets from AWS Secrets Manager
- secretary/hashicorp-vault-adapter: For reading secrets from Hashicorp Vault
- secretary/psr16-cache-adapter: For caching secrets using a PSR-16 SimpleCache Interface
- secretary/psr6-cache-adapter: For caching secrets using a PSR-6 Cache Interface
- secretary/secretary-bundle: For integrating Secretary with the Symfony Framework
This package is auto-updated.
Last update: 2024-08-29 16:59:10 UTC
README
秘密是大多数可构建的应用程序的一个重要方面。如何存储它们,并保持它们“秘密”是一个挑战。幸运的是,有一些工具可以帮助您保持它们的安全。
Secretary 是一个将您的 PHP 应用程序与这些工具集成的工具。
目录
安装
$ composer req secretary/core
选择您需要的版本
本身,核心是无用的。您还需要至少添加一个适配器
还有一些附加到 Secretary 的其他杂项包
API 文档
在 Secretary 中,您将与两个类交互
Secretary\Manager
Secretary\Manager->__construct(AdapterInterface $adapter)
传递您希望使用的适配器。
<?php use Secretary\Manager; use Secretary\Adapter\AWS\SecretsManager\LocalJSONFileAdapter; $manager = new Manager( new LocalJSONFileAdapter([ 'region' => 'us-east-1', 'credentials' => [ 'accessKeyId' => 'myAccessKeyId', 'secretAccessKey' => 'mySecretAccessKey' ] ]) );
可选地,您可以使用其中一个缓存适配器来包装您的适配器。
<?php use Secretary\Manager; use Secretary\Adapter\AWS\SecretsManager\LocalJSONFileAdapter; use Secretary\Adapter\Cache\PSR6Cache\ChainAdapter; use Cache\Adapter\Apc\ApcCachePool; $manager = new Manager( new ChainAdapter( new LocalJSONFileAdapter([ 'region' => 'us-east-1', 'credentials' => [ 'accessKeyId' => 'myAccessKeyId', 'secretAccessKey' => 'mySecretAccessKey' ] ]), new ApcCachePool() ) );
有关适配器的参数和选项的更多信息,请参阅相应的文档。
Secretary\Manager->getSecret(string $key, ?array $options): Secret
从配置的适配器中检索秘密。 $key
是您试图获取的秘密(或路径)的名称。
某些适配器还将接受自定义选项,例如 AWS SecretsManager 适配器的 VersionId 和 VersionStage。
如果秘密找不到,将抛出 Secretary\SecretNotFoundException
。
$secret = $manager->getSecret('databases/redis/dsn'); /* Secret { "path" = "databases/redis/dsn", "value" = "redis://:6379" } */
某些适配器还支持将键/值映射作为秘密的值存储。
$secret = $manager->getSecret('databases/redis'); /* Secret { "path" = "databases/redis", "value" = [ "dsn" => "redis://:6379", "password" => "my_super_strong_password" ] } */
Secretary\Manager->putSecret(string $key, string|array $value, ?array $options): void
将具有给定 $value
的秘密放入存储引擎中,其键为 $key
。
如果当前适配器不支持数组,并且您传递了一个数组,它将抛出 Secretary\ValueNotSupportedException
。
同样,某些适配器允许传递自定义选项,并将其与请求一起发送。
$manager->putSecret('database/redis', 'postgres://:5432');
对于支持键/值映射作为值的适配器
$manager->putSecret('database/redis', ['dsn' => 'redis://:6379', 'password' => 'my_super_strong_password']);
Secretary\Manager->deleteSecret(string $key, ?array $options): void
使用给定的 $key
从存储引擎中删除一个秘密。
同样,某些适配器允许传递自定义选项,并将其与请求一起发送。
$manager->deleteSecret('database/redis');
Secretary\Manager->getAdapter(): AdapterInterface
将返回在构造过程中传递给此管理器的适配器。
Secretary\Secret
此类实现了 ArrayAccess 接口,因此如果您的秘密支持传递键/值映射,您可以直接从映射中获取
秘密是不可变的,因此尝试更改值将抛出异常。
$secret = $manager->getSecret('database/redis'); $dsn = $secret['dsn'];
Secretary\Secret->getKey(): string
返回秘密的键
$secret = $manager->getSecret('dabase/redis'); $secret->getKey() === 'database/redis'; // true
Secretary\Secret->getValue(): string | array
返回秘密的值。如果秘密是键/值映射,它是一个数组
$secret = $manager->getSecret('dabase/redis/dsn'); $secret->getValue() === 'redis://:6379'; // true // Or $secret = $manager->getSecret('dabase/redis'); print_r($secret->getValue()); /* [ "dsn" => "redis://:6379", "password" => "my_super_strong_password" ] */