Amazon S3 に保存されているオーディオ ファイルは、Web ベースの音楽プレーヤー アプリとモバイル アプリからアクセスされます。サインインしていないユーザーでも音楽にアクセスできる必要があります。ただし、リンクを使用してコンテンツをダウンロードすることは望ましくありません。これは s3 で達成できますか?
ありがとうございました
Amazon S3 に保存されているオーディオ ファイルは、Web ベースの音楽プレーヤー アプリとモバイル アプリからアクセスされます。サインインしていないユーザーでも音楽にアクセスできる必要があります。ただし、リンクを使用してコンテンツをダウンロードすることは望ましくありません。これは s3 で達成できますか?
ありがとうございました
HTTP リファラーに基づいてアクセスを制限できます。防弾ではありませんが (Referrer はスプーフィングされる可能性があります)、カジュアルなダウンロードは停止します。
バケット ポリシーを使用して、リファラーの可能な値を制限します。
このページに例があります (少し下にスクロール) http://docs.aws.amazon.com/AmazonS3/latest/dev/AccessPolicyLanguage_UseCases_s3_a.html
これが彼らの例です:
{
"Version":"2008-10-17",
"Id":"http referer policy example",
"Statement":[
{
"Sid":"Allow get requests originated from www.example.com and example.com",
"Effect":"Allow",
"Principal":"*",
"Action":"s3:GetObject",
"Resource":"arn:aws:s3:::examplebucket/*",
"Condition":{
"StringLike":{
"aws:Referer":[
"http://www.example.com/*",
"http://example.com/*"
]
}
}
}
]
}
また、期限切れの署名付き URL を作成することもできます。これにより、人々が他のサイトからあなたのコンテンツにリンクするのを防ぐことができます。
1 つのシナリオが思い浮かびます。
音楽プレーヤー アプリが何かを再生したい場合、バックエンドに MP3 への URL を要求する必要があります。バックエンドは、「Expires」パラメーター [1] が 10 秒後に設定された URL を生成できます。
このように、バックエンドから返された URL は 10 秒間しか使用できません。これは、音楽プレーヤーが S3 からダウンロードを開始するのに十分な時間です。
もちろん、ユーザーが 10 秒以内に何らかの HTTP スニファーで URL を確認し、ダウンロードを開始すれば、ファイルをダウンロードできます。
しかし、ユーザーが自分のデバイスがアクセスするコンテンツにアクセスするのを防ぐ確実な方法はありません。コンテンツがデバイスに配信される場合、十分に技術的な人々がそれを手に入れる方法が常にあります。
ps 注意点として、MP3 プレーヤーがシーク (特に別の HTTP 範囲要求を送信してシークする) をサポートしている場合は、バックエンドから更新された「有効期限」パラメーターを使用して新しい URL を再取得する必要があります。
[1] http://s3.amazonaws.com/doc/s3-developer-guide/RESTAuthentication.html