Amazon GameLift Servers 的安全最佳实践 - Amazon GameLift Servers
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon GameLift Servers 的安全最佳实践

如果您将 Amazon GameLift Servers FleetIQ 作为独立功能与 Amazon EC2 搭配使用,请参阅《Amazon EC2 用户指南》中的 Amazon EC2 中的安全性

Amazon GameLift Servers 提供了在您开发和实施自己的安全策略时需要考虑的大量安全功能。以下最佳实操是一般准则,并不代表完整的安全解决方案。这些最佳实操可能不适合您的环境或不满足您的环境要求,请将其视为有用的考虑因素而不是惯例。

确保实例集运行时环境保持最新状态

Amazon GameLift Servers 强烈建议您定期更换托管的实例集(包括托管 EC2 和托管的容器实例集),以维护游戏服务器的安全运行时环境。长时间运行而未更新运行时的实例集可能包含过时的依赖项和安全漏洞,这些漏洞可能会危及您的游戏服务器。有关部署到 Amazon GameLift Servers 实例集的软件责任共担详情,请参阅 Amazon GameLift Servers 中的配置和漏洞分析

托管实例集的运行时环境由其亚马逊机器映像(AMI)版本决定。创建新实例集时,Amazon GameLift Servers 会将最新的可用 AMI 版本分配给该实例集,并且该实例集内的所有计算实例都将使用该版本进行部署。要更新 AMI 版本,必须创建新的实例集。有关当前 AMI 版本的详细信息,请参阅 Amazon GameLift Servers AMI 版本

建议实操:

  • 监控实例集使用期限并更换超过 30 天的实例集 – 您可以在 Amazon GameLift Servers 控制台中跟踪实例集的创建日期,或使用 CLI 检索实例集属性。Amazon GameLift Servers 会在控制台中针对超过 90 天的实例集显示警告,并通过电子邮件通知账户持有人其实例集使用期限已超过一年。

    注意

    更新实例集(例如使用 UpdateFleetAttributesUpdateContainerFleet)不会更改 AMI 版本。您必须创建新的实例集。

  • 根据安全状况定期更换实例集 – 制定定期计划,以创建新实例集并停用旧实例集。可以考虑使用 Amazon Q 这样的服务,查看当前的 AMI 版本的游戏代码,检测安全问题并提出补救措施建议。

  • 在部署之前,使用最新 AMI 版本测试服务器生成包 – 在创建新实例集之前,您可能需要修改服务器生成包,并将其上传到 Amazon GameLift Servers。

  • 管理 Amazon 账户的实例集配额 – 如果需要,您可以申请提高限额,以创建替换实例集。有关更多信息,请参阅 Amazon GameLift Servers 端点和限额

  • 考虑自动更换实例集 – 您可以自动创建新实例集,和从旧实例集迁移玩家流量。例如:

    • 使用 Amazon CloudFormation 自动化实例集的创建和管理。将您的实例集配置作为 Amazon CloudFormation 模板进行维护,并使用它们来启动资源堆栈。

    • 利用 Amazon GameLift Servers 别名特征抽象化特定的实例集 ID。实例集别名可以轻松地将玩家流量从现有实例集转移到新实例集,而不会中断正在进行的游戏会话。有关更多信息,请参阅 使用别名抽象化 Amazon GameLift Servers 实例集名称

    • 使用蓝绿部署策略降低迁移风险,并使停机时间保持为零。利用两个相同的生产环境,您可以在类似生产的环境中进行全面测试,更好地控制迁移过程,并确保即时回滚。

保护您的端口配置

我们强烈建议不要开放到互联网的端口,因为这样做会带来安全风险。例如,以下配置会打开远程桌面端口,允许互联网上的任何人访问该实例:

{ "FleetId": "<fleet identifier>", "InboundPermissionAuthorizations": [ { "FromPort": 3389, "IpRange": "0.0.0.0/0", "Protocol": "RDP", "ToPort": 3389 } ] }

相反,您应该使用 UpdateFleetPortSettings 为特定的 IP 地址或地址范围开放端口,如下例所示:

{ "FleetId": "<fleet identifier>", "InboundPermissionAuthorizations": [ { "FromPort": 3389, "IpRange": "54.186.139.221/32", "Protocol": "TCP", "ToPort": 3389 } ] }

其他安全资源

有关如何更安全地使用 Amazon GameLift Servers 的更多信息,请参阅 Amazon Well-Architected Tool 安全性支柱