고급 Xbox 서비스 샌드박스
Xbox 서비스 샌드박스 개요도 참조하세요.
Xbox Live 샌드박스는 개발을 위해 전체 개인 환경을 제공합니다. 이 문서에서는 샌드박스의 정의, 샌드박스가 필요한 이유, 샌드박스가 퍼블리셔에게 적용되는 방법, 샌드박스가 내부 Xbox 팀에 미치는 영향을 설명합니다. 이 문서의 대상 독자는 Xbox One(또는 그 이상) 콘텐츠를 구성하고 샌드박스를 사용하는 퍼블리셔입니다.
Xbox Live 개발은 프로덕션급 서비스와 프로덕션 MSA 개발자 계정으로 프로덕션 환경에서 테스트를 수행할 수 있도록 퍼블리셔에게 엄청난 기회를 제공합니다. 기능성과 유연성을 높이려면 개발 및 GA(일반 공급) 단계에서 타이틀 데이터를 생성하고 타이틀에 대한 액세스를 관리할 수 있도록 파트너 센터에서 구성 단계를 거쳐야 합니다.
샌드박스는 프로덕션 환경에서 데이터를 분할할 수 있는 방법입니다. 모든 콘텐츠에 대해 단일 프로덕션 환경이 존재하기 때문에 샌드박스는 “가상 환경” 역할을 하며, 여기서는 단일 환경에서 생성된 데이터가 다른 곳으로 넘어가지 않습니다.
Xbox Live에서 콘텐츠 격리
Xbox Live에는 모든 사전 릴리스(개발 단계 및 베타 버전), 인증 및 소매 콘텐츠가 상주하는 단일 프로덕션 환경이 있습니다.
콘텐츠 격리는 프로덕션 환경에서 퍼블리셔 콘텐츠가 유출되지 않도록 하는 방법입니다. 기본적으로 콘텐츠 격리는 리소스(타이틀 또는 서비스)에 액세스할 수 있는 권한을 요청하는 모든 주 사용자, 장치 또는 타이틀이 리소스를 액세스할 수 있는 권한을 부여 받을 수 있도록 해줍니다. 콘텐츠 격리를 사용하면 파티션을 샌드박스로 나누어서 타이틀 또는 서비스 데이터를 저장할 수 있으며, 승인 정책을 샌드박스 범위 내에서 정의할 수 있습니다.
샌드박스는 프로덕션 환경에서 데이터를 분할하는 방법입니다.
Xbox 360 시대 서비스에서 PartnerNet 및 ProductionNet는 서로 다른 두 환경입니다.
Xbox One(또는 그 이상) 서비스를 사용하는 경우 단일 프로덕션 환경에는 n개의 개별 가상 환경이 포함되어 있으며, 각 가상 환경은 샌드박스라고 불리웁니다.
모든 콘텐츠에 대해 단일 프로덕션 환경이 존재하기 때문에 샌드박스는 실제로 고유한 가상 환경이며, 여기서는 단일 환경에서 생성된 데이터가 다른 환경으로 넘어갈 수 없습니다.
다음 그림에는 퍼블리셔가 개인 개발 샌드박스를 생성할 수 있는 단일 프로덕션 환경이 나와 있습니다. 인증된 개발자 계정 또는 개발 키트만 이러한 샌드박스에 액세스가 허용됩니다.
그림 1. 프로덕션 환경의 샌드박스.
퍼블리셔 A가 개발 샌드박스를 가지고 있는 것과 마찬가지로 다른 퍼블리셔들도 자체 개발 샌드박스를 가지고 있습니다. 동일한 타이틀 ID가 서로 다른 샌드박스에 상주하지만, 타이틀 ID에 대해 생성된 데이터는 샌드박스에서 서로 다릅니다.
Microsoft에 의해서만 채울 수 있는 두 개의 시스템이 있는데, CERT 및 RETAIL이 바로 그것입니다. 이름에서 알 수 있듯이 CERT 샌드박스는 출시에 앞서 인증 단계에 있는 타이틀을 위한 것이라면, RETAIL 샌드박스는 모든 소매 사용자와 장치가 액세스할 수 있는 실제 달러를 나타내는 샌드박스입니다.
이전에는 타이틀 ID가 Xbox Live에서 고유한 값으로 취급되었지만, 이제는 타이틀 ID와 더불어 샌드박스 ID가 고유한 값으로 취급됩니다. 과거에는 고유한 값으로 취급되던 제품 ID와 다른 ID 영역의 경우도 마찬가지입니다. 이들은 이제 샌드박스 ID와 페어링이 되어야 합니다. Xbox Live의 모든 데이터는 시스템 전반에서 샌드박스 ID에 의해 주로 분할됩니다.
타이틀의 초기 설정
타이틀은 파트너 센터에서 탄생합니다. 타이틀에는 타이틀 ID, 제품 ID 및 서비스 구성 ID(SCID)가 할당됩니다.
타이틀이나 제품 자체는 Xbox Live에 대한 무언가를 의미하지 않습니다. 단일 타이틀에 대한 소매 사용과 개발 사용을 동시에 지원하기 위해 파트너 센터는 필요한 차이점을 만들고 유지할 수 있도록 타이틀의 인스턴스화를 지원합니다. 타이틀의 인스턴스는 샌드박스에 상주하며, 여기로 샌드박스가 들어옵니다.
파트너 센터에서 타이틀을 생성하기 위해 퍼블리셔는 제품 그룹을 만들고 제품 그룹에 대한 장르를 지정한 다음, 그 안에 개별 제품을 만듭니다.
그림 2. 제품 그룹, 제품, 제품 인스턴스 및 샌드박스 간의 관계.
제품 인스턴스
제품 인스턴스는 특정 샌드박스에서 타이틀, 제품 및 구성 데이터의 투영입니다. 이 데이터는 서비스 구성, 카탈로그 메타 데이터, 바이너리 등 세 가지 영역에서 설명됩니다.
서비스 구성
서비스 구성 정의(이벤트, 통계, 도전 과제 등). 서비스 구성은 제품 인스턴스 수준에서 정의됩니다.
카탈로그 메타 데이터
판매 텍스트, 아트 자산, 가용성/제안 정보, 라이선스 데이터 등을 포함하여 카탈로그에 상주하는 메타 데이터.
바이너리
바이너리는 두 가지 방법 중 하나로 나타낼 수 있습니다.
오로지 사이드로딩을 지원하기 위한 메타 데이터. 여기에는 콘텐츠 ID, 버전 정보 및 라이선스 정보가 포함됩니다.
CDN에 전파되고 클라이언트로 다운로드 할 수 있는 전체 바이너리.
액세스 권한 얻기
Xbox One(또는 그 이상)에서 콘텐츠에 액세스하는 방법에는 분명한 두 가지 유형이 있습니다.
디자인 타임 액세스 - 파트너 센터를 통해 PC에서 액세스 - 제품에서 작업을 하는 사람들이 콘텐츠, 구성 및 메타 데이터를 업로드, 구성 및 사용할 수 있도록 허용하지만, 제품의 인스턴스를 실행 또는 재생하는 것은 허용하지 않습니다.
런타임 액세스 - Xbox 본체에서 액세스 - 개발자, 테스터, 검토자, 그리고 궁극적으로 고객이 제품 인스턴스를 실행 및 재생할 수 있도록 허용합니다.
참고 항목
런타임 액세스에서 사용이 가능하도록 제품 인스턴스를 샌드박스에 배치해야 합니다. 샌드박스에 빌드가 배치되면 해당 샌드박스에 대한 액세스 권한을 부여 받은 파트너 센터 사용자 또는 devkit 장치가인스턴스를 실행할 수 있습니다. 이 작업을 수행하려면 사용자의 개발 계정 중 하나를 사용하여 파트너 센터에 로그인합니다. 예를 들어, 런타임 액세스를 위한 가상 사용자 역할을 하는 특별한 계정입니다.
샌드박스에 대해 말할 때는 보통 Xbox Live에서 실행되는 콘텐츠에 대한 런타임 액세스를 말하는 것입니다. Xbox Live의 서비스에 액세스하려면 타이틀 ID가 필요합니다. MicrosoftGame.config에 타이틀 ID가 포함된 경우 콘솔에서 타이틀 ID를 Xbox Live에 보냅니다. 보안 주체(장치 또는 사용자)에게 타이틀에 대한 액세스 권한이 부여될 때까지는 Xbox Live 보안 서비스가 유효한 토큰을 제공하지 않습니다.
이 유효성 검사 과정이 콘텐츠 격리의 핵심입니다. 매우 개략적으로 보면 다음과 같습니다.
보안 주체 그룹에는 Xbox 사용자 ID(XUID), 장치 ID, 타이틀 ID 또는 서비스 ID가 포함될 수 있습니다.
샌드박스에는 타이틀 ID, 제품 ID 또는 서비스 구성 ID(SCID)가 포함될 수 있습니다.
보안 주체 그룹에는 샌드박스에 대한 액세스 권한이 부여됩니다.
따라서 사용자 또는 장치가 샌드박스에서 시험판 타이틀에 액세스하려면 먼저 파트너 센터를 통해 액세스 권한을 부여 받아야 합니다.
그림 3. 파트너 센터를 통해 액세스를 설정하기 위한 모델
조직이 다음 프로세스를 소유하고 있을 때 콘텐츠 격리가 효과가 있습니다.
런타임 액세스를 위해 로그인할 때 각 사용자가 사용하는 개발자 계정인 파트너 센터 사용자 계정과 각 사용자에게 멤버 자격이 부여되는 사용자 그룹을 생성합니다.
신뢰할 수 있는 본체의 장치 그룹을 생성합니다.
사용자 그룹 및 장치 그룹이 그 안의 제품 인스턴스에 액세스할 권한을 갖도록 개발 샌드박스 각각을 지정합니다.
이러한 설정의 예는 아래 그림에 나와 있습니다.
그림 4. 권한이 있는 파트너 센터 사용자 계정의 자격 증명과 달리 권한이 없는 사용자의 자격 증명은 샌드박스에 대한 액세스 권한을 얻지 못합니다. 권한 있는 파트너 센터 사용자 계정에서 소유하는 개발자 계정의 자격 증명만이 샌드박스와 그 안의 모든 제품 인스턴스에 대한 런타임 액세스 권한을 얻는 데 성공합니다.
개발자 계정 설정
Xbox One(또는 그 이상)의 개발자 계정에는 특수 규칙이 적용되는 표준 Microsoft 계정(MSA)만 있습니다. 개발자 계정은 개발을 위해 Xbox Live에서 사용됩니다.
개발자 계정의 특징은 다음과 같습니다.
파트너 센터에서 만들어야 합니다.
퍼블리셔가 만들 때 외부 개발자 역할이 지정됩니다.
개발자 계정을 만든 파트너 센터 계정에 연결됩니다.
개발 키트에 로그인만 가능합니다. 소매 장치에서 개발자 계정에 대한 로그인이 거부됩니다.
테스트를 위해 Xbox Live Gold 개발자 골드 구독이나 기타 구독을 무료로 구입할 수 있습니다.
사용자 그룹 설정
보안 주체 그룹의 첫 번째 유형인 사용자 그룹은 파트너 센터 사용자의 컬렉션입니다. 파트너 센터 사용자가 사용자 그룹에 추가되면 해당 개발자 계정은 이러한 파트너 센터 사용자와 함께 이동합니다.
따라서 사용자 그룹이 샌드박스에 할당되면 해당 사용자 그룹의 파트너 센터 사용자와 연결된 개발자 계정이 해당되는 보안 주체 그룹에 추가되고, 보안 주체 그룹에서 샌드박스를 지원하는 기본 리소스 세트를 통해 정책이 설정됩니다.
참고 항목
샌드박스에 액세스하기 위해 생성되는 사용자 그룹은 제품 그룹 및 제품에 대한 파트너 센터의 구성 데이터에 대한 액세스를 방지하는 데 사용되는 사용자 그룹과 같습니다.
장치 설정
또한 보안 주체 그룹에 장치가 추가됩니다. 게임 개발자 스토어를 통해 권한을 구입하고 장치가 개발 키트에 프로비전된 경우에는 장치를 개발 키트로만 사용할 수 있습니다.
장치가 개발 키트로 프로비전 되고 나면 장치 그룹에 추가할 수 있는 장치 목록에 해당 장치가 나타납니다.
장치 그룹 설정
보안 주체 그룹의 두 번째 유형인 장치 그룹에도 샌드박스에 대한 액세스 권한을 부여할 수 있습니다. 설정 과정은 위에서 자세히 설명한 사용자 그룹 설정과 비슷합니다.
샌드박스
샌드박스란?
한마디로 샌드박스는 프로덕션 환경에서 데이터를 분할하는 방법입니다.
샌드박스가 필요한 이유는?
사용자와 장치가 타이틀에 액세스하는 것과 마찬가지로 타이틀이 서비스에 액세스합니다. 여기서는 타이틀 세트에 서비스 리소스에 대한 액세스 권한이 부여되는 "타이틀 그룹"이라는 개념을 도입합니다.
모든 콘텐츠의 사전 릴리스와 판매 모두에 대해 Xbox One(또는 그 이상)에 대한 단일 생산 환경이 있습니다. 따라서 제목의 여러 인스턴스(사전 릴리스/판매)가 동일한 리소스 인스턴스에서 작동하지 않게 해야 합니다.
샌드박스에는 무엇이 있나요?
샌드박스에는 샌드박스에 추가되는 모든 타이틀에 대한 제품 인스턴스가 포함되어 있습니다.
샌드박스 ID란?
샌드박스 ID는 타이틀, 제품 또는 서비스 구성에 대한 데이터 분할 단위입니다. 여러 타이틀이 같은 샌드박스에 존재할 수 있는데, 이는 여러 타이틀이 서비스 구성 데이터를 공유하기 위한 필수 조건입니다.
샌드박스 ID(대/소문자 구분)는 <PublisherMoniker>.n 형식의 문자열입니다.
샌드박스 ID XLDP.5의 예가 아래에 설명되어 있습니다.
퍼블리셔 모니커는 모든 게시자에 대해 고유합니다. 따라서 "XLPD"는 이 특정 퍼블리셔에 대한 퍼블리셔 모니커입니다. 퍼블리셔 모니커는 퍼블리셔가 파트너 센터에서 개발자 계정 관리자에 의해 "활성화"될 때 생성됩니다.
숫자 "n"은 샌드박스 번호를 식별합니다. 이 경우 "5"는 이 퍼블리셔에 대해 생성된 여섯 번째 샌드박스입니다.
타이틀 데이터가 서비스를 통해 이동하면 Xbox 서비스는 샌드박스 ID를 사용하여 생성된 데이터에 대한 "환경"을 고유하게 식별합니다.
어떤 데이터에 샌드박스가 적용되나요?
아래 다이어그램에는 샌드박스가 적용되는 사용자와 타이틀 데이터가 나와 있습니다.
전역 재정의 샌드박스
개발자는 개발 키트에서 샌드박스 ID를 설정한 다음, 개발 키트가 실행되는 샌드박스를 설정합니다. 이를 전역 재정의 샌드박스라고 합니다. 따라서 개발 키트의 타이틀(셸 앱과 일반 앱)에서 Xbox Live 서비스에 들어온 모든 요청(예를 들어 도전 과제, 매치 메이킹, 라이선스, EDS 등)은 이 샌드박스에서 이루어집니다.
또한 전역 재정의 샌드박스에서는 검색 시 전역 재정의 샌드박스에 수집된 콘텐츠만 볼 수 있습니다.
샌드박스 유형
샌드박스에는 두 가지 범주가 있습니다. 이러한 범주는 다음과 같이 정의됩니다.
퍼블리셔 샌드박스. 퍼블리셔가 개발 시 샌드박스에 액세스할 수 있는 권한이 있습니다. XLDP.0, XLDP.1, XLDP.2, XLDP.3 등이 여기에 해당됩니다. 퍼블리셔는 여기에 타이틀 제품 인스턴스를 배치할 것입니다. 퍼블리셔가 다음에 대한 액세스 권한을 부여한 사용자/장치에 이러한 샌드박스에 대한 액세스 권한이 부여됩니다.
Microsoft 샌드박스. 기본 제공되는 샌드박스는 RETAIL와 CERT입니다. Microsoft만 이렇게 보호되는 샌드박스에 퍼블리싱하는 것이 허용됩니다.
CERT 샌드박스
일반 공급(GA)을 위한 준비가 된 타이틀은 먼저 인증을 통과해야 합니다. CERT 샌드박스는 인증 중인 개인만이 액세스 권한을 갖도록 Microsoft가 제어하는 샌드박스입니다. 퍼블리셔는 자신이 소유한 콘텐츠 중 어떤 것이 인증을 거치고 있는지 확인할 수 있습니다.
인증에 실패한 모든 제품 인스턴스를 개발 샌드박스로 다시 보내서 퍼블리셔가 파트너 센터를 사용해 디버그 및 수정하도록 할 수 있습니다.
RETAIL 샌드박스
Retail 샌드박스는 Xbox One(또는 그 이상)을 위해 만들어진 모든 콘텐츠의 최종 목적지입니다.
타이틀은 인증을 통과하면 Retail 샌드박스에 추가됩니다. 녹색의 서명된 콘텐츠만이 RETAIL 샌드박스에서 실행되는 것이 허용됩니다. 이는 퍼블리셔 중심의 베타 버전이 RETAIL 샌드박스에서도 실행된다는 점에서 중요한 의미를 갖습니다. RETAIL 샌드박스에서 생성된 데이터는 고객의 실제 프로덕션 데이터를 나타냅니다.
RETAIL 샌드박스의 콘텐츠에 대한 액세스는 여전히 콘텐츠 격리를 통해 제어가 가능합니다. 예를 들어 퍼블리셔 중심의 베타 버전은 RETAIL 샌드박스에서 실행되는데, 여기에서 퍼블리셔는 퍼블리셔가 정의한 베타 리소스 세트 타이틀에 대한 액세스 권한을 얻는 보안 주체 그룹을 선택합니다. 베타 타이틀에서 생성된 서비스 데이터는 실제 프로덕션 데이터이며, 타이틀이 일반 공급(GA)에 들어가도 계속해서 존재합니다.
샌드박스 간 데이터 상호 작용
정의상 샌드박스는 데이터 공유를 제한하는 컨테이너입니다. 따라서 샌드박스 간 데이터 상호 작용은 불가능합니다.
샌드박스 구성
이 섹션에서는 퍼블리셔가 샌드박스를 구성할 수 있는 방법에 대한 예를 보여줍니다. 퍼블리셔는 샌드박스를 사용하여 데이터를 구성하는 방법을 이해해야 합니다.
아래 예제는 콘텐츠 격리를 통한 런타임 액세스 관리만을 보여줍니다.
시나리오 1: 2개의 타이틀, 1개의 샌드박스
퍼블리셔의 기본 구조는 다음과 같을 수 있습니다.
디자인 타임과 런타임 모두에서 모든 사용자와 퍼블리셔 소유 장치가 액세스할 수 있는 타이틀의 두 개입니다.
타이틀당 제품 인스턴스가 1개입니다.
이 인스턴스에서 퍼블리셔는 모든 시험판 콘텐츠에 대해 단일 샌드박스만 가지고 있으면 됩니다.
아래 다이어그램은 사용자 그룹을 보여줍니다. 퍼블리셔는 더 쉽다고 판단될 경우 사용자 그룹 대신 장치 그룹을 선택할 수 있습니다. 또한,이 사용자 그룹은 샌드박스 XLDP.1과 이 샌드박스의 타이틀에 대한 런타임 및 디자인 타임 액세스 권한을 가지고 있습니다.
시나리오 2: 1개의 타이틀, 여러 팀
이 모델의 요건은 다음과 같습니다.
타이틀이 1개입니다.
개발 팀은 매일 빌드 작업을 합니다.
QA 팀은 주간 LKG 작업을 합니다.
버그 발생 시 개발 팀은 주간 LKG를 디버그해야 합니다.
재무 팀은 가격 카드와 타이틀의 카탈로그 릴리스와 관련된 기타 메타 데이터에 액세스할 수 있어야 합니다.
아래 그림에는 TitleX의 두 가지 제품 인스턴스인 PI-1과 PI-2가 나와 있습니다. 제품 인스턴스는 하나의 샌드박스에 있어야 하고, 동일한 타이틀에 대한 두 개의 제품 인스턴스가 같은 샌드박스에 존재할 수 없습니다. 따라서 TitleX-PI-1은 샌드박스 XLDP.1에, TitleX-PI-2는 샌드박스 XLDP.2에 있습니다.
개발 사용자 그룹은 두 샌드박스 모두에 대한 액세스 권한을 갖는 반면에, QA 사용자 그룹은 샌드박스 XLDP.2에 대한 액세스 권한만 갖습니다.
또한 재무 팀 사용자(그룹 C)는 TitleX에 대해 디자인 타임 액세스 권한을 갖습니다. 재무 팀 사용자 그룹은 보통 타이틀에 대해 런타임 디버그를 수행하지 않기 때문에 따로 분리가 됩니다.
참고 항목
조직에 관계 없이 파트너 센터 사용자는 둘 이상의 사용자 그룹에 속할 수 있습니다.
시나리오 3: 2개의 타이틀(서로 완전히 분리)
이 예제에서는 요건이 약간 바뀌었습니다.
타이틀이 2개입니다.
각 타이틀에 대한 액세스를 특정한 개인 집합으로 제한해야 합니다.
타이틀당 제품 인스턴스가 1개입니다.
타이틀에 대한 디자인 타임 파트너 센터 구성 데이터에 액세스해야 하는 관리자 사용자 그룹입니다. 이 그룹의 개개인은 모두가 퍼블리셔에 대한 관리자이기 때문에 카탈로그에 퍼블리싱된 모든 데이터(카탈로그 메타 데이터, 재무, 마케팅, 인증 제출 등)를 제어할 수 있습니다.
이 모델에서는 퍼블리셔가 두 타이틀을 완전히 분리하는 방법을 선택하고 2개의 타이틀을 서로 다른 2개의 샌드박스에 할당했습니다. 또한 퍼블리셔는 별도의 관리자 사용자 그룹을 생성하는 방법을 선택하고 두 제품에 대한 액세스 권한을 할당했습니다.
시나리오 4: 사용자 지정
연결 수를 고려해 간략하게 설명하기 위해 샌드박스 런타임 연결만 보여주기로 했습니다. 물론 다른 디자인 타임 액세스 권한을 추가하지 못할 이유가 없습니다.
이 예제에서 요건은 다음과 같습니다.
특정인만 퍼블리셔 내의 특정 타이틀에 대한 액세스 권한을 갖습니다.
퍼블리셔는 회사가 서로 다른 공급업체들과 협력하는데, 이러한 공급업체와의 관계는 단기적일 수 있습니다.
퍼블리셔는 타이틀의 서비스를 해제할 수 있어야 하고, 이렇게 함으로써 공급업체 또는 FTE가 액세스 권한을 가지고 있던 모든 데이터에 액세스하지 못하도록 막아야 합니다.
이 요건을 모델링 하기 위해 아래와 같은 구조를 채택할 수 있습니다.
아래에서 따르는 모델은 다음과 같습니다.
TitleX 및 TitleY는 샌드박스 XLDP.1에서 각기 하나의 제품 인스턴스만 가지고 있습니다.
TitleZ는 2개의 제품 인스턴스를 가지고 있는데, 하나는 샌드박스 XLDP.2에, 다른 하나는 샌드박스 XLDP.3에 있습니다.
FTE 사용자 그룹 B에는 모든 샌드박스의 제품 인스턴스에 액세스할 수 있는 권한이 부여됩니다.
공급업체 사용자 그룹 A는 샌드박스 XLDP.1에 대한 액세스 권한이 부여된 공급업체 전용 사용자 그룹입니다.
공급업체 장치 그룹 C는 샌드박스 XLDP.3에 대한 액세스 권한이 부여된 공급업체 전용 사용자 그룹입니다.
장치가 목표 대상으로 하는 샌드박스를 결정
Xbox 서비스 API는 귀하의 타이틀이 런타임 시에 어느 샌드박스를 대상으로 할 지 확인하게 해 주는 앱 구성 싱글톤을 포함합니다. 이는 GDK를 사용하는 경우 XSystemGetXboxLiveSandboxId에 의해 수행됩니다.