ストリーミング
VOD:CloudFrontの署名付きURL
はじめに
動画またはチャンネルを非公開に設定した場合、ユーザーログインの有無によってアクセスは制限されます。しかし一度ログインしたユーザーが十分な技術的知識を持っている場合、動画ファイルのURLを取得して他の人と共有する方法を見つける事は難しくありません。INTER-STREAMでは動画ファイルへのアクセスは制限できないので、動画ファイルへのURLを知っている人であればINTER-STREAMにログインしなくてもファイルにアクセスしてダウンロードできてしまいます。
Amazon CloudFrontを使用したファイルの保護
動画ファイルの保存と配信にAmazon S3とCloudFrontを使用している場合は、CloudFrontで「署名付きURL」を使用してそれらへのアクセスを制限できることを知っておく必要があります。アクセスを制限するようにCloudFrontディストリビューションを設定した場合、正しい署名付きURL(いくつかのパラメータを持つURL)がないとファイルにアクセスできなくなります。署名付きURLはアクセスの期限やアクセスを許可したユーザのIPを指定することが可能です。
有効期限とIP制限に関する詳細は、このページ内の「統合の詳細と高度な設定」のセクションを参照してください。
署名付きURLの生成
CloudFrontの署名付きURLを使用して認証システムを補完し、動画ファイルをより適切に保護することができます。同時に使用すると、INTER-STREAMはログインユーザーがコンテンツへのアクセスを許可されている場合にのみ署名付きURLを自動的に(バックグラウンドで)生成します。
さらに、デフォルトでは署名付きURLは現在のユーザーIPと同様に有効期限を使用してアクセスを制限します。ユーザーが実際の動画ファイルURLを取得できたとしても、他のユーザーがそのURLを使用することはできません。
S3 + CloudFrontの設定
Amazon S3でバケットをまだ作成していない場合は、まずプライベートコンテンツを保存するためにAmazon AWSコンソールからバケットを作成します。
注:S3バケットのURLは一般に公開しないでください。
バケット全体、少なくともバケット内のファイルはプライベートにする必要があります。
これには2つの方法があります。
1. 下の画像「非公開」バケットを使用します。これは、プライベートもしくは制限されたオブジェクトを格納するための専用のバケットがある理想的なケースです。
基本的には、何処にも公開を許可しないようにバケットを設定しなければなりません。
2. パブリックバケット内にアップロードされたファイルに[パブリックアクセス]を許可しないように[アクセス許可]で設定します。
プライベートバケットの例)
パブリックバケット内のプライベートファイルの例)
プライベートファイルをアップロードする
INTER-STREAMからプライベート動画ファイルをアップロードする場合(動画のストレージはAWSに設定されている必要があります)、アップロードされたファイルのプライバシーが「プライベート」となるようにシステム側で設定しなければなりません。
設定ファイル(config/Config.inc.php)を編集して、PHPの終了タグ"?>"の前に以下の変数を追加します。
アクセス制限付きCloudFrontディストリビューションの作成
動画ファイルを保存するためのバケットを作成したら、CloudFrontディストリビューションを作成する必要があります。
ディストリビューションには2種類あります。
・Webディストリビューション:HTML5ビデオプレーヤーでプログレッシブダウンロード/疑似ストリーミングを使用して動画ファイルを再生するためのものです。
・RTMPディストリビューション:Flashビデオプレーヤーでストリーミングを使用して動画ファイルを再生するためのものです。
Flash用の"RTMP"ディストリビューション、HTML5用の"Web"ディストリビューション、別々に作成してダウンロードすることを推奨します。
HTML5用"Web"ディストリビューションを作成する
AWSコンソールに移動してCloudFrontに移動し、[Create Distribution]ボタンをクリックします。
次の画面で[Web]の[Get Started]ボタンをクリックします。
オプションを設定します。
注:他のオプションに関する情報については、CloudFrontのドキュメントを確認してください。
全てのオプションが正しく設定されていることを確認して、[Create Distribution]をクリックしてください。
注:新しく作成したディストリビューションの「ドメイン名」は後で必要となるのでメモしておく事をお勧めします。
ディストリビューションが有効になるまでには数分程度かかります。
Flash用"RTMP"ディストリビューションを作成する
AWSコンソールに移動してCloudFrontに移動し、[Create Distribution]ボタンをクリックします。
次の画面で[RTMP]の[Get Started]ボタンをクリックします。
オプションを設定します。
注:他のオプションに関する情報については、CloudFrontのドキュメントを確認してください。
全てのオプションが正しく設定されていることを確認して、[Create Distribution]をクリックしてください。
注:新しく作成したディストリビューションの「ドメイン名」は後で必要となるのでメモしておく事をお勧めします。
ディストリビューションが有効になるまでには数分程度かかります。
CloudFront認証情報
CloudFrontの認証情報を取得し、それを使用するようINTER-STREAM側の設定をおこないます。
認証情報はファイルのURLに「署名」するために使用されます。
CloudFront認証情報を取得する
注:AWSコンソールのルート認証情報を使用してログインしている必要があります。
上部アカウント名をクリックして「セキュリティ認証情報」を選択します。
次の画面で[CloudFront Key Pairs]セクションを展開し、[Create New Key Pair]ボタンをクリックします。
[Create New Key Pair]ボタンをクリックすると、秘密鍵が作成されたことを通知するウィンドウが表示され、秘密鍵ファイルをダウンロードするためのオプションが表示されます。 アクセスキーIDを書き留めて、秘密鍵ファイルをダウンロードする必要があります。
INTER-STREAM側の設定
INTER-STREAMのconfig/ディレクトリに秘密鍵ファイルをアップロードします。
INTER-STREAMに認証情報を提供するには、設定ファイル(config/Config.inc.php)を編集して、PHPの終了タグ"?>"の前にキーペアIDと秘密鍵ファイル名を追加します。
Amazonからダウンロードされた秘密鍵ファイルの名前にはアクセスキーIDが含まれています。
セキュリティ上の観点から、秘密鍵ファイル名は変更して乱数または文字を含めることを強く推奨します。
例えばダウンロードしたファイルが"pk-AJKAI5XNI8UFLW5E38W7.pem"の場合は、"pk-AJKAI5XNI8UFLW5E38W7-some-random-numbers.pem"に名前を変更します。
・unique_id:システム側で複数の認証情報を使用している時に資格情報にアクセスするためのユニークな名前です。これ1つだけの場合は"cf1"のままで問題ありません。
・Key-Pair-Id:アクセスキーID。"AJKAI5XNI8UFLW5E38W7"のような文字列です。
・Private_key_file_name:configディレクトリにアップロードした秘密鍵ファイルの名前。
"pk-AJKAI5XNI8UFLW5E38W7-8998741258991.pem"のような文字列です(変更後)。
例)
CloudFront署名付きURLを使用した動画ファイルの参照/再生
CloudFrontディストリビューションを作成し、認証情報を取得し、それらを使用するようにINTER-STREAM側の設定もおこないました。
INTER-STREAMでファイルを参照する準備が整いました。
Stream VODの設定
Stream VOD動画の作成と編集方法についてはこちらをご確認ください。
H.264 Flashストリーミング(RTMPディストリビューション)
ファイル拡張子が.mp4の場合、URLの先頭に"[cfsig]"、ファイル名の前に"mp4:"が付きます。
対応する品質(Flashスロット)に指定するURLは次のようになります。
例)
HTML5/プログレッシブダウンロード(Webディストリビューション)
ファイル拡張子が.mp4の場合、URLの先頭に"[cfsig]"が付きます。
対応する品質(HTML5スロット)に指定するURLは次のようになります。
例)
標準動画の使用(AWS統合)
[一般設定>動画]に、対応するURLフォーミュラを追加します。
Flashフォーミュラ
URLの先頭に"[cfsig]"、extラベルの前に"mp4:"が付きます。
対応する品質(Flashスロット)に指定するURLフォーミュラは次のようになります。
HTML5フォーミュラ
URLの先頭に"[cfsig]"が付きます。
対応する品質(HTML5またはFlashスロット)に指定するURLフォーミュラは次のようになります。
統合の詳細と高度な設定
統合の詳細
INTER-STREAMが署名付きURLを使用するには、CloudFrontのURLに"[cfsig]"プレフィックスを付ける必要があります。
このタグをトリガーとして、設定ファイルに記述した認証情報を使用してバックグラウンドでCloudFrontのURLに署名します。
高度な設定
このページの冒頭で説明したように、署名付きURLは有効期限と現在のユーザーIPを使用します。
設定ファイル(config/Config.inc.php)を編集して、PHPの終了タグ"?>"の前に以下の変数を追加することでオプションを変更できます。
$AWS_CF_SIGNED_URL_RESTRICT_USER_IP = true; // 署名付きURLをユーザーIPで制限します。オプション:true, false
CloudFrontの制限付きディストリビューションでIPv6サポートを使用している場合、IPv6を使用しているユーザーがコンテンツを見ることができるようにIP制限を無効にする必要があります。
IPv6のサポートが重要ではないと思われる場合は、CloudFrontディストリビューションではIPv6を無効にしてください。
ダウンロードが有効になっている動画の場合
[動画>メディア>動画ファイルダウンロード]の「ダウンロードメニューを表示」を[Yes:INTER-STREAMファイル]または[Yes:INTER-STREAMファイル + その他のファイル]に設定していて、HTML5画質フィールドが.mp4ファイルを参照している場合、CloudFrontディストリビューションシステムは自動的にそれらのファイルに対応する(署名された)ダウンロードURLを生成します。
HTML5画質フィールドで参照されているものとは異なるファイルへのリンクをダウンロードメニューに提示したい場合、これらのファイルにも署名付きURLが必要となります。
1.[動画>メディア>動画ファイルダウンロード]の「ダウンロードメニューを表示」で[Yes:その他のファイル]を選択します。
2. 手動でダウンロードリンクを追加します。
ダウンロードリンクはINTER-STREAMの署名URLジェネレータユーティリティを使用して生成する必要があります。
ユーティリティを実行するには、Webブラウザで次のURLを開きます。
注:赤い文字の部分はご自身のINTER-STERAMのルートアドレスに書き換えてください。
そして対応するCloudFront WebディストリビューションURLを適用します。
例)CloudFrontのURL:
は、ユーティリティによって
と変換されます。
変換されたURLは[その他のファイル]フィールドに入力します。