elixis-group/gcp-secret-manager-bundle

在 Symfony 中使用 GCP Secrets 作为服务容器参数,并提供提供程序类以访问密钥值。

2.0.2 2023-12-05 00:00 UTC

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);
    }
}

示例