首页 > 其他分享 >使用 Secrets Loader 轻松管理 Laravel 和 JS 项目

使用 Secrets Loader 轻松管理 Laravel 和 JS 项目

时间:2024-09-20 14:24:07浏览次数:9  
标签:Laravel Secrets 秘密 aws Loader ssm secrets env loader

跨各种环境管理 api 密钥、令牌和凭证等敏感数据可能非常棘手,尤其是在开发和部署应用程序时。确保秘密在需要时安全地存储和获取,而不是将它们硬编码到版本控制中,对于维护安全性至关重要。

这就是我创建 secrets loader 的原因,这是一个 bash 脚本,可以动态地将 aws ssm 和 cloudformation 中的密钥直接提取到您的 .env 文件中,从而使本地开发和部署更轻松、更安全、更高效。

什么是秘密加载器?
secrets loader 是一个简单的工具,旨在根据 .env 文件中的自定义语法自动从 aws ssm parameter store 和 aws cloudformation 输出中获取密钥。它用实际秘密替换占位符,而不会在版本控制中暴露敏感信息。

例如,您无需对 api 密钥或凭据进行硬编码,而是在 .env 文件中定义它们,如下所示:

只需一个命令,secrets loader 即可从 aws 获取实际值并更新您的 .env 文件,从而保证敏感信息的安全且易于管理。

我为什么建造它
在本地开发和部署期间,我发现自己正在处理敏感凭据,我不想将这些凭据硬编码到项目文件中。广泛使用 aws 服务后,我想要一种将秘密管理集成到我现有的开发工作流程中的方法,而不需要太多麻烦。

以下是 secrets loader 解决的主要挑战:

避免硬编码秘密:不再将秘密提交给版本控制。您可以安全地使用占位符并从 aws ssm 和 cloudformation 动态获取实际值。
减少手动工作:无需手动复制和粘贴秘密值,只需在 .env 文件中定义一次,然后让脚本执行提取操作。
简化机密管理:无论您是在本地开发、登台还是生产,secrets loader 都能确保安全、自动加载机密。
特征
secrets loader 具有一些关键功能,使其成为本地开发和生产环境的便捷工具:

自动秘密加载:通过在 .env 文件中指定路径从 aws ssm parameter store 和 cloudformation 获取秘密。
安全第一的方法:通过在运行时安全地加载敏感数据,使敏感数据脱离版本控制。
简单语法:在 .env 文件中使用自定义语法(ssm:用于 ssm 参数,cf:用于 cloudformation 输出)来指定机密应来自何处。
错误处理:即使一次检索失败,脚本也会继续处理其他机密,并在不停止工作流程的情况下记录警告。
它是如何运作的
secrets loader 的神奇之处在于它能够根据特定前缀(ssm: 和 cf:)从 aws 获取机密。这是一个示例工作流程:

设置您的 .env 文件:
使用 ssm 参数的 ssm: 前缀或 cloudformation 输出的 cf: 前缀在 .env 文件中添加机密占位符:

运行脚本:
使用以下命令运行脚本并获取机密:

更新的 .env 文件:
运行脚本后,您的 .env 文件将使用从 aws 获取的实际值进行更新:

不再需要硬编码秘密,也不再需要手动查找!

安装与设置
准备好开始了吗?以下是您在项目中设置 secrets loader 的方法:

克隆存储库:

使脚本可执行:

确保已安装并配置 aws cli:
如果您尚未安装 aws cli,请按照 aws cli 安装指南进行操作。安装后,配置您的 aws 凭证:

在 .env 中定义你的秘密:
使用 ssm: 和 cf: 前缀来定义秘密的来源:

用法示例
让我们看一个简单的例子:

.env.example 文件:

运行秘密加载器:

更新的 .env 文件:

故障排除
如果您在使用secrets loader时遇到任何问题,请检查以下几点:

aws 权限:确保 aws cli 配置正确,并且您的 iam 角色或用户有足够的权限来访问 aws ssm 和 cloudformation 密钥。

语法错误:仔细检查 .env 文件中的语法以确保 ssm: 和 cf: 前缀正确。

脚本错误:如果脚本无法获取某些机密,它将记录警告,但会继续获取其他机密。查看日志中是否有任何错误消息,并确保 aws 资源存在且可访问。

扩展秘密加载器
该脚本被设计为可扩展的。如果您想集成其他秘密管理系统(例如 azure key vault 或 hashicorp vault),您可以轻松修改脚本以支持新的前缀和获取逻辑。

例如,您可以添加 azkv: 前缀以从 azure key vault 获取机密并使用 azure cli 处理检索。

贡献
secrets loader 是开源的,欢迎贡献!如果您想添加功能、修复错误或提出改进建议,请随时:

打开问题:分享您的反馈或错误报告。
提交拉取请求:按照我们的贡献指南贡献代码。
结论
如果您厌倦了跨环境手动管理机密,secrets loader 是一个简单、有效的工具,可以简化流程。通过从 aws ssm 和 cloudformation 动态获取机密,您可以安全地管理您的凭证,而不会面临在版本控制中暴露的风险。

在 github 上查看该项目,尝试一下,如果您发现它有用,在 github 上给我们一个 ⭐!您的支持有助于项目的成长,我们很乐意听到您的声音反馈或查看您对其持续开发的贡献。

标签:Laravel,Secrets,秘密,aws,Loader,ssm,secrets,env,loader
From: https://www.cnblogs.com/aow054/p/18422432

相关文章

  • 易优eyoucms网站详情页报错报错 \core\library\think\Loader.php 类不存在:app\co
    类不存在:app\common\model\Pic,这个错误表明PHP无法找到类 app\common\model\Pic。这通常是因为类文件未被正确加载或命名空间配置不正确导致的。以下是一些可能的解决步骤:1.确认类文件路径确保类文件 Pic 的路径正确并且文件存在。检查文件路径确认 app\common\model......
  • laravel: 日志配置
    一,日志按天切分:修改.envroot@lhdpc:/data/api#vi.env指定LOG_CHANNEL值为daily即可,代码:LOG_CHANNEL=daily二,配置laravel日志中记录url/方法/参数1,config/logging.php'daily'=>['driver'=>'daily','path......
  • Laravel BroadcastAs 中的 Pusher 传递参数
    一、BroadcastAs简介的作用是Laravel框架中的一个特性,用于在广播事件时指定事件的名称。它的作用是提供一种更具可读性和可维护性的方式来标识广播事件。通过使用BroadcastAs,开发人员可以更清晰地表达事件的含义,使得代码更易于理解和维护。此外,BroadcastAs还可以用于在不同的......
  • 踩坑日志2:dataloader的num_workers问题
    当我想用dataloader多开子进程加快图片加载速度时,发现报有关进程的错误:RuntimeError:Anattempthasbeenmadetostartanewprocessbeforethecurrentprocesshasfinisheditsbootstrappingphase.Thisprobablymeansthatyouarenotu......
  • You may need an appropriate loader to handle this file type, currently no loa
        经过提示分析这段代码使用了es6语法,一些低版本node环境不能解析。需要配置一个loader来处理 this.hitDetectionEnabled_=options.hitDetectionEnabled??true; 如果使用vue.config.jswebpack配置如下configureWebpack:{module:{rules:[{......
  • Laravel Blade:如何在表循环中迭代模型的belongsToMany关系?
    一、引言(一)介绍是一种流行的PHP模板引擎,用于构建动态网页。在本文中,我们将探讨如何在表循环中迭代模型的belongsToMany关系。通过使用LaravelBlade,我们可以轻松地处理这种复杂的关系,并在模板中显示相关的数据。本文将介绍如何设置关系、如何在模板中访问关系数据以及如何使用......
  • 百度WEBUPLOADER大文件(视频)上传解决方案
    前端:vue2,vue3,vue-cli,html5,webuploader后端:asp.net,jsp,springboot,php,数据库:MySQL,Oracle,SQLServer,达梦,人大金仓,国产数据库功能:超大文件上传,文件和文件夹批量上传,断点续传,加密上传,视频上传技术:百度webuploader,分块,切片,断点续传,秒传,MD5验证,纯JS实现,支持第三方......
  • laravel 策略模式、工厂模式使用案例
    laravel策略模式、工厂模式使用案例在Laravel中使用设计模式来对接多个物流服务商(如菜鸟、顺丰、极兔),可以使用策略模式或工厂模式来实现动态调用不同物流接口的功能。下面的示例展示了如何使用策略模式来实现这个需求,通过一个父类,多个子类来处理不同的物流服务商,并根据单......
  • lumen/laravel 生成pdf中文乱码
    最近在处理一个需求。把一个处理好的excel格式的表格导出成pdf下载。搞了几次发现,中文不兼容,签名图片不展示。好不容易兼容中文,又可以展示图片,但是格式有不太好调整。最后选择自己改轮子。自己动手,丰衣足食。  第一步直接使用lumen的自带方法类生成pdf1.  Excel::downlo......
  • laravel singleton 单例模式使用
    laravelsingleton单例模式使用1、简介在Laravel中,singleton是用于将一个类注册为单例模式的服务,也就是说,整个应用程序生命周期内,Laravel只会实例化一次该服务。这个服务可以在多个地方共享同一个实例,而不是每次请求时都创建一个新的实例。2、使用场景当你希望某个类只......