在 XBOX Live 上隔离内容
在 XBOX Live 中,只有一个生产环境,其中包含所有预发布(开发中和 beta)、认证和零售内容。 内容隔离是确保生产环境中没有发布者内容泄漏的方法。内容隔离的核心是确保任何请求访问资源(标题或服务)权限的主体用户、设备或标题都已获得访问该资源的授权。使用内容隔离,分区被分成沙盒,其中存储着标题或服务数据;授权策略在沙盒范围内定义。 沙盒是一种对生产环境中的数据进行分区的方式。- 使用 XBOX 360 时代的服务,PartnerNet 和 ProductionNet 是两个截然不同的环境。
- 使用 XBOX One(或更高版本)服务,单个生产环境包含 n 个不同的虚拟环境,其中每个虚拟环境称为沙盒。

标题的初始设置
标题在 Partner Center 诞生。为标题分配了 title ID、product ID 和服务配置 ID (SCID)。 标题或产品本身对 XBOX Live 没有任何意义。为了支持单个标题同时在零售和开发中使用,Partner Center 支持标题的实例化,以便进行和维护必要的区分。标题的实例驻留在沙盒中,这就是沙盒的用武之地。 为了在 Partner Center 创建标题,发布者创建产品组,为产品组指定类型,然后在其中创建单个产品。 图 2. 产品组、产品、产品实例和沙盒之间的关系。
产品实例
产品实例是特定沙盒中标题、产品和配置数据的投影。此数据在以下三个方面描述:服务配置、目录元数据和二进制文件。服务配置
服务配置定义(事件、统计信息、成就等)。服务配置在产品实例级别定义。目录元数据
存在于目录中的元数据,包括销售文本、艺术资产、可用性/优惠信息、许可数据等。二进制文件
二进制文件可以以下两种方式之一表示:- 仅元数据以启用旁加载。这包括内容 ID、版本信息和许可信息。
- 传播到 CDN 并可供客户端下载的完整二进制文件。
获得正确的访问权限
在 XBOX One(或更高版本)中,对你内容的访问有两种不同的类型: 设计时访问——通过 Partner Center 从 PC 访问 - 允许在你产品上工作的人员上传、组织和使用内容、配置和元数据,但不允许他们运行或播放你产品的实例。 运行时访问——从 XBOX 主机访问 - 允许你的开发人员、测试人员、审阅者,最终允许你的客户运行和玩产品实例。为了可用于运行时访问,产品实例必须放置在沙盒中。一旦构建放置在沙盒中,已被授予该沙盒访问权限的 Partner Center 用户或开发工具包设备就可以运行该实例。为此,他们通过 XBOX 主机登录到 Partner Center,使用他们的开发人员帐户之一——用作运行时访问的虚拟用户的特殊帐户。
- 主体组可以包含 XBOX 用户 ID (XUID)、设备 ID、title ID 或 service ID。
- 沙盒可以包含 title ID、product ID 或 service config ID (SCID)。
- 授予主体组对沙盒的访问权限。

- 创建你的 Partner Center 用户帐户、每个用户将用于运行时访问登录的开发人员帐户,以及每个用户被授予成员资格的用户组。
- 创建受信任主机的设备组。
- 为你的每个开发沙盒精确指定哪些用户组和设备组可以访问其中的产品实例。

开发人员帐户设置
XBOX One(或更高版本)中的开发人员帐户只是应用了特殊规则的标准 Microsoft 帐户 (MSA)。开发人员帐户在 XBOX Live 中用于开发。 开发人员帐户:- 必须在 Partner Center 创建。
- 在发布者创建时被分配外部开发人员角色。
- 绑定到创建该开发人员帐户的 Partner Center 帐户。
- 只能登录到开发工具包。开发人员帐户在零售设备上被拒绝登录。
- 可以购买 XBOX Live 开发人员金牌订阅或其他订阅以进行免费测试。
用户组设置
用户组是主体组的第一种类型,是 Partner Center 用户的集合。当 Partner Center 用户被添加到用户组时,他们的开发人员帐户也随这些 Partner Center 用户一起流转。 因此,当用户组被分配到沙盒时,与该用户组中的 Partner Center 用户关联的开发人员帐户将被添加到相应的主体组,并且主体组将获得支持沙盒的主要资源集的策略设置。创建的用于访问沙盒的用户组与用于阻止访问 Partner Center 中产品组和产品的配置数据的用户组是同一个用户组。
设备设置
设备也会被添加到主体组。只有通过 Game Developer Store 购买了权益并配置为开发工具包后,设备才可以用作开发工具包。 一旦设备被配置为开发工具包,该设备就会出现在可以添加到设备组的设备列表中。设备组设置
设备组是主体组的第二种类型,也可以被授予对沙盒的访问权限。设置类似于上面详述的用户组设置。沙盒
什么是沙盒?
简而言之,沙盒是在生产环境中对数据进行分区的一种方式。为什么需要沙盒?
正如用户和设备访问标题一样,标题访问服务。我们引入”标题组”的概念,其中标题集被授予对服务资源的访问权限。 对于 XBOX One(或更高版本),所有内容(无论是预发布还是零售)都有一个单一的生产环境。因此,必须防止标题的多个实例(预发布/零售)在相同的资源实例上操作。沙盒中有什么?
沙盒包含添加到沙盒中的每个标题的产品实例。什么是沙盒 ID?
沙盒 ID 是标题、产品或服务配置的数据分区单位。多个标题可以存在于同一沙盒中,这是它们共享任何服务配置数据的先决条件。 沙盒 ID(区分大小写)是以下格式的字符串:<PublisherMoniker>.n。 下面解释了一个示例沙盒 ID XLDP.5:- 发布者名称在所有发布者中是唯一的。因此,“XLPD”是这个特定发布者的发布者名称。发布者名称是在 Partner Center 中由开发人员客户经理”激活”发布者时创建的。
- 数字 “n” 标识沙盒的编号。在本例中,“5”是为该发布者创建的第六个沙盒。
什么数据被沙盒化?
下图显示了哪些用户和标题数据是沙盒化的。
全局覆盖沙盒
开发人员在开发工具包上设置沙盒 ID,从而设置开发工具包运行所在的沙盒;这也称为全局覆盖沙盒。因此,从开发工具包中的标题(shell 应用程序和常规应用程序)向 XBOX Live 服务(例如成就、匹配、许可、EDS 等)发出的所有请求都在该沙盒中进行。 全局覆盖沙盒还意味着在浏览时只有在全局覆盖沙盒中摄取的内容才可见。沙盒类型
有两种不同类别的沙盒。这些类别的定义如下:- 发布者沙盒。发布者可以访问他们的开发中沙盒。这些可能类似于 XLDP.0、XLDP.1、XLDP.2、XLDP.3 等。这是发布者放置其标题产品实例的地方。对这些沙盒的访问受限于发布者授予访问权限的用户/设备。
- Microsoft 沙盒。这些是内置沙盒:RETAIL 和 CERT。只有 Microsoft 被允许发布到这些受保护的沙盒。
CERT 沙盒
当标题准备好正式发布时,它需要首先经过认证。CERT 沙盒是由 Microsoft 控制的沙盒,只有认证部门的人员才能访问。发布者可以看到他们拥有的哪些内容正在经过认证。 任何在认证期间失败的产品实例都可以被带回开发沙盒,由发布者使用 Partner Center 进行调试和修复。RETAIL 沙盒
RETAIL 沙盒是为 XBOX One(或更高版本)创建的所有内容的最终目的地。 标题通过认证后,将被添加到 RETAIL 沙盒。只允许绿色签名的内容在 RETAIL 沙盒中运行。这有一个重要的含义,即发布者驱动的 beta 也在 RETAIL 沙盒中进行。在 RETAIL 沙盒中生成的数据代表真实的客户生产数据。 对 RETAIL 沙盒中内容的访问仍然可以通过内容隔离进行控制。例如,发布者驱动的 beta 在 RETAIL 沙盒中运行,发布者选择哪些主体组可以访问发布者定义的 beta 资源集标题。beta 标题生成的服务数据是真实的 prod(生产)数据,在标题正式发布后继续存在。跨沙盒数据交互
按照定义,沙盒是一个限制数据共享的容器。因此,跨沙盒数据交互是不可能的。组织你的沙盒
本节提供了发布者如何组织沙盒的示例。发布者需要了解如何使用沙盒来组织数据。 以下示例仅显示了使用内容隔离的运行时访问管理。场景 1:两个标题,一个沙盒
发布者的基本结构可以是:- 两个标题,可由发布者拥有的所有用户和设备在设计时和运行时访问。
- 每个标题一个产品实例。

场景 2:一个标题,不同团队
在此模型中,要求是:- 一个标题。
- 开发团队处理每日构建。
- QA 团队处理每周 LKG。
- 开发团队在出现 bug 时需要调试每周 LKG。
- 财务团队需要访问与标题目录发布相关的价格卡和其他元数据。
无论如何组织,Partner Center 用户都可以属于多个用户组。

场景 3:两个标题,完全分开
在此示例中,要求略有变化:- 两个标题。
- 对每个标题的访问应限于一组特定个人。
- 每个标题一个产品实例。
- 需要访问标题的设计时 Partner Center 配置数据的管理员用户组。此组中的个人都是发布者的管理员,可以控制发布到目录的所有数据(目录元数据、财务、营销、认证提交等)

场景 4:随你所愿
由于连接数量众多且为了保持文字简短,我们选择只显示沙盒运行时连接。没有什么阻止你添加其他设计时访问权限。 在此示例中,要求是:- 只有某些人可以访问其发布者内的某些标题。
- 发布者与来自不同公司的供应商合作,这些供应商可能是短期的。
- 发布者应能够停用标题,并通过这样做防止访问供应商或 FTE 曾经访问的任何数据。
- TitleX 和 TitleY 在沙盒 XLDP.1 中各有一个产品实例。
- TitleZ 有两个产品实例,一个在沙盒 XLDP.2 中,另一个在沙盒 XLDP.3 中。
- FTE 用户组 B 被授予对所有沙盒中的产品实例的访问权限。
- 供应商用户组 A 是仅供应商用户组,被授予对沙盒 XLDP.1 的访问权限。
- 供应商设备组 C 是仅供应商用户组,被授予对沙盒 XLDP.3 的访问权限。

