如何在 AWS S3 存储桶和 Cloudfront 上的生产环境中隐藏 .env 密钥

问题描述 投票:0回答:1

我正在开发一个具有微前端结构的项目,该项目是托管子 React 应用程序的父 Astro 应用程序。使用的技术是ReactJS,依赖有Vite、Webpack CLI等

我正在使用 Amazon Cognito,并将 UserPoolId 和 ClientId 放入父 Astro 应用程序中的 .env 文件中。

问题是一旦我部署到AWS S3和CloudFront Distribution。 .env 文件未提交到 Gitlab,因此部署的 CloudFront 网站不知道在哪里可以找到 UserPoolId 和 ClientId。

我一直在研究,似乎找不到好的方法。我考虑过为 UserPoolId 和 ClientId 设置 Gitlab CI/CD 管道变量,但我不确定这是否是一个好的做法。也考虑过使用 dotenv,但我认为这不适用于生产环境中的安全性,仅适用于开发环境。

我应该怎么做才能使部署的CloudFront网站能够以安全的方式访问UserPoolId和ClientId?您采取了哪些步骤?很想听听您的意见!

reactjs amazon-web-services amazon-cognito astro .env
1个回答
0
投票
最好不要将机密存储在文件中。这篇文章可能有用,我没有尝试过。

https://aws.amazon.com/blogs/networking-and-content-delivery/authorizationedge-how-to-use-lambdaedge-and-json-web-tokens-to-enhance-web-application-security/

它描述了如何将 Cognito 放入 CloudFront 的

front,一旦用户登录,即可获取 Cognito 生成的 JWT 令牌,并通过 Lambda 函数(特别是 Lambda@Edge 部署)在最近的边缘位置对其进行验证.

一旦验证,请求将被转发到源,并且可以访问私有内容。

© www.soinside.com 2019 - 2024. All rights reserved.