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

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon GameLift Servers 的安全最佳实践

如果您将亚马逊Amazon GameLift ServersFleetIQ作为独立功能使用 EC2,请参阅《亚马逊 EC2 用户指南》 EC2中的 “亚马逊安全”。

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

使舰队运行时环境保持最新

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

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

推荐的做法:

  • 监控车队年龄并更换已超过 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别名功能来抽象特定的舰队 IDs。舰队别名可以轻松地将玩家流量从现有舰队切换到新舰队,而不会中断正在进行的游戏会话。有关更多信息,请参阅 摘要 Amazon GameLift Servers 使用别名的舰队名称

    • 使用 blue/green 部署策略来降低迁移风险并保持零停机时间。在两个相同的生产环境中,您可以利用类似于生产的完整测试环境,更好地控制迁移过程,并确保即时回滚。

保护您的端口配置

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

{ "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 安全支柱。