2013-02-25 18 views
7

Amazon S3に格納されたオーディオファイルは、Webベースの音楽プレーヤーアプリからもモバイルアプリからでもアクセスできます。署名されていないユーザーであっても、音楽にアクセスできる必要があります。しかし、私は人々がコンテンツをダウンロードするためにリンクを使用したくない。これはs3で達成できますか?amazon s3からオーディオファイルを直接ダウンロードしないようにする

ありがとう

+3

は、私はそれを得たなら、私は見てみましょう:あなたは、音楽にアクセスし、自分のクライアント(ブラウザ、アプリ、など)にそれをストリーミングWebアプリケーションを持っていますか?そうであれば、S3でコンテンツを非公開にして、あなたのアプリがあなたのAWS /シークレットキーを通してそれにアクセスできるようにすることができます。 – Viccari

答えて

5

HTTPリファラーに基づいてアクセスを制限できます。防弾ではありません(リフェラーはなりすまし可能)が、カジュアルなダウンロードを停止します。

バケットポリシーを使用して、リファラーの可能な値を制限します。

の例では、このページにあります(少し下にスクロール)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

1つのシナリオは、頭に浮かぶ:

あなたの音楽プレーヤーアプリが何かを再生したい場合には、それはMP3へのURLのためのバックエンドを依頼しています。あなたのバックエンドは、 "Expires"パラメータ[1]が将来10秒に設定されたURLを生成することができます。

このようにして、バックエンドから返されたURLは10秒間しか使用できません。これは、音楽プレーヤーがS3からダウンロードを開始するのに十分であるはずです。

もちろん、ユーザーは10秒間の何らかの種類のHTTPスニファでそのURLを見てダウンロードを開始すると、ファイルをダウンロードできます。

しかし、ユーザーがデバイスにアクセスするコンテンツに手を触れることを防ぐ防弾方法はありません。コンテンツがデバイスに配信されている場合、技術者が十分に技術を習得できる方法が常に存在します。

p.s.あなたのMP3プレーヤーがシークをサポートしている場合(特に、別のHTTPレンジリクエストを送信することによって)、バックエンドからリフレッシュされた "expires"パラメータを持つ新しいURLを再取得する必要があります。

[1] http://s3.amazonaws.com/doc/s3-developer-guide/RESTAuthentication.html

関連する問題