tecnovix/azure-key-vault

允许在 Laravel 应用程序内部轻松地从 Azure Key Vault 获取机密

dev-master 2022-12-07 19:40 UTC

This package is auto-updated.

Last update: 2024-09-07 23:26:33 UTC


README

概述

此包允许从 Azure Key Vault 获取或设置机密,其接口类似于 env()config()

安装

使用 composer 安装此包

composer require tecnovix/azure-key-vault

安装后,Laravel 应该能发现此包。

如果使用包的默认配置,必须设置以下环境变量

  • AZURE_AD_CLIENT_ID 将用于访问保管库的服务主体的 UUID。此服务主体需要在保管库上具有“获取机密”权限。
  • AZURE_AD_CLIENT_SECRET 该服务主体的共享秘密。
  • AZURE_AD_TENANT_ID 存在服务主体的租户的 UUID。
  • AZURE_KEY_VAULT_NAME 保管库的名称(用作主机名的子域名;例如,fredfred.vault.azure.net 中)。

此包将配置发布到 vault.php。可以使用以下方法完成此操作

php artisan vendor:publish --provider='InsitesConsulting\AzureKeyVault\ServiceProvider'

配置条目如下

  • tenant_id 租户 UUID
  • client_id 服务主体 UUID
  • client_secret 服务主体共享秘密
  • vault 保管库名称

用法

此包提供了一个名为 Vault 的外观,具有三个方法 Vault::secret()Vault::setSecret()Vault::setVault(),以及一个全局辅助函数 secret()

要获取名为 'apikey' 的机密

$secret = Vault::secret('apikey');

如果机密不存在,将返回 null,除非指定了不同的默认值,如下所示

$other_secret = Vault::secret('otherkey', 'default-value');

如果出现错误,将抛出 InsitesConsulting\AzureKeyVault\AzureKeyVaultException。其消息将被设置为 Azure 错误响应的主体,其代码将被设置为该响应的 HTTP 状态。

全局辅助函数的行为与外观方法相同

$secret = secret('apikey');
$other_secret = secret('otherkey', 'default-key');

要将名为 'apikey' 的机密设置为值 'longsecretvalue'

Vault::setSecret('apikey', 'longsecretvalue');

此方法为空,但在出错时将以与 Vault::secret() 相同的方式抛出 InsitesConsulting\AzureKeyVault\AzureKeyVaultException

要处理多个保管库,请使用 Vault::setVault() 更改使用的保管库名称

$secret = secret('apikey');
Vault::setVault('other-vault');
$other_secret = secret('apikey');

这是持久的:新设置的保管库将保持到再次调用 Vault::setVault()

在不带参数的情况下调用 Vault::setVault() 将将保管库名称重置为配置文件中设置的保管库名称

$other_secret = secret('apikey');
Vault::setVault();
$secret = secret('apikey');