View a markdown version of this page

Amazon GameLift Streams 中的数据保护 - 亚马逊 GameLift 直播

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

Amazon GameLift Streams 中的数据保护

AWS 分担责任模式分适用于 Amazon GameLift Streams 中的数据保护。如本模型所述 AWS ,负责保护运行所有网络的全球基础设施 AWS Cloud。您负责维护对托管在此基础结构上的内容的控制。您还负责您所使用的 AWS 服务 的安全配置和管理任务。有关数据隐私的更多信息,请参阅数据隐私常见问题有关欧洲数据保护的信息,请参阅通用数据保护条例(GDPR)中心

出于数据保护的目的,我们建议您保护 AWS 账户 证书并使用 AWS IAM Identity Center 或 AWS Identity and Access Management (IAM) 设置个人用户。这样,每个用户只获得履行其工作职责所需的权限。还建议您通过以下方式保护数据:

  • 对每个账户使用多重身份验证(MFA)。

  • 用于 SSL/TLS 与 AWS 资源通信。我们要求使用 TLS 1.2,建议使用 TLS 1.3。

  • 使用设置 API 和用户活动日志 AWS CloudTrail。有关使用 CloudTrail 跟踪捕获 AWS 活动的信息,请参阅AWS CloudTrail 用户指南中的使用跟 CloudTrail 踪

  • 使用 AWS 加密解决方案以及其中的所有默认安全控件 AWS 服务。

  • 使用高级托管安全服务(例如 Amazon Macie),它有助于发现和保护存储在 Amazon S3 中的敏感数据。

  • 如果在 AWS 通过命令行接口或 API 进行访问时需要经过 FIPS 140-3 验证的加密模块,请使用 FIPS 终端节点。有关可用的 FIPS 端点的更多信息,请参阅《美国联邦信息处理标准(FIPS)第 140-3 版》https://aws.amazon.com/compliance/fips/

强烈建议您切勿将机密信息或敏感信息(如您客户的电子邮件地址)放入标签或自由格式文本字段(如名称字段)。这包括当您使用控制台、API 或 AWS 软件开发工具包 AWS 服务 使用 Amazon GameLift Streams 或其他内容时。 AWS CLI在用于名称的标签或自由格式文本字段中输入的任何数据都可能会用于计费或诊断日志。如果您向外部服务器提供 URL,强烈建议您不要在网址中包含凭证信息来验证对该服务器的请求。

Amazon GameLift Streams 按以下方式处理特定服务的数据:

  • Customer-supplied 应用程序 — 如果提供,Amazon GameLift Streams 将客户数据存储在内部服务管理的 Amazon S3 存储桶中,以及连接到亚马逊 EC2 实例的 NVME 存储驱动器上。所有数据均以服务管理的静态加密方式存储。客户无法直接访问该数据副本。要删除应用程序,请使用 Amazon GameLift Streams 控制台或服务 API。

  • Customer-supplied 元数据 — 客户可以向 Amazon GameLift Streams API 提供元数据,包括描述、连接信息和不透明的标识符,例如客户 ID。此元数据始终与特定的客户资源相关联。

  • Customer-generated 数据 — 如果应用程序写入新数据作为其正常操作的一部分,则这些客户生成的数据将保留到用户会话结束。会话结束时,可以选择将生成的数据导出到客户选择的 Amazon S3 存储桶目的地。 Customer-generated 否则,数据不会离开生成数据的 Amazon EC2 实例。有关数据处理的更多信息,请参阅会话隔离主题

  • 指标和事件数据 — Amazon GameLift Streams 指标和事件数据,可通过 Amazon GameLift Streams 控制台或调用服务 API 进行访问。数据可在应用程序、流组和流会话中获得。授权用户还可以通过亚马逊 CloudWatch 和 CloudWatch 活动访问这些数据。

  • 会话证书 — 当您提供 IAM 角色 ARN 时StartStreamSession,Amazon GameLift Streams 将代入该角色并为应用程序提供短期临时证书。在会话期间,Amazon GameLift Streams 仅将证书存储在流媒体实例的内存中。Amazon GameLift Streams 从不将凭证写入磁盘,从不将其包含在服务日志中,也从不在 API 响应中返回。会话结束后,Amazon GameLift Streams 会从内存中清除证书。Amazon GameLift Streams 仅将角色 ARN(资源标识符,不是证书)存储在服务数据库中,但须遵守现有的会话记录保留政策。

  • 直播网址 — 直播网址授予临时的、未经身份验证的访问权限以启动直播会话。直播网址嵌入了不记名令牌,因此任何拥有完整网址的人都可以启动会话,直到直播网址过期、被撤销或达到其使用限制。Amazon GameLift Streams 不要求最终用户在激活直播网址时出示 AWS 凭证。将完整直播网址视为凭证:仅通过可信渠道分发,为其设定最短的可行到期时间和使用限制,并在不再需要时将其撤销。有关更多信息,请参阅Amazon GameLift Streams 的安全最佳实践使用直播 URL 共享直播会话

重要

如果您向 Amazon GameLift Streams 提供客户 ID 或其他标识符,则预计这些值是匿名引用,不包含任何敏感或个人信息。Amazon GameLift Streams 不会编辑任何元数据字段。

有关数据保护的更多信息,请参阅《AWS 安全性博客》上的 AWS 责任共担模式和 GDPR 博客文章。

静态加密

At-rest 亚马逊 GameLift Streams-specific 数据的加密处理方式如下:

  • 应用程序内容存储在服务管理的加密 Amazon S3 存储桶中,此外还存储在连接到服务管理的 Amazon EC2 实例的硬件加密 NVME 驱动器上。

传输中加密

对 Amazon GameLift Streams API 的调用通过安全 (SSL) 连接进行,并使用AWS 签名版本 4 进行身份验证(通过 AWS CLI 或 AWS SDK 进行连接时,会自动处理签名)。调用实体使用安全证书,这些证书通过应用为 Amazon GameLift Streams 资源定义的 IAM 访问策略进行身份验证。

在多位置流组的背景下,为了从流组中已分配流容量的任意位置流式传输应用程序,Amazon Stre GameLift ams 会安全地将应用程序复制到这些位置。

同样,Amazon GameLift Streams 会根据请求在会话结束时将日志数据和会话文件保存到客户命名的 Amazon S3 存储桶中。如果存储桶与会话不在同一位置,Amazon GameLift Streams 会将文件安全地传输到存储桶所在的位置。 AWS 区域

配置会话凭证后,Amazon GameLift Streams 通过 TLS-encrypted 连接从 AWS STS 获取证书。您的应用程序在会话的隔离环境中安全地接收证书。

保护最终用户流

个人最终用户流是终端用户的网络浏览器与 Amazon GameLift Streams 后端主机之间的直接连接。这些数据流受行业标准的WebRTC加密保护,并且流的两个端点都由加密标识符进行明确标识,这些标识符是通过流会话API协商的SignalRequestSignalResponse值的一部分。

用于数据流的 WebRTC 加密也涵盖了数据信道消息。这些消息由 Amazon GameLift Streams 解密,并通过未加密的 API 在本地主机上传递到客户的应用程序。如果需要端到端加密,即使是 Amazon GameLift Streams 服务也无法解密,则此额外的加密层由应用程序开发人员负责。

Linux 流类中的会话隔离

在 Linux 流类(Ubuntu 和 Proton 运行时)上,Amazon GameLift Streams 使用容器隔离。每个会话都在一个新的 Linux 容器中运行,该容器在使用后将被丢弃。这意味着每个新会话都在新的环境中运行,与共享计算资源的其他用户隔离(如果在共享资源流类中运行)。新会话启动时,先前会话中不存在任何数据。

Windows 流类中的会话隔离

在 Windows 直播类(微软 Windows 服务器运行时)上,Amazon GameLift Streams 使用软件隔离。该服务依赖软件代理在会话之间重置关键系统状态。一些文件夹会在多个会话中保留,以实现性能优化,例如主机磁盘缓存。软件代理会自动删除在上一次直播会话期间在用户配置文件目录中生成的任何文件。但是,该代理不会删除在应用程序运行之前存在的任何文件,也不会删除在应用程序运行期间修改过的任何文件。它也不会删除应用程序添加的任何 Windows 注册表项。必须避免损坏整个操作系统的完整性。应用程序以管理员用户身份执行,管理员用户可以允许修改重要的系统级文件,包括在多个会话中持续进行的更改。您有责任保护您的应用程序并防止对操作系统进行不安全或不稳定的修改。

应用程序启动时,你有责任清理那些修改过的文件和以前会话中添加的注册表项。这是保护应用程序写入用户配置文件目录的机密或敏感信息的重要步骤。为此,您可以编写一个执行以下操作的自定义脚本:

  • 恢复该%USERPROFILE%目录之外由应用程序修改的所有文件。

  • 清理应用程序添加的所有敏感或特定于用户的注册表项。

加密密钥管理

该服务使用 AWS 托管密钥进行加密。每个区域使用单独的 KMS 密钥。不支持客户管理的密钥。

提供给 Amazon GameLift Streams 的应用程序文件无法重新发布或从该服务中导出。您可以使用服务控制台或 API 来删除应用程序。通过删除关联的流组,可以完全清除以前保存这些应用程序文件的驱动器。

Inter-network 交通隐私

Amazon GameLift Streams 使用面向公众的网络来托管直播会话。每个流组由一个或多个服务管理的 VPC 网络组成,这些网络与其他流组和其他客户隔离。除经过身份验证的服务代理的 WebRTC 流连接外,入站网络连接会被拒绝。您的应用程序可以不受限制地从这些 VPC 连接到其他公有地址。

默认情况下,您的应用程序数据不可公开访问。管理 API 调用需要 AWS经过身份验证的证书,您可以将 Amazon GameLift Streams 集成到自己的客户端 Web 应用程序中,该应用程序通过身份验证调用来启动和显示流。

Amazon GameLift Streams 还提供直播网址,这是一种经过深思熟虑的机制,用于授予启动直播会话的临时、未经身份验证的访问权限。创建直播 URL 时,您有意允许任何拥有该直播 URL 的人在支持的 Web 浏览器中启动会话,无需 AWS 凭据,也无需构建自己的客户端。由于直播网址本身就是凭证,因此将每个直播网址视为持有者凭证,并相应地控制其分发、过期时间和使用限制。直播网址是唯一支持在没有经过身份验证的客户端的情况下公开访问直播的方式;所有其他服务交互仍然需要 AWS经过身份验证的 API 调用。有关更多信息,请参阅使用直播 URL 共享直播会话Amazon GameLift Streams 的安全最佳实践