管理 AWS 测试和生产环境

管理 AWS 测试和生产环境

在 AWS 中分离生产环境和测试环境的最佳实践是什么?

我能想到 2 个选项(假设我的网站名为:blue-sky.com)

  1. 创建 2 个 AWS 账户:blue-sky 和 ​​test-blue-sky (在测试账户下创建一个测试用户,在生产账户下创建一个生产用户)。

  2. 创建 1 个 AWS 账户:blue-sky。创建 2 个用户,Prod 和 Test。测试用户可以访问测试服务器,而 Prod 用户可以访问 Prod 服务器。

哪个更好?还有其他方法吗?


上述两种情况都有相同的缺点。假设我们的发布经理可以访问测试和生产服务器。他想要破坏测试服务器,因为他拥有这两个环境的凭据,他错误地使用生产凭据登录并删除了生产服务器。

答案1

如果你想把事情做好,就更进一步。

  • 首先了解您的用户帐户。

    1. 有 3 个账户 -登录测试产品. 所有你的IAM 用户仅有的在里面登录帐户,并且都启用了 MFA 以确保安全。

    2. 测试产品帐户你仅有的IAM 角色可以假设登录帐户。

      查看跨账户访问更多细节。

  • 接下来是您的部署。

    不用担心使用产品凭证测试- 你的生产部署应该通过 CI/CD 完全自动化,你应该绝不需要登录 Prod 帐户来手动进行部署。

    利用云形成和...一起AWS代码管道CodeBuild代码部署自动化构建和部署。或者使用其他工具,例如詹金斯戈卡德等等,只要部署到测试和生产都是通过同一个 CI/CD 管道完成的。

    确实会有这种情况测试中你必须登录到控制台来测试、调试等。但这将被确定测试中在推广之前到生产通过您的自动化。

这样你就会有100% 一致和可复制的部署,您不必担心犯错误导致您的生产环境崩溃。

希望有帮助:)

答案2

简短的一般回答:每个环境一个帐户可降低风险、减少达到限制的机会并提供最佳隔离。

--

较长的答案:这个问题没有唯一的答案,但这里有一些选择:

  • 每个环境每个应用程序一个账户。工作负载和用户的最佳隔离,风险最低,测试账户达到最大限额和达到 AWS 限制的可能性最低。保护和监控所有内容需要付出更多努力,并且网络成本可能更高。

  • 每个应用程序一个帐户,每个 VPC 一个环境。良好的应用程序间隔离,但应用程序容易受到用户问题、限制等的影响。您可以使用标签和策略解决用户访问问题,但这需要更多工作。与上述成本评论相同,但略低。

  • 每个应用程序或每个应用程序每个环境一个账户、一个 VPC。设置简单,但需要做更多工作才能实现良好隔离。甚至达到限制的风险更高。

  • 一个账户,一个 VPC,多个应用程序。你可以看到这将导致什么结果——基本上风险又增加了。

在所有情况下,都存在粗心的用户删除错误资源的风险。MLu 建议的自动化部署是减轻这种风险的一种方法。

任何服务器/云的重要部署都应该有一个良好的备份策略。一些金融法规要求,存储在云中的所有数据都必须存储在第二个位置,例如组织拥有的数据中心内。对于我自己的部署,我每晚都会备份到 S3,将 S3 同步到我的 PC,并进行增量备份,该备份存储在异地。

相关内容