安全访问100个AWS帐户

埃文约翰逊2018年3月6日

分部每天从我们的客户接收数十亿事件,并已成长为数十个AWS账户。manbetx客户端应用下载扩大到更多的帐户是必要的,以最好地与我们的GDPR和安全举措,但它以大量的复杂性成本。为了继续优雅地进行扩展,我们正在为员工进行建立工具,以便与许多账户一起使用,并集中管理员工访问AWS与Terraform和我们的身份提供商。

分部开始在一个单一的AWS帐户和去年完成了我们的移动到一个开发,阶段,产品,和“操作”帐户。在过去的几个月里,我们每一两周就会增加一个新的AWS账户,并计划继续扩大到每个团队和每个系统的账户。拥有许多“微帐户”可以在系统之间提供卓越的安全隔离,并通过限制AWS速率限制的爆炸半径来提高可靠性。

变焦和保证金

当Segment只有几个账户时,员工会使用他们的电子邮件、密码和2FA令牌登录AWS的“ops”账户。然后,员工将连接到ops-admin控件在开发、阶段和产品帐户中的角色AssumeRoleapi。

变焦和保证金

分部现在有几十个AWS帐户,并计划继续增加更多!为了组织这次扩展,我们需要一种机制来控制我们的账户,员工可以访问的账户,每个员工在每个账户中的权限。

我们也讨厌使用AWS API密钥时,我们没有绝对必要这样做我们迁移到了一个没有员工拥有AWS密钥的系统.相反,员工只能通过我们的身份提供商访问AWS。如今,我们没有员工拥有AWS密钥,未来也不需要员工拥有个人AWS密钥。这是一个巨大的安全胜利!

设计一个可扩展的IAM架构

Segment使用Okta作为身份提供商,并咨询了他们集成指南为了管理多个AWS账户,但在更好的员工体验中改进了次要变化。集成指南建议将身份提供商连接到每个AWS账户,但这会破坏支持的AWS支持,支持帐户切换,并且更复杂地审核哪些团队访问哪些角色。

相反,员工使用我们的身份提供商连接到我们的“ops”账户,然后使用简单的代币服务assume-roleAPI连接到他们可以访问的每个帐户。使用我们的身份提供程序,每个团队被分配到中心帐户中的不同角色,每个团队角色可以访问每个帐户中的不同角色。这是典型的“中心辐射式”架构。

变焦和保证金

为了使维护轮辐式架构变得简单,我们构建了一个用于在辐条帐户中创建角色的terraform模块,以及一个用于在轮辐帐户中创建角色的单独terraform模块。这两个模块都只是创建一个角色并将一个策略ARN附加到它,这是模块输入的一部分。

只有模块之间的区别在于它们的信任关系。集线器角色模块允许来自身份提供程序的访问,而spoke模块只允许来自集线器帐户的访问。下面是我们用来允许从Identity提供程序访问中心角色的模块。

为了为每个团队提供只访问团队所需资源的细粒度访问,我们使用中心角色terraform模块在中心帐户中为每个团队创建一个角色。这些角色主要是包含IAM policysts: AssumeRole但也可以在我们的中心角色中提供细粒度访问。

细粒度策略的一个具体而简单的例子是我们的财务规划和分析团队的角色,谁在密切关注我们的AWS支出.我们的财务团队只有可以访问账单信息和我们的预留容量的信息。

不过,FP&A团队没有访问我们的发言帐户。一个团队需要完全访问我们的基础设施和我们所有的帐户是我们的基础和可靠性团队,他们参与我们的随叫随到的轮换。我们提供了只读的的角色,和一个管理员我们基金会团队在所有账户中的角色。

在hub帐户中为每个团队创建每个团队角色之后,将员工分配给代表他们在Okta中的团队的组,然后可以将每个团队分配给他们在hub帐户中的关联角色。

变焦和保证金

Okta允许每个组在hub帐户中分配不同的IAM角色,使用他们的UI,我们可以将FP&A团队分配到我们的“Amazon Web Services”应用程序,并限制他们访问我们在hub帐户中为他们创建的fpa角色。

在建立这个之后,我们需要工具来为我们的员工提供一个惊人的工程经验。尽管这个系统要安全得多,但我们希望它和我们的设置一样可用和高效,只需要几个AWS帐户。

使用aws-okta保持可用性

关于我们的旧IAM设置的一个伟大的事情是,每个有AWS访问权限的员工都可以从他们的本地计算机使用AWS apiaws-vault.每个员工都将自己的IAM用户凭证安全地存储在笔记本电脑的钥匙链中。然而,完全通过Okta访问AWS对我们旧的工作流程来说是一个巨大的改变。

我们的工具团队接受了这个挑战,并创建了一个(接近)drop来替换我们的工程团队广泛使用的aws-vault,称为aws-okta.aws-okta现在开源和GitHub上可用

的质量aws-okta是分部工程师能够顺利撤销AWS证书的主要原因。员工可以使用授予他们的权限和角色执行命令,就像他们在使用aws-vault时所做的一样。

随着AWS-OKTA处理了很多新的复杂性,无法在AWS-Vault中处理。虽然AWS-Vault使用IAM用户凭据运行命令,但AWS-OKTA使用您的OKTA密码(存储在钥匙串中)以使用OKTA进行身份验证,等待对2FA的推送通知的响应,最后向SAML断言提供AWS检索临时凭据。

为了验证与Okta, aws-okta需要知道您的Okta“应用程序id”。我们冒昧地延长了~ / .aws /配置Ini文件,以添加必要的id。

当分部只有几个AWS账户和ops-admin角色,分部工程师都是相同的~ / .aws /配置.一旦每个团队可以使用不同的账户和系统,我们就需要一个更好的系统来管理每个团队的账户和系统~ / .aws /配置.我们的系统还需要一种方法来在创建新帐户和角色时快速更新员工的访问权限。

我们决定将这个解决方案与Segment已经建立的现有技术紧密结合。每个团队的配置存储在一个有我们公司dotfiles的git repo中。新万博app2.0下载每个团队都可以使用我们的内部工具调用来初始化他们的aws配置无袖长衫,这是一个在员工之间分享有用命令的工具。

这是唯一可能添加的,因为所有Segment工程师已经有一个环境变量calledsegment_team.,表示工程师所在的团队。运行Robo aws.config将复制的dotfiles repo,保存旧的~ / .aws /配置,并为其团队初始化最新配置。

AWS的书签当我们使用更少的账户时,是工程师在我们的环境中导航的主要方式。当我们摆脱了ops-admin角色,工程师登录书签停止工作。此外,AWS书签最多只支持5个不同的assume erole目标,我们现在有超过5个帐户。

变焦和保证金

为了支持拥有更多帐号,我们基本上放弃了书签,取而代之的是确保这一点aws-okta支持工程师,谁需要切换AWS帐户经常。我们之前使用的aws-vault意味着我们很多人都很熟悉aws-vault登录命令。我们发现,向aws-okta添加登录命令有助于经常切换帐户的工程师。

变焦和保证金

在响应Duo推送通知后,aws-okta将打开一个浏览器,并在几秒钟内登录到指定的角色。AWS支持此特性自定义联合登录功能,但使用时感觉更像魔法。它使伐木变得轻而易举。

超过100个账户

我们预计,到今年年底,AWS客户数量将接近50个。在默认情况下完全关闭帐户的安全性,以及独立的每个帐户利率限制的可靠性好处是令人信服的。

我们构建的这个系统足够健壮和可用,可以将我们的AWS使用扩展到数百个AWS账户和更多的工程团队。

删除所有员工AWS键非常令人满意从安全性的角度来看,这本身就是一个足够有说服力的理由将您的身份提供者与您的AWS中心帐户集成。


我们世界级的工程组织正在招聘.如果你对创造神奇的工具来授权给我们的工程师感到兴奋,我们的工装团队正在招聘

个性化状态2021

个性化的一对一营销是当今数字优先企业的赌注。但随着消费者期望值的提高,他们是否准备好提供这些体验?

成为一名数据专家。

获取所有有关数据、产品和增长的最新文章,直接发送到您的收件箱。