亚马逊AWS官方博客
游戏公司多账号管理(一)
通常游戏发行公司每年都要发行数款新游戏,这些游戏可能由公司内部不同的项目组开发,也可能是由其他游戏公司开发。为了实现不同游戏之间的互相独立以及方便的核算每款游戏所使用云计算资源的成本,在AWS上我们推荐为每一款游戏使用单独的账户,这样做的好处是每个游戏都有独立的明细账单,并且不同账户互相独立,有非常好的隔离性。
对于稍大规模的游戏公司来说有十几款、甚至几十款游戏同时在运行中是很常见的,那么为每一款游戏使用单独账户的方式,会给游戏公司带来管理与安全方面的挑战。在和不同的游戏公司交流之后,我总结了一下几点挑战:
(1)如何快速为每个游戏单独创建账户并组织这些账户
(2)如何集中式的用户管理与权限分配
(3)如何方便的查看、管理多账户下的资源
(4)如何实现多账户下用户操作的统一审计
(5)如何减少新账户初始化配置工作
(6)如何限制某个账户或者用户资源使用量
由于涉及的服务和内容较多,本篇Blog将先解决前面三个挑战,在后续的博客中再介绍剩下部分的内容。
(1)如何快速为每个游戏单独创建账户并组织这些账户
为了保持每款游戏的独立性,建议采用每款游戏一个独立账户的方式,那么首先要解决的就是如何方便快速创建账户。创建AWS账户有两种方式,第一种方式是通过注册页面,这种方式需要填写的信息较多,适合公司第一次注册使用AWS;第二种方式就是通过AWS Organizations来创建账户,AWS Organizations本身的功能介绍以及如何启用请参考官方文档,这里不再赘述。
需要注意的是启用AWS Organizations服务的账户被称为管理账户,下面的操作都是在管理账号下完成的。下面介绍如何在AWS Organizations中创建并组织账户
-
- 从AWS控制台进入AWS Organizations服务,点击 AWS 账户,再点击 添加AWS账户
-
- 输入AWS 账户名和电子邮箱地址后,点击创建AWS账户即可
-
- 除了新建账户外,还可以把现有的账户通过邀请的方式加入到组织中来。点击 邀请,再点击邀请AWS账户
-
- 输入现有其他AWS账户的12位数字或者邮箱,点击发送邀请
把所有游戏账户都加到组织之后,接下来我们要组织这些账户,以区分哪些账号属于哪款游戏,哪些游戏属于哪个项目组,哪些游戏是第三方开发商开发的等等。比如,我们按游戏项目组组织所有的账户
-
- 在AWS账户下,选中Root,点击操作下拉列表,再点击新建。通过这种方式我们就可以建立多个项目组
-
- 在AWS账户下,选中某个账户,点击操作下拉列表,再点击移动,可移动到任意组织下。
更多详细操作说明请参考以下文档https://docs.thinkwithwp.com/zh_cn/organizations/latest/userguide/orgs_manage_ous.html
(2)如何集中式的用户管理与权限分配
在用户管理与权限方面,我看到大部分游戏公司都是在每个账户下面单独创建用户并分配权限,在账户少的情况下还可以应付,随着账号增加用户与权限管理的难度越来越大。
通过AWS Organizations解决了游戏账户申请和组织之后,我们就可以利用AWS Single Sign-On (SSO)这个服务,集中管理多个 AWS 账户的访问与权限,并为用户提供单点登录访问他们的所拥有权限的账户。下面介绍如何在SSO内创建用户、用户组、分配权限以及和Organization组织绑定
-
- 使用Organization管理账户,从AWS控制台进入AWS SSO服务,点击左边的用户,然后点击添加用户
-
- 我们还可以创建用户组,点击左边的 组,然后点击 创建组
-
- 将用户加入到某个用户组,点击某个组
-
- 点击 添加用户,将用户加到某个用户组
-
- 创建完用户之后,下面来介绍创建权限集合,首先点击 AWS账户,再点击权限集合,最好创建权限集合
-
- 用户、用户组、权限集合都已经有了,现在为organization的组织指定用户、用户组和分配权限
那么我们如何通过SSO来到登录某个账户呢?
-
- 首先我们要找到SSO的门户URL,点击 设置,我们就可以看到用户门户URL
-
- 打开浏览器,输入url,用户名,点击Next,输入密码
(3)如何方便的查看、管理多账户下的资源
通过SSO可以很方便的登录到每一个账户下面去做相应的操作以及查看资源,但是随着账号越来越多,这依然是一个很费时费力的工作。因此我们需要一个更简单的方式帮我们汇总每个账户下所有区域的资源到一个集中地方进行查看和分析。下面介绍两种方式来汇总资源:第一种是通过AWS Resource Groups,Resource Groups可以查看单个账户下所有区域的资源;另一种方式是通过AWS Config这个服务加上Organization可以实现统一查看组织下所有账户的资源情况。下面我们来看一下具体如何操作
第一种通过AWS Resource Groups的方式
-
- 从AWS控制台进入Resource Groups & Tag Editor服务,点击Tag Editor,选择所有区域,资源类型选择AWS::EC2::Instance,点击 搜索资源
-
- 各个区域的EC2资源如下
-
- 当然也可以指定Tag来进行资源查找
注意:虽然选择了所有的区域,但是由于某些区域还不支持,所以并不是所有的区域资源都能看到
第二种通过Organizations加上AWS Config的方式
-
- 使用organization管理账户从AWS控制台进入AWS Config服务,首先我们要确认config记录功能已打开,如果没打开的话首先要打开。
-
- 点击左边的 聚合器,再点击 创建聚合器
-
- 勾上允许 AWS Config 将数据从源账户复制到聚合器账户,输入聚合器名称,选择添加我们的组织,选择想要聚合区域,点击创建聚合器
-
- 这样我们一个聚合器就创建完成了,等待一段时间后(大概10分钟)
-
- 查询所有账号下的资源
-
- 查看所有账号下的EC2 Instances
-
- 查看所有账号下的RDS Instances
在本篇博客中介绍了在AWS上如何快速为每个游戏单独创建账户并组织这些账户;如何集中式的用户管理与权限分配;如何方便的查看、管理多账户下的资源等挑战,在下一篇博客中将进一步介绍多账号下的安全合规、资源合规、成本等内容。