insites-consulting/azure-key-vault

允许从Laravel应用程序中轻松获取Azure Key Vault中的秘密

v0.3.3 2023-06-15 09:13 UTC

This package is auto-updated.

Last update: 2024-09-15 12:06:58 UTC


README

概述

此包允许从或设置Azure Key Vault中的秘密,接口类似于env()config()

安装

使用Composer要求此包

composer require insites-consulting/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');

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

要使用多个保险库,请使用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');