메인 콘텐츠로 건너뛰기
XBOX services 샌드박스 개요도 참조하세요. XBOX Live 샌드박스는 개발을 위한 완전한 프라이빗 환경을 제공합니다. 이 문서에서는 샌드박스가 무엇인지, 왜 존재하는지, 게시자에게 어떻게 적용되는지, 내부 XBOX 팀에 어떤 영향을 미치는지 설명합니다. 이 문서의 대상은 XBOX One(또는 이후) 콘텐츠를 개발하고 샌드박스를 사용하는 게시자입니다. XBOX Live 개발은 프로덕션 품질의 서비스와 프로덕션 MSA 개발자 계정을 사용하여 프로덕션에서 테스트할 수 있는 엄청난 기회를 게시자에게 제공합니다. 기능 및 유연성이 증가하면 개발 중이거나 정식 출시 상태에서 타이틀 데이터를 만들고 타이틀 액세스를 관리하기 위해 Partner Center에서 구성 단계가 필요합니다. 샌드박스는 프로덕션의 데이터를 분할하는 방법입니다. 모든 콘텐츠에 대해 단일 프로덕션 환경이 있기 때문에 샌드박스는 한 환경에서 생성된 데이터가 다른 환경으로 넘어가지 않는 “가상 환경” 역할을 합니다.

XBOX Live에서 콘텐츠 격리

XBOX Live에는 모든 사전 출시(개발 중 및 베타), 인증 및 소매 콘텐츠가 있는 단일 프로덕션 환경만 있습니다. 콘텐츠 격리는 프로덕션에서 게시자 콘텐츠 유출이 없도록 하는 방법입니다. 핵심적으로 콘텐츠 격리는 리소스(타이틀 또는 서비스)에 액세스할 권한을 요청하는 주체 사용자, 디바이스 또는 타이틀이 리소스에 액세스할 권한이 있는지 확인합니다. 콘텐츠 격리를 사용하면 파티션은 타이틀 또는 서비스 데이터가 저장되는 샌드박스로 나뉘며, 권한 부여 정책은 샌드박스 범위 내에서 정의됩니다. 샌드박스는 프로덕션에 있는 데이터를 분할하는 방법입니다.
  • XBOX 360 시대의 서비스에서는 PartnerNet과 ProductionNet이 두 개의 뚜렷한 환경입니다.
  • XBOX One(또는 이후) 서비스에서는 단일 프로덕션 환경에 n개의 뚜렷한 가상 환경이 포함되며, 각 가상 환경을 샌드박스라고 합니다.
모든 콘텐츠에 대해 단일 프로덕션 환경이 있으므로 샌드박스는 실제로 한 환경에서 생성된 데이터가 다른 환경으로 넘어갈 수 없는 고유한 가상 환경입니다. 다음 그림은 게시자가 프라이빗 개발 샌드박스를 만들 수 있는 단일 프로덕션 환경을 보여줍니다. 승인된 개발 계정 또는 개발 키트만 이러한 샌드박스에 액세스할 수 있습니다. 그림 1. 프로덕션 환경의 샌드박스. 샌드박스 구조 및 액세스 다이어그램 PublisherA가 개발 샌드박스를 가지고 있는 것처럼 다른 게시자도 자체 개발 샌드박스를 가지고 있습니다. 동일한 타이틀 ID가 서로 다른 샌드박스에 존재할 수 있지만 타이틀 ID에 대해 생성된 데이터는 샌드박스 간에 별개입니다. Microsoft만 채울 수 있는 두 개의 시스템 샌드박스가 있습니다: CERT 및 RETAIL. 이름에서 알 수 있듯이 CERT 샌드박스는 출시 전 인증 중인 타이틀용이고, RETAIL 샌드박스는 모든 소매 사용자와 디바이스에서 액세스할 수 있는 실제 통화를 나타내는 샌드박스입니다. 이전에는 XBOX Live에서 타이틀 ID가 고유했지만 이제는 타이틀 ID와 샌드박스 ID가 함께 고유합니다. 이전에는 고유하게 취급되던 제품 ID 및 기타 ID 공간에도 동일하게 적용됩니다. 이제 샌드박스 ID와 짝을 이루어야 합니다. XBOX Live의 모든 데이터는 시스템 전체에서 주로 샌드박스 ID로 분할됩니다.

타이틀에 대한 초기 설정

타이틀은 Partner Center에서 태어납니다. 타이틀에는 타이틀 ID, 제품 ID 및 서비스 구성 ID(SCID)가 할당됩니다. 타이틀 또는 제품 자체는 XBOX Live에 아무런 의미가 없습니다. 단일 타이틀의 소매 및 개발 사용을 동시에 지원하기 위해 Partner Center는 필요한 구분을 만들고 유지하기 위해 타이틀의 인스턴싱을 지원합니다. 타이틀의 인스턴스는 샌드박스에 상주하며 여기서 샌드박스가 등장합니다. Partner Center에서 타이틀을 만들려면 게시자는 제품 그룹을 만들고 제품 그룹의 장르를 지정한 다음 그 안에 개별 제품을 만듭니다. 그림 2. 제품 그룹, 제품, 제품 인스턴스 및 샌드박스 간의 관계. 제품 그룹 및 제품 인스턴스 다이어그램

제품 인스턴스

제품 인스턴스는 특정 샌드박스에서 타이틀, 제품 및 구성 데이터의 투영입니다. 이 데이터는 서비스 구성, 카탈로그 메타데이터 및 바이너리라는 세 가지 영역에서 설명됩니다.

서비스 구성

서비스 구성 정의(이벤트, 통계, 도전 과제 등)입니다. 서비스 구성은 제품 인스턴스 수준에서 정의됩니다.

카탈로그 메타데이터

판매 텍스트, 아트 자산, 사용 가능성/제안 정보, 라이선스 데이터 등을 포함하여 카탈로그에 있는 메타데이터입니다.

바이너리

바이너리는 다음 두 가지 방법 중 하나로 표시할 수 있습니다.
  1. 사이드로드를 활성화하는 메타데이터 전용. 여기에는 콘텐츠 ID, 버전 정보 및 라이선스 정보가 포함됩니다.
  2. CDN에 전파되어 클라이언트에 다운로드할 수 있는 전체 바이너리.

올바른 액세스 얻기

XBOX One(또는 이후)의 콘텐츠에 대한 두 가지 뚜렷한 액세스 유형이 있습니다: 디자인 타임 액세스—Partner Center를 통한 PC에서의 액세스 - 제품에서 작업하는 사람들이 콘텐츠, 구성 및 메타데이터를 업로드, 정리 및 작업할 수 있게 하지만 제품의 인스턴스를 실행하거나 플레이할 수는 없습니다. 런타임 액세스—XBOX 콘솔에서의 액세스 - 개발자, 테스터, 검토자 및 결국 고객이 제품 인스턴스를 실행하고 플레이할 수 있게 합니다.
런타임 액세스를 위해 사용할 수 있으려면 제품 인스턴스를 샌드박스에 배치해야 합니다. 빌드가 샌드박스에 배치되면 해당 샌드박스에 액세스 권한이 부여된 Partner Center 사용자 또는 개발 키트 디바이스가 인스턴스를 실행할 수 있습니다. 이렇게 하려면 XBOX 콘솔을 통해 Partner Center에 로그온하고, 런타임 액세스를 위해 가상 사용자로 작동하는 특수 계정인 개발 계정 중 하나를 사용합니다.
샌드박스에 대해 이야기할 때 일반적으로 XBOX Live에서 실행되는 콘텐츠에 대한 런타임 액세스에 대해 이야기하고 있습니다. XBOX Live에서 서비스에 액세스하려면 타이틀 ID가 필요합니다. MicrosoftGame.config에 타이틀 ID가 포함되면 콘솔은 타이틀 ID를 XBOX Live로 보냅니다. XBOX Live 보안 서비스는 주체(디바이스 또는 사용자)가 타이틀에 대한 액세스 권한을 부여받지 않은 경우 유효한 토큰을 반환하지 않습니다. 이 유효성 검사 프로세스는 콘텐츠 격리의 핵심입니다. 매우 높은 수준에서 볼 때:
  • 주체 그룹은 XBOX 사용자 ID(XUID), 디바이스 ID, 타이틀 ID 또는 서비스 ID를 포함할 수 있습니다.
  • 샌드박스는 타이틀 ID, 제품 ID 또는 서비스 구성 ID(SCID)를 포함할 수 있습니다.
  • 주체 그룹에는 샌드박스에 대한 액세스 권한이 부여됩니다.
따라서 사용자 또는 디바이스가 샌드박스에서 사전 출시 타이틀에 액세스하려면 먼저 Partner Center를 통해 액세스 권한을 부여해야 합니다. 그림 3. Partner Center를 통해 액세스를 설정하는 모델 샌드박스 리소스 액세스 다이어그램 콘텐츠 격리의 효과는 조직이 다음 프로세스를 소유한다는 사실을 기반으로 합니다:
  • Partner Center 사용자 계정, 각 사용자가 런타임 액세스를 위해 로그온에 사용할 개발 계정 및 각 사용자에게 멤버십이 부여되는 사용자 그룹 만들기.
  • 신뢰할 수 있는 콘솔의 디바이스 그룹 만들기.
  • 각 개발 샌드박스에 대해 그 안에 있는 제품 인스턴스에 액세스할 수 있는 사용자 그룹과 디바이스 그룹을 정확히 지정.
이 설정의 예는 아래 그림에 나와 있습니다. 그림 4. 승인되지 않은 사용자의 자격 증명은 승인된 Partner Center 사용자 계정의 일반 자격 증명과 마찬가지로 샌드박스에 액세스하지 못합니다. 승인된 Partner Center 사용자 계정이 소유한 개발 계정의 자격 증명만이 샌드박스와 현재 그 안에 있는 모든 제품 인스턴스에 대한 런타임 액세스 권한을 얻는 데 성공합니다. 샌드박스 액세스 예제 다이어그램

개발 계정 설정

XBOX One(또는 이후)의 개발 계정은 특별한 규칙이 적용된 표준 Microsoft 계정(MSA)일 뿐입니다. 개발 계정은 개발을 위해 XBOX Live에서 사용됩니다. 개발 계정:
  • Partner Center에서 만들어야 합니다.
  • 게시자가 만들 때 외부 개발자 역할이 할당됩니다.
  • 개발 계정을 만든 Partner Center 계정에 연결됩니다.
  • 개발 키트에만 로그인할 수 있습니다. 소매 디바이스에서는 개발 계정에 대한 로그인이 거부됩니다.
  • 테스트를 위해 XBOX Live Developer Gold 구독 또는 기타 구독을 무료로 구매할 수 있습니다.

사용자 그룹 설정

첫 번째 종류의 주체 그룹인 사용자 그룹은 Partner Center 사용자의 모음입니다. Partner Center 사용자가 사용자 그룹에 추가되면 해당 개발 계정이 이러한 Partner Center 사용자와 함께 흐릅니다. 따라서 사용자 그룹이 샌드박스에 할당되면 해당 사용자 그룹의 Partner Center 사용자와 연결된 개발 계정이 적절한 주체 그룹에 추가되고 주체 그룹은 샌드박스를 뒷받침하는 기본 리소스 세트로 정책 설정을 얻습니다.
샌드박스에 액세스하기 위해 만들어진 사용자 그룹은 제품 그룹 및 제품에 대해 Partner Center에서 구성 데이터에 대한 액세스를 방지하는 데 사용되는 사용자 그룹과 동일합니다.

디바이스 설정

디바이스도 주체 그룹에 추가됩니다. 디바이스는 Game Developer Store를 통해 사용 권한이 구매되고 디바이스가 개발 키트로 프로비저닝된 경우에만 개발 키트로 사용할 수 있습니다. 디바이스가 개발 키트로 프로비저닝되면 디바이스가 디바이스 그룹에 추가할 수 있는 디바이스 목록에 표시됩니다.

디바이스 그룹 설정

두 번째 종류의 주체 그룹인 디바이스 그룹에도 샌드박스에 대한 액세스 권한을 부여할 수 있습니다. 설정은 위에서 설명한 사용자 그룹 설정과 유사합니다.

샌드박스

샌드박스란 무엇인가요?

간단히 말해서 샌드박스는 프로덕션의 데이터를 분할하는 방법입니다.

왜 샌드박스가 필요한가요?

사용자와 디바이스가 타이틀에 액세스하는 것처럼 타이틀도 서비스에 액세스합니다. 타이틀 세트에 서비스 리소스에 대한 액세스 권한이 부여되는 “타이틀 그룹” 개념을 도입합니다. XBOX One(또는 이후)에는 사전 출시 및 소매 모든 콘텐츠에 대한 단일 프로덕션 환경이 있습니다. 따라서 타이틀의 여러 인스턴스(사전 출시/소매)가 동일한 리소스 인스턴스에서 작동하지 못하도록 해야 합니다.

샌드박스에는 무엇이 있나요?

샌드박스에는 샌드박스에 추가되는 모든 타이틀에 대한 제품 인스턴스가 포함됩니다.

샌드박스 ID란 무엇인가요?

샌드박스 ID는 타이틀, 제품 또는 서비스 구성에 대한 데이터 분할 단위입니다. 여러 타이틀이 동일한 샌드박스에 존재할 수 있으며, 이는 서비스 구성 데이터를 공유하기 위한 전제 조건입니다. 샌드박스 ID(대소문자 구분)는 다음 형식의 문자열입니다: <PublisherMoniker>.n. 샌드박스 ID의 예인 XLDP.5는 아래에 설명되어 있습니다:
  • *퍼블리셔 별칭(publisher moniker)*은 모든 게시자에 걸쳐 고유합니다. 따라서 “XLPD”는 이 특정 게시자의 퍼블리셔 별칭입니다. 퍼블리셔 별칭은 개발자 계정 관리자가 Partner Center에서 게시자를 “활성화”할 때 만들어집니다.
  • 숫자 *“n”*은 샌드박스의 번호를 식별합니다. 이 경우 “5”는 이 게시자에 대해 생성된 여섯 번째 샌드박스입니다.
타이틀 데이터가 서비스를 통해 이동할 때 XBOX services는 샌드박스 ID를 사용하여 생성된 데이터에 대한 “환경”을 고유하게 식별합니다.

어떤 데이터가 샌드박스화되나요?

아래 다이어그램은 어떤 사용자 및 타이틀 데이터가 샌드박스화되는지 보여줍니다. 샌드박스화되는 것과 그렇지 않은 것 버킷 다이어그램

글로벌 재정의 샌드박스

개발자는 개발 키트에 샌드박스 ID를 설정하여 개발 키트가 실행되는 샌드박스를 설정합니다. 이는 글로벌 재정의 샌드박스라고도 합니다. 따라서 개발 키트의 타이틀(셸 앱 및 일반 앱)에서 XBOX Live services(예: 도전 과제, 매치메이킹, 라이선싱, EDS 등)로 이루어지는 모든 요청은 해당 샌드박스에서 이루어집니다. 글로벌 재정의 샌드박스는 또한 글로벌 재정의 샌드박스에 수집된 콘텐츠만 탐색 시 표시된다는 것을 의미합니다.

샌드박스 유형

두 가지 서로 다른 샌드박스 범주가 있습니다. 이러한 범주는 다음과 같이 정의됩니다:
  • 게시자 샌드박스. 게시자는 개발 중인 샌드박스에 액세스할 수 있습니다. 이러한 샌드박스는 XLDP.0, XLDP.1, XLDP.2, XLDP.3 등과 같이 표시될 수 있습니다. 게시자가 타이틀 제품 인스턴스를 배치하는 곳입니다. 이러한 샌드박스에 대한 액세스는 게시자가 액세스 권한을 부여하는 사용자/디바이스로 제한됩니다.
  • Microsoft 샌드박스. RETAIL 및 CERT의 기본 제공 샌드박스입니다. Microsoft만 이러한 보호된 샌드박스에 게시할 수 있습니다.

CERT 샌드박스

타이틀이 정식 출시 준비가 되면 먼저 인증을 거쳐야 합니다. CERT 샌드박스는 인증 관련 개인만 액세스할 수 있는 Microsoft 제어 샌드박스입니다. 게시자는 자신이 소유한 콘텐츠가 인증을 거치고 있는지 볼 수 있습니다. 인증 중에 실패한 모든 제품 인스턴스는 Partner Center를 사용하여 게시자가 디버깅하고 수정할 수 있도록 개발 샌드박스로 다시 가져올 수 있습니다.

RETAIL 샌드박스

RETAIL 샌드박스는 XBOX One(또는 이후)용으로 생성된 모든 콘텐츠의 최종 목적지입니다. 타이틀이 인증을 통과하면 RETAIL 샌드박스에 추가됩니다. 녹색으로 서명된 콘텐츠만 RETAIL 샌드박스에서 실행할 수 있습니다. 이는 게시자 주도 베타도 RETAIL 샌드박스에서 수행된다는 중요한 의미가 있습니다. RETAIL 샌드박스에서 생성된 데이터는 실제 고객 프로덕션 데이터를 나타냅니다. RETAIL 샌드박스의 콘텐츠에 대한 액세스는 여전히 콘텐츠 격리를 통해 제어할 수 있습니다. 예를 들어 게시자 주도 베타는 RETAIL 샌드박스에서 실행되며, 게시자는 게시자 정의 베타 리소스 세트 타이틀에 액세스할 수 있는 주체 그룹을 선택합니다. 베타 타이틀에서 생성된 서비스 데이터는 실제 프로덕션 데이터이며 타이틀이 정식 출시된 후에도 계속 존재합니다.

샌드박스 간 데이터 상호 작용

정의상 샌드박스는 데이터 공유를 제한하는 컨테이너입니다. 따라서 샌드박스 간 데이터 상호 작용은 불가능합니다.

샌드박스 구성

이 섹션에서는 게시자가 샌드박스를 구성할 수 있는 방법의 예를 제공합니다. 게시자는 데이터를 구성하기 위해 샌드박스를 사용하는 방법을 이해해야 합니다. 아래 예제는 콘텐츠 격리를 통한 런타임 액세스 관리만 보여줍니다.

시나리오 1: 두 개의 타이틀, 하나의 샌드박스

게시자의 기본 구조는 다음과 같을 수 있습니다:
  • 게시자가 소유한 모든 사용자와 디바이스가 디자인 타임과 런타임 모두 액세스할 수 있는 두 개의 타이틀.
  • 타이틀당 하나의 제품 인스턴스.
이 경우 게시자는 모든 사전 출시 콘텐츠에 대해 단일 샌드박스만 필요합니다. 아래 다이어그램은 사용자 그룹을 보여줍니다. 게시자는 더 쉽다고 판단되면 사용자 그룹 대신 디바이스 그룹을 사용하도록 선택할 수 있습니다. 또한 이 사용자 그룹은 샌드박스 XLDP.1과 이 샌드박스의 타이틀에 대한 런타임 및 디자인 타임 액세스 권한이 있습니다. 두 개의 타이틀 흐름도가 있는 사용자 그룹

시나리오 2: 하나의 타이틀, 다른 팀들

이 모델에서 요구 사항은 다음과 같습니다:
  • 하나의 타이틀.
  • 개발 팀이 일일 빌드에서 작업합니다.
  • QA 팀이 주간 LKG에서 작업합니다.
  • 개발 팀은 버그가 있는 경우 주간 LKG를 디버그해야 합니다.
  • 재무 팀은 타이틀의 카탈로그 릴리스와 관련된 가격표 및 기타 메타데이터에 액세스해야 합니다.
아래 그림은 TitleX에 두 개의 제품 인스턴스인 PI-1과 PI-2가 있음을 보여줍니다. 제품 인스턴스는 샌드박스에 있어야 하며 동일한 타이틀의 두 제품 인스턴스는 동일한 샌드박스에 있을 수 없습니다. 따라서 TitleX-PI-1은 샌드박스 XLDP.1에 있고 TitleX-PI-2는 샌드박스 XLDP.2에 있습니다. 개발 사용자 그룹은 두 샌드박스 모두에 액세스할 수 있지만 QA 사용자 그룹은 샌드박스 XLDP.2에만 액세스할 수 있습니다. 또한 재무 사용자(그룹 C)는 TitleX에 대한 디자인 타임 액세스 권한이 있습니다. 재무 사용자 그룹은 일반적으로 타이틀의 런타임 디버깅을 수행하지 않으므로 분리되어 있습니다.
조직에 관계없이 Partner Center 사용자는 두 개 이상의 사용자 그룹에 속할 수 있습니다.
여러 사용자 그룹이 있는 하나의 타이틀 흐름도

시나리오 3: 두 개의 타이틀, 완전히 분리

이 예제에서는 요구 사항이 약간 변경됩니다:
  • 두 개의 타이틀.
  • 각 타이틀에 대한 액세스는 특정 개인 집합으로 제한되어야 합니다.
  • 타이틀당 하나의 제품 인스턴스.
  • 타이틀에 대한 디자인 타임 Partner Center 구성 데이터에 액세스해야 하는 관리자 사용자 그룹. 이 그룹의 개인은 모두 게시자의 관리자이며 카탈로그에 게시되는 모든 데이터(카탈로그 메타데이터, 재무, 마케팅, 인증 제출 등)를 제어할 수 있습니다.
이 모델에서 게시자는 두 타이틀을 완전히 분리하기로 선택하고 이 두 타이틀을 두 개의 서로 다른 샌드박스에 할당했습니다. 게시자는 또한 별도의 관리자 사용자 그룹을 만들고 두 제품에 대한 액세스 권한을 부여하기로 선택했습니다. 하나의 관리자, 두 개의 사용자 그룹, 두 개의 타이틀 흐름도

시나리오 4: 원하는 대로

연결 수가 많고 표현을 짧게 유지하기 위해 샌드박스 런타임 연결만 표시하기로 했습니다. 다른 디자인 타임 액세스 권한도 추가하지 못하게 하는 것은 없습니다. 이 예제에서 요구 사항은 다음과 같습니다:
  • 특정 사람만 게시자 내부의 특정 타이틀에 액세스할 수 있습니다.
  • 게시자는 여러 회사의 공급업체와 협력하며 이러한 공급업체는 단기일 수 있습니다.
  • 게시자는 타이틀을 사용 중단할 수 있어야 하며 이를 통해 공급업체 또는 FTE가 액세스한 모든 데이터에 대한 액세스를 방지할 수 있어야 합니다.
이 요구 사항을 모델링하기 위해 아래와 같은 구조를 채택할 수 있습니다. 아래 따라야 하는 모델은 다음과 같습니다:
  • TitleX와 TitleY는 샌드박스 XLDP.1에 각각 하나의 제품 인스턴스만 있습니다.
  • TitleZ는 두 개의 제품 인스턴스가 있으며, 하나는 샌드박스 XLDP.2에 있고 다른 하나는 샌드박스 XLDP.3에 있습니다.
  • FTE 사용자 그룹 B는 모든 샌드박스의 제품 인스턴스에 대한 액세스 권한을 부여받습니다.
  • 공급업체 사용자 그룹 A는 샌드박스 XLDP.1에 대한 액세스 권한이 부여된 공급업체 전용 사용자 그룹입니다.
  • 공급업체 디바이스 그룹 C는 샌드박스 XLDP.3에 대한 액세스 권한이 부여된 공급업체 전용 사용자 그룹입니다.
사용자 정의 사용자 그룹 및 타이틀 액세스 흐름도

디바이스가 대상으로 하는 샌드박스 확인

XBOX services API에는 런타임에 타이틀이 대상으로 하는 샌드박스를 확인할 수 있는 앱 구성 싱글톤이 포함되어 있습니다. 이는 GDK를 사용하는 경우 XSystemGetXboxLiveSandboxId에 의해 수행됩니다.
마지막 수정일 2026년 10월 9일