

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

# Amazon GameLift Servers 的安全最佳实践
<a name="security-best-practices"></a>

如果您将 Amazon GameLift Servers FleetIQ 作为独立功能与 Amazon EC2 搭配使用，请参阅《Amazon EC2 用户指南》**中的 [Amazon EC2 中的安全性](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security.html)。

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

## 确保实例集运行时环境保持最新状态
<a name="security-best-practices-fleetupdates"></a>

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

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

建议实操：
+ **监控实例集使用期限并更换超过 30 天的实例集** – 您可以在 Amazon GameLift Servers 控制台中跟踪实例集的创建日期，或使用 CLI 检索实例集属性。Amazon GameLift Servers 会在控制台中针对超过 90 天的实例集显示警告，并通过电子邮件通知账户持有人其实例集使用期限已超过一年。
**注意**  
更新队列（例如使用[UpdateFleetAttributes](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_UpdateFleetAttributes.html)或 [UpdateContainerFleet](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_UpdateContainerFleet.html)）不会更改 AMI 版本。您必须创建新的实例集。
+ **根据安全状况定期更换实例集** – 制定定期计划，以创建新实例集并停用旧实例集。可以考虑使用 [Amazon Q](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/code-reviews.html) 这样的服务，查看当前的 AMI 版本的游戏代码，检测安全问题并提出补救措施建议。
+ **在部署之前，使用最新 AMI 版本测试服务器生成包** – 在创建新实例集之前，您可能需要修改服务器生成包，并将其上传到 Amazon GameLift Servers。
+ **管理 AWS 账户的车队配额**-如果需要，您可以申请提高限额以创建替换车队。有关更多信息，请参阅 [Amazon GameLift Servers 端点和限额](limits-regions.md)。
+ **考虑自动更换实例集** – 您可以自动创建新实例集，和从旧实例集迁移玩家流量。例如：
  +  AWS CloudFormation 用于自动创建和管理车队。将您的队列配置作为 CloudFormation 模板进行维护，并使用它们来启动资源堆栈。
  + 利用Amazon GameLift Servers别名功能来抽象特定的舰队 IDs。实例集别名可以轻松地将玩家流量从现有实例集转移到新实例集，而不会中断正在进行的游戏会话。有关更多信息，请参阅 [使用别名抽象化 Amazon GameLift Servers 实例集名称](aliases-intro.md)。
  + 使用 blue/green 部署策略来降低迁移风险并保持零停机时间。利用两个相同的生产环境，您可以在类似生产的环境中进行全面测试，更好地控制迁移过程，并确保即时回滚。

## 保护您的端口配置
<a name="security-best-practices-ports"></a>

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

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

 而是使用[UpdateFleetPortSettings](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_UpdateFleetPortSettings.html)打开具有特定 IP 地址或地址范围的端口，如以下示例所示：

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

## 其他安全资源
<a name="security-best-practices-resources"></a>

有关如何更安全地使用 Amazon GameLift Servers 的更多信息，请参阅 [AWS Well-Architected Tool 安全性支柱](https://wa.aws.amazon.com/wat.pillar.security.en.html)。