SecurityPlayerAccess control

埋め込み動画のドメイン制限と地域制限

UFOLOADプレーヤーにおける埋め込みドメインリスト、国・IPのブロック、署名付きリンクの仕組みと、照合ルールの動作、それぞれの制御が及ぶ範囲を解説します。

動画を公開すると、ページのソースを読める人なら誰でもそのアドレスをコピーできます。それで構わない場合もありますが、困ることも少なくありません。他のサイトがあなたのプレーヤーを埋め込んでトラフィックを消費したり、ライセンスが一部の国にしか及ばなかったり、特定のアドレス群がライブラリをスクレイピングし続けたりします。UFOLOADにはそのための制御がいくつかあり、それぞれ異なるレイヤーで機能します。この記事では、各制御の役割、照合ルールの仕組み、そしてそれぞれの限界を説明します。1つのスイッチを過信せず、適切に組み合わせられるようにするためです。

制御の概要

制御制限する対象設定場所
許可する埋め込みドメインiframeでプレーヤーを表示できるサイトプレーヤースタジオ、「アクセス」タブ
ブロックする国リストにある国の視聴者プレーヤースタジオ、「アクセス」タブ
ブロックするIPアドレス個別のアドレスとマスクプレーヤースタジオ、「アクセス」タブ
許可するダウンロードドメインダウンロードページを開けるサイトプレーヤースタジオ、「アクセス」タブ
有効期限付きの署名付きリンク再生アドレスが有効な期間と、有効な相手API、POST /files/{id}/links

このリストの項目はすべてアカウントのプレーヤー・配信設定の一部で、すべての動画に適用されます。ルールはどのプランでも使えます。ダウンロードボタン自体のみ、料金ページにあるとおりProプランとMaxプランに限られます。

ステップ1:埋め込みを自分のドメインに限定する

埋め込みプレーヤーは他者のページ上のiframe内で動作し、ブラウザーはリファラーを通じてそれがどのページかをプレーヤーに伝えます。プレーヤーはそのホストをサーバーに渡し、サーバーがリストと照合します。ホストがリストになければ、サーバーは 403 で拒否し、プレーヤーは動画の代わりに視聴できない旨のメッセージを表示します。

照合ルールは厳密なので、正確に把握しておく価値があります:

  • example.com はそのホストだけを許可し、それ以外は許可しません。www.example.com は許可されません。
  • *.example.com は example.com のすべてのサブドメインを許可しますが、example.com そのものは許可しません。サイトとそのサブドメインの両方を対象にするには、両方のエントリーを登録します。
  • 大文字・小文字は区別されず、ポートと末尾のドットは無視されるため、Example.com:8080 は example.com に一致します。
  • リストには最大100件まで登録できます。リストが空の場合はどこにでも埋め込めます。これがデフォルトです。
  • ホスト名だけを書いてください。誤って完全なアドレスを貼り付けた場合は、ホスト部分だけが保存されます。
注意

リストを有効にする前に、ステージングやプレビュー用のドメインも含め、実際に埋め込んでいるすべてのホストを追加してください。自分のステージングサイトで突然「視聴できません」と表示されるのが、最もよくある想定外の事態です。

ドメイン制限でできないこと

この制御は、誰かがあなたのiframeを自分のページに貼り付けるような、手軽な直リンクを防ぎます。セキュリティの境界ではなく、その理由も知っておくべきです。チェックはブラウザーが送るリファラーに依存しています。ページがリファラーを削除すると、プレーヤーはどこに埋め込まれているかを判別できず、その場合はブロックしません。そうしないと、プライバシー設定やリファラーポリシーによって正当な埋め込みまで壊れてしまうからです。同様に、ネットワークパネルから署名付きプレイリストのアドレスをコピーする本気の訪問者は、期限が切れるまで別の場所で再生できます。セグメントは要求元のページではなく、リンクの署名でチェックされるからです。また、動画の公開視聴ページもドメインリストでは制限されず、リンクを知っている人なら誰でも開けます。

つまりこのリストは、行儀の良い隣人を締め出すための柵だと考えてください。自分で配信するストリームをより強く制御するには、後述の署名付きリンクを使います。逆に、選ばれた人だけが見られる動画が必要な場合、UFOLOADには非公開動画もDRMもないことに注意してください。機密コンテンツに使う前に、セルフホスティング vs 無料プラットフォーム vs 動画ホスティングをお読みください。

ステップ2:国とIPアドレスをブロックする

国とIPのルールは2か所で適用されます。視聴者が視聴ページや埋め込みページを開いたときと、配信レイヤーでのプレイリストとセグメントへのすべてのリクエストです。配信時のチェックはキャッシュされずリクエストごとに行われるため、追加したルールは次のセグメントからすぐに適用され、すでにリンクを持っている人もそれを保持し続けることでルールを回避することはできません。

  • 国はISO 3166-1 alpha-2の2文字コードをカンマ区切りで指定します(例:US, CN, RU)。視聴者の国は、IPアドレスから地理位置情報データベースで判定されます。各リストには最大100件まで登録できます。
  • IPアドレスは、203.0.113.7 のような単一アドレスか、203.0.113.* のように最後のオクテットにアスタリスクを使ったマスクで指定でき、マスクは256個のアドレス範囲全体を対象にします。IPv6アドレスは完全一致で登録できます。

実用上の注意点が2つあります。マスクは大雑把です。モバイル回線やオフィスのネットワークに .* マスクをかけると、その背後にいる正当なユーザー全員がブロックされます。また、IPベースの地域判定は、その元になるアドレスデータの精度に左右されます。VPNやプロキシを使う訪問者は出口ノードの場所にいるように見えるため、国のブロックは不要なトラフィックを減らしたり、地域ライセンスを誠実に守ったりするための手段であって、保証ではありません。

ヒント

動画を所有する組織のメンバーとしてログインしている間は、自分のルールでブロックされることはなく、当社のサポートスタッフも同様です。これは意図的な仕様で、自国をブロックしてもライブラリから締め出されないようにするためです。ただしその分、テストはログアウトしたブラウザーか別のネットワークから行う必要があります。

hls.jsを使って自分のページでストリームを再生する場合(HLS動画の埋め込みを参照)、プレーヤーはUFOLOADのページに許可を求めないため、ドメインリストは関係しません。制御はリンクそのものによって行います。POST /api/v1/files/{id}/links は、有効期間60秒〜30日の再生リンクとダウンロードリンクを発行します。bind_ip を追加するとリンクを1つのIPv4アドレスに紐付けられ、bind_cookie を追加するとサーバーが訪問者に設定するcookieの値に紐付けられます。その場合、レスポンスにはリクエストに付ける必要のあるcookieの名前が含まれます。

bash
curl -X POST "https://ufoload.com/api/v1/files/FILE_ID/links" \
  -H "Authorization: Bearer $UFOLOAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"ttl": 600, "bind_ip": "203.0.113.7"}'

短い有効期間と紐付けの組み合わせが、利用できる最も強力な手段です。ページからコピーされたリンクは数分で使えなくなり、他のアドレスからは最初から使えません。その代償として、ページが表示されるたびにサーバーからリンクを発行する必要があります。このパターンはアップロードとAPIのガイドとAPIドキュメントで説明しています。

ダウンロードドメイン

ProプランとMaxプランのプレーヤーには、ダウンロードボタンを表示できます。別のリストである「許可するダウンロードドメイン」は、埋め込みリストとまったく同じように動作しますが、フレーム内でダウンロードページを開けるサイトを制御します。空にするとすべてのサイトを許可します。UFOLOAD上で直接ダウンロードページを開く訪問者は、視聴ページと同様に制限されません。

ステップ3:保存してテストする

  1. 「アクセス」タブでリストを保存します。
  2. 許可したドメインのページをプライベートウィンドウで開き、動画が再生されることを確認します。サブドメインのパターンも確認してください。
  3. リストにないドメイン(例:別のホスト名で配信したローカルのテストページ)から同じ埋め込みを開き、プレーヤーに視聴できない旨のメッセージが表示されることを確認します。
  4. 国やIPのルールは、ログアウトした状態で、可能ならルールに該当するネットワークからテストします。
  5. 自分のページのリファラーポリシーは strict-origin-when-cross-origin のような妥当な値にしておきます。no-referrer ポリシーではプレーヤーからホストが見えず、リストを適用できません。

埋め込みリストと短期間の署名付きリンクを組み合わせれば、現実的なケースの大半に対応できます。手軽な直リンクは入口でブロックされ、それ以上を狙う人は期限切れになるリンクを手間をかけて手に入れる必要があります。広告が利用可能で、プレーヤーで広告を流す場合は、収益化ガイドで広告フォーマットと広告枠のスケジュールを説明しています。プレーヤーで使える機能の一覧は機能ページに、どの事業者にも求めるべきアクセス制御は動画ホスティングのチェックリストにまとめています。

無料アカウントで試してみる

動画をアップロードすれば、数分でHLSプレーヤーとAPIキーが手に入ります。プランごとの上限は料金ページに掲載しています。