elixis-group / gcp-secret-manager-bundle
在 Symfony 中使用 GCP Secrets 作为服务容器参数,并提供提供程序类以访问密钥值。
Requires
- php: >=7.4
- google/apiclient: ^2.15
- google/cloud-secret-manager: ^1.12
- phpunit/phpunit: ^9.6
- symfony/dependency-injection: ^5.4|^6.0|^6.4
- symfony/flex: ^2.4
- symfony/yaml: ^5.4|^6.0|^6.4
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.3
- phpstan/phpstan: ^1.2
- symfony/framework-bundle: ^5.4|^6.0|^6.4
- symfony/phpunit-bridge: ^5.4|^6.0|^6.4
This package is auto-updated.
Last update: 2024-09-05 11:27:28 UTC
README
版本 2.0.2 创建 2021/08/12 最后更新 2023/12/05
在 Symfony 中使用 GCP Secrets 作为服务容器参数,并提供提供程序类以访问密钥值。
先决条件
在您的 Google Cloud 项目中配置 Secret Manager,请参阅以下文章,该文章解释了如何创建和配置 Google Secret Manager https://cloud.google.com/secret-manager/docs/configuring-secret-manager。
警告:在本地开发环境中,您需要创建一个服务帐户来设置全局变量 GOOGLE_APPLICATION_CREDENTIALS。请参阅 https://cloud.google.com/iam/docs/service-accounts#user-managed。
安装
警告!在安装包之前,需要最小配置。Google Secret Manager 需要一个全局变量 GOOGLE_APPLICATION_CREDENTIALS。
创建文件 config/packages/gcp_secret_manager.yaml
并添加以下内容。
#config/packages/gcp_secret_manager.yaml
gcp_secret_manager:
secret_manager_client_config:
keyfilepath: '%kernel.project_dir%/google_application_credentials.json' # Google Credentials path
$ composer require gcp-secret-manager-bundle
激活 GCP Secret Manager Bundle。
#config/bundles.php
ElixisGroup\GcpSecretManagerBundle\GcpSecretManagerBundle::class => ['all' => true],
配置
默认情况下,此包的配置从 config/packages/gcp_secret_manager.yaml 文件或其环境特定配置中加载。
以下配置属性可用
#config/packages/gcp_secret_manager.yaml
gcp_secret_manager:
secret_manager_client_config:
project_id: 'projectId' # Google Cloud project id
keyfilepath: '%kernel.project_dir%/google_application_credentials.json' # Google Credentials path
delimiter: ':' # Delimiter to separate secret name from secret version
ignore: false # Pass through GCP Secret Manager (if you don't use set to "true").
默认用法
设置一个环境变量为 AWS Secret Manager 密钥名称和版本,使用 config 中定义的分隔符或默认分隔符分隔,如下所示
#.env
SECRET_ENV_VAR=SECRET_NAME:SECRET_VERSION
使用 gcp 处理器为此环境变量设置一个参数
#config/services.yaml
parameters:
secret_env_var: '%env(gcp:SECRET_ENV_VAR)%'
服务容器用法
如果您不想使用服务容器参数,也可以使用独立的服务容器。
#Controller/AcmeController.php
use ElixisGroup\GcpSecretManagerBundle\Provider\GcpSecretManagerProvider;
class AcmeController extends AbstractController
{
public function index(GcpSecretManagerProvider $secretProvider){
$secretValue = $secretProvider->get('SECRET_NAME', SECRET_VERSION);
}
}