游戏行业的公司,通常是多个工作室都会使用云资源进行游戏开发。使用云计算可能通过控制台直接操作,也有可能是应用程序通过OpenAPI访问资源。
大型游戏公司使用的云资源数量庞大、资源使用人员分散、业务在线系统复杂多样,需要确保各个场景都能安全访问云资源才能保障线上游戏系统的稳定运行,这其中面临了不少的挑战,例如:
不同游戏项目员工存在离职或调转,需要确保在职员工无法操作所属项目外的资源,而离职员工无法继续访问到云资源;
公司内部云管平台可以访问火山各类云资源,访问权限较大,需要降低凭证泄漏的风险;
拥有权限的员工较多,对于不规范的运维操作,需要及时发现并及时治理。
火山引擎上提供了事前管控、事中验证、事后追溯的安全管控方案。
事前:对用户和工作负载身份类型进行区分,并使用最小化权限策略进行授权,最大化降低越权风险。
事中:开启多因子认证,并通过IP认证,确保敏感操作在可靠环境、可靠身份进行操作。
事后:定期实现操作的审计,对异常事件及时追踪。
火山引擎访问控制(IAM)为客户提供了一套多身份权限管理系统。云服务的使用场景中,可分为员工身份和工作负载身份两类。员工身份对应使用通过浏览器登录控制台,进行日常的运维工作;工作负载身份通常对应一个系统应用或后端服务,使用OpenAPI访问火山引擎。无论哪种身份访问火山引擎,都需要通过IAM鉴权,仅能够访问被授予权限的资源。
为不同的员工、内部云管平台以及游戏应用创建独立IAM用户,并严格限制使用方式:
限制员工用户仅能登录控制台,在权限上限制创建和管理API访问密钥;
工作负载用户,授予所需资源访问权限之后,同时设置仅能持有密钥使用API,而无法登录控制台。
这种身份的区分,隔离了运维员工和在线系统间的影响,保障了登录凭证或密钥凭证发生泄露时不会相互蔓延风险。
火山引擎访问控制(IAM)支持精细化定义云资源访问策略,简单来说就是规定哪些人可以做哪些事,避免越权访问。火山引擎支持了基于策略(Policy)的权限管理体系,用于实现精细化的权限管理体系。策略可以理解为用JSON描述的一组规则,定义了谁可以做什么事情。为了理解规则如何定义,首先要理解几个权限体系中的概念:
身份主体(Principal):指权限被授予的对象,通常是用户、用户组或角色。代表一个用户,也可以是一个系统应用。
操作(Action):指权限授予的操作,比如服务器的开通,账单的下载等等。
效果(Effect):指允许或者禁止某些操作。
资源(Resource):指火山引擎上所有需要授权的资源,可以定位到不同颗粒度的资源描述。比如某台云服务器实例、EIP、某个镜像等等。使用资源可以将权限规则限制在某个具体的资源实例。
条件(Condition):为了实现更精细化和灵活的规则定义,可以在规则中设置条件语句,限定权限生效的范围
访问策略将上述几个要素通过JSON实现描述,不仅仅定义了谁可以进行什么操作,还可将权限限定到具体的资源,或者是通过用户和资源上的一些属性来动态的控制权限范围。
使用访问策略,实现对不同身份最小化分配操作和资源权限:
火山引擎访问控制(IAM)提供了多因素认证的能力,可以在用户进行敏感操作时,进行二次身份验证以确保每次运维为本人操作。火山引擎支持使用手机、邮箱,或TOTP动态码进行验证,同时也支持了体验和安全性更好的FIDO2.0协议,使用指纹、刷脸或者硬件密钥的方式进行身份验证。
对于工作负载访问,IAM策略支持定义属性级别的权限控制,客户可以按访问源IP定义权限,从而限制发起访问的网络环境。该功能支持公网地址和内网地址(支持IP v4和IP v6),用户既可以按具体的IP地址配置,也可以按网段配置,能满足不同访问环境的管控需求。
在不同用户实际发起对云资源的访问时,为了确保请求环境的安全可信(例如访问凭证没有被泄露至外部环境中),使用了IAM的MFA认证和源IP认证能力。当员工密码泄露或电脑丢失时,即使攻击者能够使用员工账号,也无法通过MFA验证,无法进行敏感操作。而API调用的Access Key发生泄露时,业务无法从指定IP环境之外的网络环境中发起请求,从而遏制了安全事件的事中风险。
火山引擎云审计(CloudTrail)可以记录账号内不同身份对云资源的访问行为,从而满足敏感行为审计和监管合规的要求。
推荐对云资源的管控设置严格的标准,因为通过事前事中的防控,仍然无法100%杜绝某些预期外的行为,例如不规范的操作、误操作或是恶意操作。因此,需要安全管控团队定期审计账号内访问记录,包括
以用户维度,审计员工的访问历史,确保在可信的时间执行了预期内的操作;
以Access Key Id维度,审计工作负载用户的访问历史,确保在可信的源IP中执行了预期内的操作。
同时借助云审计的跟踪功能,将日志转存在日志服务中,借助日志服务(TLS)的能力及时发现及追溯问题:
配置告警规则,将异常的源IP、异常时间段、异常的敏感操作进行监控并向管理员发送告警通知,方便及时发现风险;
配置安全看板,将重要身份的敏感操作可视化呈现,定期生成报表,分析合理性。
基于事前、事中、事后的全方面管控,确保云上资源的安全合规,帮助线上游戏业务稳定运行。上述方案中,使用了火山引擎提供的如下功能:
序号 | 业务功能 | 产品 | 使用的功能 | 方案价值 |
---|---|---|---|---|
1 | 为员工和工作负载创建身份 | 访问控制 | 统一管控不同访问身份,限制使用方式,收敛风险 | |
2 | 使用项目划分资源 | 资源管理 | 将资源进行分类管理,提高管理效率,也便于基于项目进一步分权、分账 | |
3 | 基于项目进行授权 | 访问控制 | 基于游戏项目进行权限划分,隔离员工权限,避免越权风险 | |
4 | 自定义细粒度权限 | 访问控制 | 最小化定义工作负载权限,保障访问安全可控 | |
5 | 多因子认证 | 访问控制 | MFA验证 | 保障员工运维操作的安全性,避免外部恶意行为 |
6 | 源IP认证 | 访问控制 | 源IP条件策略 | 避免访问凭证泄露导致云资源被恶意操作 |
7 | 操作记录追溯 | 云审计 | 审计事件查询及转存 | 追溯不规范行为,及时进行治理,提升运维规范性 |