[SEO 부제목]
이 지침에서는 가볍고 확장 가능한 사용자 지정 크로스 플랫폼 게임 ID 구성 요소를 배포하는 방법과 해당 ID를 사용하여 AWS의 사용자 지정 게임 백엔드 구성 요소에 대해 인증하는 방법에 대한 단계를 보여줍니다. 이 지침은 게스트 ID와 다양한 게임 플랫폼 ID 시스템을 지원합니다. 또한 기존 통합을 템플릿으로 사용하여 게임 콘솔과 같은 추가 게임 플랫폼으로 확장할 수 있습니다.
또한 이 지침은 Unreal Engine 5, Unity 2021(이상), Godot 4 게임 엔진을 위한 소프트웨어 개발 키트(SDK)와 샘플 코드를 제공합니다. SDK는 이 지침의 ID 구성 요소 및 사용자 지정 백엔드 기능과 통합됩니다.
참고: [고지 사항]
아키텍처 다이어그램
[아키텍처 다이어그램 설명]
1단계
AWS Lambda 함수 generate-keys가 7일마다 호출됩니다.
2단계
generate-keys가 Amazon Simple Storage Service(S3)에서 최근 공개된 jwks.json 파일을 가져오고, 새 퍼블릭 키(JSON 웹 키 세트(JWKS))와 프라이빗 키를 생성하고, 새 퍼블릭 키와 이전 키로 Amazon S3를 업데이트합니다.
3단계
generate-keys가 JSON 웹 토큰(JWT) 생성에 사용되는 프라이빗 키를 AWS Secrets Manager로 업데이트합니다.
4단계
게임 클라이언트가 제공된 소프트웨어 개발 키트(SDK)를 사용하여 새 게스트 ID를 요청합니다. 또는 게임 클라이언트가 AWS WAF 규칙으로 보호되는 Amazon API Gateway를 통해 guest_secret을 전송하여 기존 게스트 ID로 로그인할 수 있습니다.
5단계
Lambda 함수 login-as-guest가 게스트 ID를 검증하거나 Amazon DynamoDB의 UserTable에 새 게스트 ID를 생성합니다.
6단계
이 Lambda 함수가 Secrets Manager로부터 프라이빗 키를 요청하고, 클라이언트를 위해 서명된 JWT 토큰을 생성하고, 이를 다시 보냅니다.
7단계
이제 게임 클라이언트는 SDK를 사용하여 Authorization 헤더의 JWT 토큰과 함께 요청을 전송하여 사용자 지정 백엔드 구성 요소를 호출할 수 있습니다.
8단계
백엔드 구성 요소가 Amazon S3에서 파일을 가져오는 Amazon CloudFront를 통해 퍼블릭 엔드포인트에서 JWKS 퍼블릭 키를 요청하여 토큰을 검증합니다.
9단계
SDK가 API Gateway를 통해 Lambda 함수 refresh-access-token을 호출하여 JWT 액세스 토큰을 자동으로 새로 고칩니다. 이 함수가 Secrets Manager의 프라이빗 키를 사용하여 새 토큰을 생성합니다.
10단계
또한 게임 클라이언트가 게임 플랫폼별 ID 공급자로부터 액세스 토큰을 전송하여 기존 계정에 연결하거나 새 계정을 생성할 수 있습니다.
이 Lambda 함수가 토큰을 검증하고 특정 DynamoDB 테이블에 사용자 계정에 대한 링크를 생성합니다. 그런 다음 Secrets Manager의 프라이빗 키를 사용하여 클라이언트를 위한 JWT 토큰을 생성합니다.
시작하기
Well-Architected 원칙
AWS Well-Architected Framework는 클라우드에서 시스템을 구축하는 동안 사용자가 내리는 의사 결정의 장단점을 이해하는 데 도움이 됩니다. 이 프레임워크의 6가지 원칙을 통해 안정적이고 안전하며 효과적이고 비용 효율적이며 지속 가능한 시스템을 설계 및 운영하기 위한 아키텍처 모범 사례를 배울 수 있습니다. AWS Management Console에서 추가 요금 없이 사용할 수 있는 AWS Well-Architected Tool을 사용하면 각 원칙에 대한 여러 질문에 답하여 이러한 모범 사례와 비교하며 워크로드를 검토할 수 있습니다.
위의 아키텍처 다이어그램은 Well-Architected 모범 사례를 고려하여 생성된 솔루션의 예시입니다. Well-Architected를 완전히 충족하려면 가능한 많은 Well-Architected 모범 사례를 따라야 합니다.
-
운영 우수성
이 지침의 사용자 지정 ID 구성 요소는 사용자 요청을 추적하는 AWS X-Ray를 활용하고, Lambda Powertools를 사용하여 백엔드 로직 내에서 자세한 정보를 제공합니다. 또한 이 지침의 모든 구성 요소는 Amazon CloudWatch를 사용하여 Virtual Private Cloud(VPC) 흐름, API Gateway 액세스, Amazon S3 액세스, Lambda 완료 및 AWS Fargate 작업의 로그를 추적합니다. 마지막으로, AWS CDK는 환경 전반에서 제어된 변경과 일관된 구성을 허용하여 보안 및 규정 준수 요구 사항을 충족해 줍니다.
-
보안
강력한 ID 관리를 지원하기 위해 이 지침의 사용자 지정 ID 구성 요소는 플레이어 ID와 인증을 관리합니다. 이 지침의 다른 모든 기능은 ID 구성 요소에서 제공한 퍼블릭 키에 대해 JSON 웹 토큰의 유효성을 검사하여 액세스를 보호합니다. 사용자 지정 ID 구성 요소는 일반적인 웹 익스플로잇으로부터 애플리케이션을 보호하는 웹 애플리케이션 방화벽인 AWS WAF의 보호를 받습니다. 또한 모든 데이터는 저장 중과 전송 중에 암호화됩니다.
-
신뢰성
이 지침은 주로 AWS 리전 내 여러 가용 영역(AZ)에서 기본적으로 가용성이 높은 완전 관리형 서비스를 활용합니다. Fargate에서는 고가용성을 위해 다중 AZ 구성을 활용하며, 지정 시간 복구를 통해 DynamoDB의 모든 데이터베이스 테이블을 보호합니다.
-
성능 효율성
이 지침은 다양한 기능을 통해 성능을 개선할 수 있도록 여러 가지 접근 방식을 결합합니다. 먼저, 이 지침에 선택된 서비스는 서버리스 서비스의 자동 확장 구성 요소를 활용하여 게임 출시와 기타 트래픽 급증 시 규모에 맞게 작동하도록 설계되었습니다. 다음으로, 개발자는 사용자 지정 ID 구성 요소에서 제공되는 X-Ray 데이터를 통해 혼잡을 파악하고 필요에 따라 지침을 보정하여 성능을 최적화할 수 있습니다. 마지막으로, JSON 웹 토큰을 검증하는 퍼블릭 키가 CloudFront를 통해 제공되어 백엔드 구성 요소의 지연 시간을 최적화합니다.
-
비용 최적화
이 지침은 가능한 경우 서버리스 구성 요소를 활용하므로 사용한 리소스에 대해서만 비용을 지불하면 됩니다. 비용을 추가로 절감하려면 AWS 절감형 플랜을 통해 Lambda 및 Fargate 모두의 비용을 최적화하는 것이 좋습니다. 또한 온디맨드 DynamoDB 테이블에서 프로비저닝된 용량 자동 크기 조정으로 전환하면 기본 트래픽을 알 수 있는 경우 DynamoDB 예약 용량을 사용하여 비용을 줄일 수 있습니다.
이 지침에서 사용하는 모든 서비스는 API Gateway, Lambda, DynamoDB, Amazon S3, Fargate, Secrets Manager 및 AWS WAF를 포함하여 수요에 따라 확장되도록 구성되었으므로 최소한의 리소스만 필요합니다.
-
지속 가능성
이 지침의 서버리스 서비스 구성 요소는 자동으로 확장되므로 부하에 맞게 필요한 최소한의 리소스만 사용하도록 유지하면서 구성 요소를 확장할 수 있습니다. 이렇게 하면 사용하지 않는 용량을 프로비저닝하지 않아도 되므로 인프라가 환경에 미치는 영향을 줄일 수 있습니다.
관련 콘텐츠
고지 사항
샘플 코드, 소프트웨어 라이브러리, 명령줄 도구, 개념 증명, 템플릿 또는 기타 관련 기술(AWS 직원을 통해 제공되는 상기 항목 포함)은 AWS 이용 계약 또는 귀하와 AWS 간의 서면 계약(둘 중 해당되는 것)에 따라 AWS 콘텐츠로 제공됩니다. 이 AWS 콘텐츠를 프로덕션 계정, 프로덕션 또는 기타 중요한 데이터에 사용해서는 안 됩니다. 귀하는 특정 품질 제어 방식 및 표준에 따라 프로덕션급 사용에 적절하게 샘플 코드와 같은 AWS 콘텐츠를 테스트, 보호 및 최적화할 책임이 있습니다. AWS 콘텐츠를 배포하면 Amazon EC2 인스턴스를 실행하거나 Amazon S3 스토리지를 사용할 때와 같이 요금이 부과되는 AWS 리소스를 생성하거나 사용하는 것에 대한 AWS 요금이 발생할 수 있습니다.
본 지침에 서드 파티 서비스 또는 조직이 언급되어 있다고 해서 Amazon 또는 AWS와 서드 파티 간의 보증, 후원 또는 제휴를 의미하지는 않습니다. AWS의 지침을 기술적 시작점으로 사용할 수 있으며 아키텍처를 배포할 때 서드 파티 서비스와의 통합을 사용자 지정할 수 있습니다.