You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Laravel中通过GCP SecretManager配置Firebase Admin私钥

从GCP Secret Manager加载Firebase私钥到Laravel

以下是具体实现步骤:

1. 安装GCP Secret Manager依赖

首先安装Google Cloud Secret Manager的PHP客户端库:

composer require google/cloud-secret-manager

2. 创建自定义服务提供者

生成服务提供者用于动态加载Secret Manager中的密钥:

php artisan make:provider FirebaseCredentialsServiceProvider

打开生成的app/Providers/FirebaseCredentialsServiceProvider.php,替换内容为:

<?php

namespace App\Providers;

use Google\Cloud\SecretManager\V1\SecretManagerServiceClient;
use Illuminate\Support\ServiceProvider;

class FirebaseCredentialsServiceProvider extends ServiceProvider
{
    public function boot(): void
    {
        // 仅生产环境从Secret Manager加载密钥,开发环境保留本地文件配置
        if ($this->app->environment('production')) {
            // 替换为你的GCP项目ID和Firebase密钥对应的Secret名称
            $secretFullPath = 'projects/你的GCP项目ID/secrets/你的Firebase密钥Secret名称/versions/latest';
            
            $client = new SecretManagerServiceClient();
            $secretResponse = $client->accessSecretVersion($secretFullPath);
            $secretJson = $secretResponse->getPayload()->getData();
            
            // 将JSON字符串解析为数组,覆盖Firebase配置
            $credentials = json_decode($secretJson, true);
            config()->set('firebase.credentials', $credentials);
        }
    }

    public function register(): void
    {
        // 无需额外注册逻辑
    }
}

3. 注册服务提供者

在config/app.php的providers数组中添加该服务提供者:

'providers' => [
    // ... 其他已存在的服务提供者
    App\Providers\FirebaseCredentialsServiceProvider::class,
],

4. 修改Firebase配置

调整config/firebase.php中的credentials配置,关闭自动发现以避免冲突:

'credentials' => [
    'file' => env('FIREBASE_CREDENTIALS', env('GOOGLE_APPLICATION_CREDENTIALS')),
    'auto_discovery' => false, // 必须设为false,确保使用手动加载的密钥
],

5. 配置GCP权限

确保运行Laravel的GCP服务账号(如App Engine默认服务账号)拥有Secret Manager Secret Accessor角色,使其具备读取Secret Manager密钥的权限。

环境区分说明

  • 开发环境:继续使用.env中的FIREBASE_CREDENTIALS指向本地JSON文件
  • 生产环境:服务提供者自动从Secret Manager加载密钥,无需在.env中配置该变量

内容的提问来源于stack exchange,提问作者autumn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 07:10:01