每个现代Web应用都有不想让人看到的秘密。API密钥、数据库密码、第三方服务的访问令牌——这些东西硬编码在代码里就是定时炸弹,传到GitHub上更是社死现场。AWS Secrets Manager专门解决这个痛点,但怎么让你的服务器实例安全地拿到这些密钥?很多人卡在这一步。
这篇延续之前的CloudFront+Terraform架构,把密钥管理完整接进去。完整代码已开源在GitHub的v7-secrets分支,可以直接克隆跟着做。
打开网易新闻 查看精彩图片
第一步是创建密钥本身。用AWS CLI一次性搞定:
aws secretsmanager create-secret \--name "my_app/v1/credentials" \--description "Application credentials" \--secret-string '{"my_api_key": "your-api-key"}'
执行成功会返回ARN、Name和VersionId三个关键字段。这个ARN后面写IAM策略时会用到,建议复制保存。
密钥创建后需要更新值怎么办?手动去控制台点太low了。这里提供一个从.env文件自动同步的Bash脚本:
脚本先检查.env文件是否存在,然后逐行解析键值对,过滤掉空行和注释,最后拼成JSON格式。核心逻辑分两支:如果密钥已存在就调用update-secret,不存在则create-secret。这样本地开发环境改完配置,一条命令就能同步到云端。
实际跑通后,你的应用就能通过IAM角色关联的权限,在运行时从Secrets Manager动态拉取密钥。不需要把敏感信息写进镜像,不需要挂在文件系统上,更不需要在代码里到处硬编码。
热门跟贴