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 バケット内のゲームコンテンツアセットを公開および管理できます。このユースケースをサポートするには、適切なアクセス権を持つ IAM ロールを作成してゲームコンテンツを S3 バケットに読み書きし、ソフトウェアとスクリプトをホストする EC2 インスタンスに関連付けることができます。

リソースベースのポリシーは、バケットと特定のオブジェクトに対して定義できます。S3 バケット ポリシーは S3 バケットに関連付けられており、バケットとバケット内のオブジェクトへのアクセスを制限したり、他のアカウントから Amazon S3 リソースへのアクセスを許可したりできます。たとえば、複数のチームまたは個別のゲーム開発スタジオが同じゲームコンテンツに取り組み、Amazon S3 で一元的にホストされたコンテンツへの同じアクセス を必要とするシナリオでは、S3 バケットポリシーを使用して、S3 リソースへのクロスアカウントアクセスのアクセス許可を定義できます。各アプリケーションまたはアプリケーションセットに固有の名前とアクセス許可を持つアクセスポイントを作成することで、共有データへのデータアクセスの管理を簡素化できる S3 アクセスポイントの使用を検討してください。Amazon S3 ドキュメントには、 Amazon S3 でのアクセスコントロールに関する追加のベストプラクティスが含まれています。

Granting short-term access to your content

アクセスが特定の期間限定のみ必要な場合は、コンテンツへの短期アクセスを許可する一時的な URLsを生成します。Amazon S3 では、 署名付き URLs の生成がサポートされています。これにより、オブジェクト所有者は、バケットポリシーを更新せずに Amazon S3 内のオブジェクトへの時間制限付きアクセスを許可できます。 これにより、アクセスが付与されているエンドユーザーまたはアプリケーションは、アカウントまたは IAM アクセス許可を持つ必要はなく、代わりに署名付き URL を使用してコンテンツにアクセスします。 

これは、権限のあるプレイヤーにダウンロード可能なコンテンツへのアクセスを許可したり、期間限定のゲームコンテンツへの一時的なアクセスを提供したりするなど、さまざまなゲームのユースケースで一般的に使用されるベストプラクティスです。署名付き URLs を使用して、コンテンツを S3 バケットにアップロードするための一時的なアクセス許可を付与することもできます。例えば、署名付き URL を使用して、サポートチームがプレイヤーサポートケースのトラブルシューティングを支援するためのクライアントログをアップロードするためのアクセスをプレイヤーに提供することを検討できます。

コンテンツ配信ネットワークを使用してコンテンツへのアクセスを提供する

アプリケーション、ゲーム開発者、アーティスト、その他の担当者は、開発および管理の目的で S3 バケット内のコンテンツに直接アクセスする必要がある場合がありますが、コンテンツ配信ネットワークを使用して、インターネット経由でプレイヤーや他のユーザーが公開しているコンテンツへのアクセスを提供します。このアプローチは、頻繁にアクセスされるコンテンツをキャッシュすることで、ダウンロードパフォーマンスを向上させ、コストを削減します。Amazon CloudFront は、Amazon S3 などのゲームのダウンロードオリジンの負荷を軽減しながら、コンテンツをキャッシュしてプレイヤーの近くに配信することで、コンテンツをグローバルに配信できます。

S3 バケットから直接パブリックコンテンツを提供するのではなく、このコンテンツをプライベートに保ち、CloudFront を使用してパブリックに配信することをお勧めします。CloudFront は、署名付き  URLs または署名付き Cookie を使用して、プライベートコンテンツ (有料プレイヤーのみの新しいゲームダウンロードなど) へのアクセスをプレイヤーに要求するように設定できます。その後、アプリケーションを開発して、署名付き URLs を作成して認証されたユーザーに配布するか、認証されたユーザーに署名付き Cookie を設定する set-cookie ヘッダーを送信できます。ファイルへのアクセスを制御するために署名付き URLs または署名付き Cookie を作成する場合、終了日時を指定できます。その後、URL と Cookie は無効になります。 

オプションで、コンテンツへのアクセスに使用できるコンピュータの IP アドレスまたはアドレス範囲を指定することもできます。これは、特定のゲーム開発スタジオパートナーまたは請負業者ネットワークへのアクセスを制限する場合に便利です。複数の制限付きファイルへのアクセスを許可する場合、または現在の URLs を変更しない場合は、署名付き Cookie を使用します。個々のファイルへのアクセスを制限する場合や、ユーザーが Cookie をサポートしていないクライアントを使用している場合は、署名付き URLs を使用します。署名付き URL は署名付き Cookie よりも優先されます。

実装手順

  • IAM ロールとバケットポリシーを使用して、内部アプリケーション、チーム、またはクロスアカウントシナリオの S3 バケットへの適切なアクセスを許可します。

  • ダウンロード可能なコンテンツやクライアントログなどの一時アップロードに適した、S3 オブジェクトへの短期アクセスを許可するための署名付き URLs を生成します。

  • 署名付き URLsまたは Cookie で Amazon CloudFront を使用して、認証されたユーザーにプライベートコンテンツをより安全に提供する