freebuu / laravel-vault

Laravel HashiCorp Vault 包

dev-master 2023-08-20 20:42 UTC

This package is auto-updated.

Last update: 2024-09-24 22:37:59 UTC


README

在部署时从远程(HashiCorp Vault)获取 .env

警告!这是一个非常初级的 alpha 版本,无法正常使用。 不建议现在使用

快速入门

安装

composer require freebuu/laravel-vault
php artisan vendor:publish --tag=config --provider="FreeBuu\LaravelVault\LaravelVaultServiceProvider"

配置

从 Vault 添加补丁和变量到 vault.php 中的秘密

'vars' => [
    'patches' => [
        '/secret/database/{env}'
    ],
    'patch_variables' => [
        'env' => 'production',
    ],
  ]

覆盖凭据

使用 Vault 选项创建 vault.json 文件 - 结构必须与 vault.php 相同

在这里您可以覆盖 vault.php 中的所有选项

{
  "connections": {
    "vault": {
      "host": "http://vault",
      "role_id": "your_secret_id",
      "secret_id": "your_secret_id"
    }
  }
}

使用

base64 -w 0 vault.json | php artisan vault:get --stdin --b64

如果一切正常(凭据有效且有权访问秘密补丁),您将看到所有补丁的合并值

+---------+------------+
| Key     | Value      |
+---------+------------+
| secret1 | value1     |
| secret2 | value2     |
+---------+------------+
  • 要保存到 .env - 添加选项 --output=currentEnv
  • 要保存到 .env.next - 添加选项 --output=nextEnv

在 CI 中使用

这里有一个来自 CI 的简写命令

  • 在运行器上,获取一个 token 文档
  • 使用该 token 获取 .env
php artisan vault:ci s.JYVfe67632rRDtyf --app=my_project --env=production
  • s.JYVfe67632rRDtyf - Vault 一次性 token
  • my_project - 应用名称,设置 'app' 补丁变量。可选。
  • production - 应用环境,设置 'env' 补丁变量。可选。