在 AWS 中分离生产环境和测试环境的最佳实践是什么?
我能想到 2 个选项(假设我的网站名为:blue-sky.com)
创建 2 个 AWS 账户:blue-sky 和 test-blue-sky (在测试账户下创建一个测试用户,在生产账户下创建一个生产用户)。
创建 1 个 AWS 账户:blue-sky。创建 2 个用户,Prod 和 Test。测试用户可以访问测试服务器,而 Prod 用户可以访问 Prod 服务器。
哪个更好?还有其他方法吗?
上述两种情况都有相同的缺点。假设我们的发布经理可以访问测试和生产服务器。他想要破坏测试服务器,因为他拥有这两个环境的凭据,他错误地使用生产凭据登录并删除了生产服务器。
答案1
如果你想把事情做好,就更进一步。
首先了解您的用户帐户。
有 3 个账户 -登录,测试和产品. 所有你的IAM 用户是仅有的在里面登录帐户,并且都启用了 MFA 以确保安全。
在测试和产品帐户你仅有的有IAM 角色可以假设登录帐户。
查看跨账户访问更多细节。
接下来是您的部署。
不用担心使用产品凭证测试- 你的生产部署应该通过 CI/CD 完全自动化,你应该绝不需要登录 Prod 帐户来手动进行部署。
利用云形成和...一起AWS代码管道, CodeBuild和代码部署自动化构建和部署。或者使用其他工具,例如詹金斯,戈卡德等等,只要部署到测试和生产都是通过同一个 CI/CD 管道完成的。
确实会有这种情况测试中你必须登录到控制台来测试、调试等。但这将被确定测试中在推广之前到生产通过您的自动化。
这样你就会有100% 一致和可复制的部署,您不必担心犯错误导致您的生产环境崩溃。
希望有帮助:)
答案2
简短的一般回答:每个环境一个帐户可降低风险、减少达到限制的机会并提供最佳隔离。
--
较长的答案:这个问题没有唯一的答案,但这里有一些选择:
每个环境每个应用程序一个账户。工作负载和用户的最佳隔离,风险最低,测试账户达到最大限额和达到 AWS 限制的可能性最低。保护和监控所有内容需要付出更多努力,并且网络成本可能更高。
每个应用程序一个帐户,每个 VPC 一个环境。良好的应用程序间隔离,但应用程序容易受到用户问题、限制等的影响。您可以使用标签和策略解决用户访问问题,但这需要更多工作。与上述成本评论相同,但略低。
每个应用程序或每个应用程序每个环境一个账户、一个 VPC。设置简单,但需要做更多工作才能实现良好隔离。甚至达到限制的风险更高。
一个账户,一个 VPC,多个应用程序。你可以看到这将导致什么结果——基本上风险又增加了。
在所有情况下,都存在粗心的用户删除错误资源的风险。MLu 建议的自动化部署是减轻这种风险的一种方法。
任何服务器/云的重要部署都应该有一个良好的备份策略。一些金融法规要求,存储在云中的所有数据都必须存储在第二个位置,例如组织拥有的数据中心内。对于我自己的部署,我每晚都会备份到 S3,将 S3 同步到我的 PC,并进行增量备份,该备份存储在异地。