View a markdown version of this page

GAMESEC04-BP01 다운로드 가능한 콘텐츠에 대한 액세스를 승인된 클라이언트 및 사용자로 제한 - 게임 산업 렌즈

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

GAMESEC04-BP01 다운로드 가능한 콘텐츠에 대한 액세스를 승인된 클라이언트 및 사용자로 제한

승인된 애플리케이션 및 클라이언트에 의해 게임 콘텐츠에 대한 액세스를 제한합니다. 다운로드 가능한 게임 콘텐츠를 저장하기 위한 비용 효율적이고 확장 가능한 오리진으로 Amazon S3를 사용하고 플레이어에게 글로벌 성능의 콘텐츠를 제공하기 위해 Amazon CloudFront를 사용하는 것이 좋습니다. 두 서비스 모두 인증된 사용자로 액세스를 제한하는 등 저장된 데이터에 대한 액세스를 제한하기 위한 기본 제공 메커니즘을 제공합니다.

이 모범 사례가 확립되지 않을 경우 노출되는 위험 수준: 높음

구현 지침

Amazon S3에 저장된 콘텐츠에 대한 액세스 권한 부여

S3에 저장된 콘텐츠에 대한 액세스 권한을 부여해야 하는 경우 고려해야 할 몇 가지 요소가 있습니다. 기본적으로 S3 버킷을 AWS 계정 생성한 만 그 안에 저장된 객체에 액세스할 수 있습니다. 내부 애플리케이션에 대한 액세스 권한을 부여하고 Amazon S3 버킷에 저장된 콘텐츠를 관리하려면 AWS Identity and Access Management (IAM)을 사용하여 적절한 액세스를 제공하는 정책을 생성합니다. 

IAM 역할은  Amazon EC2와 같은 서비스에서 호스팅되는 페더레이션 사용자, 시스템 또는 애플리케이션 AWS Lambda과 Amazon EKS 및 Amazon ECS에서 호스팅되는 컨테이너 기반 애플리케이션과 연결할 수 있습니다. 예를 들어 AWS SDK 또는 AWS CLI 를 사용하여 S3 버킷에 게임 콘텐츠 자산을 게시하고 관리할 수 있습니다. 이 사용 사례를 지원하기 위해 S3 버킷에 게임 콘텐츠를 읽고 쓸 수 있는 적절한 액세스 권한이 있는 IAM 역할을 생성하고 소프트웨어 및 스크립트를 호스팅하는 EC2 인스턴스와 연결할 수 있습니다.

버킷 및 특정 객체에 대해 리소스 기반 정책을 정의할 수 있습니다. S3 버킷 정책은 S3 버킷과 연결되며 버킷 및 버킷 내의 객체에 대한 액세스를 제한하고 다른 계정의 Amazon S3 리소스에 대한 액세스 권한을 부여하는 데 사용할 수 있습니다. 예를 들어 여러 팀 또는 별도의 게임 개발 스튜디오가 동일한 게임 콘텐츠에서 작업하고 Amazon S3의 중앙 호스팅 콘텐츠에 대한 동일한 액세스가 필요한 시나리오에서는 S3 버킷 정책을 사용하여 S3 리소스에 대한 교차 계정 액세스 권한을 정의할 수 있습니다. 각 애플리케이션 또는 애플리케이션 세트에 고유한 이름과 권한이 있는 액세스 포인트를 생성하여 공유 데이터에 대한 데이터 액세스 관리를 간소화할 수 있는 S3 액세스 포인트를 사용하는 것이 좋습니다. Amazon S3 설명서에는  Amazon S3의 액세스 제어를 위한 추가 모범 사례가 포함되어 있습니다.

Granting short-term access to your content

제한된 특정 시간 동안만 액세스해야 하는 경우 콘텐츠에 대한 단기 액세스 권한을 부여하는 임시 URLs을 생성합니다. Amazon S3는 객체 소유자가 버킷 정책을 업데이트하지 않고 Amazon S3의 객체에 대한 시간 제한 액세스 권한을 부여할 수 있도록 미리 서명된 URLs 생성을 지원합니다. 이렇게 하면 액세스 권한이 부여된 최종 사용자 또는 애플리케이션이 계정 또는 IAM 권한을 가질 필요가 없으며 대신 미리 서명된 URL을 사용하여 콘텐츠에 액세스할 수 있습니다. 

이는 권한이 있는 플레이어에게 권한이 부여된 다운로드 가능한 콘텐츠에 대한 액세스 권한을 부여하고 제한된 시간 동안의 게임 콘텐츠에 대한 임시 액세스를 제공하는 등 다양한 게임 사용 사례에서 일반적으로 사용되는 모범 사례입니다. 미리 서명된 URLs 사용하여 S3 버킷에 콘텐츠를 업로드할 수 있는 임시 권한을 제공할 수도 있습니다. 예를 들어 미리 서명된 URL을 사용하여 플레이어에게 지원 팀이 플레이어 지원 사례 문제를 해결하는 데 도움이 되는 클라이언트 로그를 업로드할 수 있는 액세스 권한을 제공하는 것을 고려할 수 있습니다.

콘텐츠 전송 네트워크를 사용하여 콘텐츠에 대한 액세스 제공

애플리케이션, 게임 개발자, 아티스트 및 기타 직원이 개발 및 관리를 위해 S3 버킷의 콘텐츠에 직접 액세스해야 할 수 있지만, 콘텐츠 전송 네트워크를 사용하여 플레이어 또는 다른 사용자가 인터넷을 통해 공개적으로 사용할 수 있는 콘텐츠에 대한 액세스를 제공합니다. 이 접근 방식은 자주 액세스하는 콘텐츠를 캐싱하여 다운로드 성능을 개선하고 비용을 절감합니다. Amazon CloudFront는 콘텐츠를 캐싱하고 플레이어에게 더 가깝게 전달하면서 Amazon S3와 같은 게임의 다운로드 오리진에 대한 부하를 줄여 콘텐츠를 전 세계에 배포할 수 있습니다.

S3 버킷에서 직접 퍼블릭 콘텐츠를 제공하는 대신이 콘텐츠를 비공개로 유지하고 CloudFront를 사용하여 공개적으로 제공하는 것이 좋습니다. CloudFront는 서명된  URLs 또는 서명된 쿠키를 사용하여 플레이어가 프라이빗 콘텐츠(예: 유료 플레이어 전용 새 게임 다운로드)에 액세스하도록 구성할 수 있습니다. 그런 다음 애플리케이션을 개발하여 서명된 URLs을 생성하여 인증된 사용자에게 배포하거나 인증된 사용자에 대해 서명된 쿠키를 설정하는 쿠키 설정 헤더를 보낼 수 있습니다. 서명된 URLs 또는 서명된 쿠키를 생성하여 파일에 대한 액세스를 제어할 때 URL 및 쿠키가 더 이상 유효하지 않은 종료 날짜 및 시간을 지정할 수 있습니다. 

선택적으로 콘텐츠에 액세스하는 데 사용할 수 있는 컴퓨터의 IP 주소 또는 주소 범위를 지정할 수도 있습니다. 이는 특정 게임 개발 스튜디오 파트너 또는 계약업체 네트워크에 대한 액세스를 제한하려는 경우에 유용합니다. 제한된 여러 파일에 대한 액세스를 제공하려는 경우 또는 현재 URLs을 변경하지 않으려는 경우 서명된 쿠키를 사용합니다. 개별 파일에 대한 액세스를 제한하거나 사용자가 쿠키를 지원하지 않는 클라이언트를 사용하는 경우 서명된 URLs을 사용합니다. 서명된 URL은 서명된 쿠키보다 우선합니다.

구현 단계

  • IAM 역할 및 버킷 정책을 사용하여 내부 애플리케이션, 팀 또는 교차 계정 시나리오를 위한 S3 버킷에 대한 적절한 액세스 권한을 부여합니다.

  • 다운로드 가능한 콘텐츠 또는 클라이언트 로그와 같은 임시 업로드에 적합한 S3 객체에 대한 단기 액세스 권한을 부여하기 위해 미리 서명된 URLs을 생성합니다.

  • 서명된 URLs 또는 쿠키와 함께 Amazon CloudFront를 사용하여 인증된 사용자에게 프라이빗 콘텐츠를 더 안전하게 제공