動的暗号化とキー配信によるコンテンツ保護

Media Services ロゴ v3


警告

Azure Media Services は、2024 年 6 月 30 日に廃止されます。 詳細については、「 AMS 廃止ガイド」を参照してください。

Azure Media Services を使用して、ストレージ、処理、配信を通じてコンピューターから離れる時点からメディアをセキュリティで保護します。 Media Services では、Advanced Encryption Standard (AES-128) または主要な 3 つのデジタル著作権管理 (DRM) システム コンテンツを配信できます。

FairPlay Streaming は、iOS デバイス、Apple TV、macOS の Safari で、HTTP ライブ ストリーミング (HLS) 経由で転送されるビデオに対してのみ使用できる Apple テクノロジです。 Media Services では、承認されたクライアントに AES キーと DRM (PlayReady、Widevine、FairPlay) ライセンスを配信するためのサービスも提供しています。 コンテンツが AES クリア キーで暗号化され、HTTPS で送信される場合、クライアントに到達するまで平文になりません。

Media Services v3 では、コンテンツ キーがストリーミング ロケーターに関連付けられています (この例を参照)。 Media Services キー配信サービスを使用している場合は、Azure Media Services でコンテンツ キーを生成できます。 独自のキー配信サービスを使用している場合、または 2 つのデータセンターに同じコンテンツ キーが必要な高可用性シナリオに対応する必要がある場合は、コンテンツ キーを自分で生成する必要があります。

プレーヤーがストリームを要求すると、Media Services は指定されたキーを使用して、AES クリア キーまたは DRM 暗号化によってコンテンツを動的に暗号化します。 ストリームの暗号化を解除するために、プレーヤーは Media Services のキー配信サービスまたは指定したキー配信サービスからキーを要求します。 ユーザーによるキーの取得が承認されているかどうかを判断するために、サービスはキーに指定されたコンテンツ キー ポリシーを評価します。

コンテンツ保護システム

REST API、または Media Services クライアント ライブラリを使用して、ライセンスとキーの承認および認証ポリシーを構成できます。

Widevine は、GovCloud リージョンでは使用できません。

Note

Media Services では、KeyDelivery、RESTv2、ストリーミング エンドポイント、ライブ イベント ストリーミングの配信元へのすべての要求に対して TLS 1.2 が適用されます。 既存の TLS 1.0 または 1.1 を使用しているアカウントは、この適用から除外されます。 これらのメディア サービス エンドポイントに対するすべての要求に TLS 1.2 を適用する場合は、AMS サポートにお問い合わせください。

DRM クライアントをサポートするブラウザー

一般的なブラウザーでは次の DRM クライアントがサポートされます。

Browser 暗号化
Chrome Widevine
Microsoft Edge、Internet Explorer 11 PlayReady
Firefox Widevine
Opera Widevine
Safari FairPlay

コンテンツ アクセスの制御

コンテンツ キー ポリシーを構成することで、コンテンツにアクセスできるユーザーを制御できます。 Media Services では、キーを要求するユーザーを承認する複数の方法がサポートされています。 キーをクライアント (プレーヤー) に配信するには、クライアントがポリシーの要件を満たしている必要があります。 コンテンツ キー ポリシーは、オープンまたはトークンの制限を持つことができます。

オープンの制限のコンテンツ キー ポリシーは、承認を必要としないすべてのユーザーにライセンスを発行するときに使用できます。 たとえば、収益が広告ベースで、サブスクリプションベースではない場合です。

トークン制限コンテンツ キー ポリシーでは、コンテンツ キーは、ライセンスまたはキー要求で有効な JWT トークンまたは単純 Web トークン (SWT) を提示するクライアントにのみ送信されます。 このトークンは STS によって発行される必要があります。

STS として Azure AD を使用する

Azure AD は、STS として使用できます。 指定されたキーで署名したトークンを作成し、トークン制限の設定で指定した要求を発行するように設定されている必要があります。 Media Services ライセンス/キー配信サービスは、次の両方の条件が存在する場合に、要求されたライセンスまたはキーをクライアントに返します。

  • トークンが有効である。
  • トークン内の要求が、ライセンスまたはキー用に構成されているものと一致する。

トークン制限ポリシーを構成する際には、プライマリ検証キー、発行者、および対象ユーザーの各パラメーターを指定する必要があります。 プライマリ検証キーには、トークンの署名に使用されたキーが含まれています。 発行者は、トークンを発行する STS です。 対象ユーザー (スコープとも呼ばれる) には、トークンの目的、またはトークンがアクセスを承認するリソースが記述されます。 Media Services ライセンス/キー配信サービスでは、トークン内のこれらの値がテンプレート内の値と一致することが検証されます。

トークン再生の防止

トークン再生防止機能を使用すると、キーまたはライセンスを要求するために同じトークンを使用できる回数に制限を設定できます。 トークンに型 urn:microsoft:azure:mediaservices:maxuses の要求を追加できます。値は、トークンを使用してライセンスまたはキーを取得できる回数です。 キー配信に対して同じトークンを使用する後続のすべての要求では、"許可されていません" 応答が返されます。

考慮事項

  • トークン生成の制御が必要です。 要求は、トークン自体に配置する必要があります。
  • この機能を使用すると、要求を受信してから有効期限切れまでの時間が 1 時間を超えているトークンを含む要求は、"許可されていません" 応答により拒否されます。
  • トークンは、その署名によって一意に識別されます。 ペイロードに変更が加えられる (たとえば、有効期限や要求が更新される) と、トークンの署名が変更され、以前にキー配信が確認したことがない新しいトークンとしてカウントされます。
  • トークンが値を超えた場合、再生は失敗します maxuses
  • 既存の保護されているすべてのコンテンツに使用できます (発行されたトークンのみ変更する必要があります)。
  • JWT と SWT の両方で動作します。

カスタム STS の使用

トークンを提供するために、カスタム STS の使用を選択できます。 原因は次のとおりです。

  • ID プロバイダー (IDP) は STS をサポートしていません。

  • STS とサブスクライバー請求システムを統合するために、より柔軟な、あるいはより厳密な制御が必要な場合があります。

    たとえば、OTT サービス運営会社は、プレミアム、ベーシック スポーツなど、複数のサブスクライバー パッケージを提供する場合があります。 運営会社は、特定のパッケージのコンテンツだけが利用可能になるように、トークンの要求をサブスクライバーのパッケージと一致させる必要があります。 この場合、カスタム STS は必要な柔軟性と制御を提供します。

  • たとえば、サブスクリプション ライセンスとレンタル ライセンスなど、DRM ライセンス パラメーターが異なる ContentKeyPolicyOptions を選択するために、トークンにカスタム要求を含めること。

  • トークンがアクセスを許可するキーのコンテンツ キー ID を表す要求を含めるため。

カスタム STS を使うときは、2 つの変更を行う必要があります。

  • アセットのライセンス配信サービスを構成するときに、Azure AD からの現在のキーではなく、カスタム STS での検証に使うセキュリティ キーを指定する必要があります。
  • JTW トークンが生成されるときに、現在の Azure AD での X 509 証明書の秘密キーではなく、セキュリティ キーを指定します。

セキュリティ キーには次の 2 種類があります。

  • 対称キー:JWT の生成と検証に同じキーが使われます。
  • 非対称キー:X509 証明書の公開/秘密キー ペアの秘密キーが JWT の暗号化/生成に使われ、公開キーがトークンの検証に使われます。

注意

開発プラットフォームとして .NET Framework/C# を使う場合、非対称セキュリティ キーに使われる X509 証明書のキーの長さは 2048 ビット以上でなければなりません。 このキーの長さは、.NET Framework の System.IdentityModel.Tokens.X509AsymmetricSecurityKey クラスの要件です。 そうでない場合は、次の例外がスローされます。IDX10630:署名の "System.IdentityModel.Tokens.X509AsymmetricSecurityKey" は "2048" ビット以上でなければなりません。

Media Services 以外のライセンス/キー配信サービスを使用する

別のライセンス/キー配信サービスを使用する場合は、キー ポリシー テンプレートを編集できます。

ハウツー、チュートリアル、サンプル

.Net Digital Rights Management サンプル では、.NET を使用して Media Services v3 でマルチ DRM システムを実装する方法を示します。

Node.JS と Python で使用できる追加のコンテンツ保護サンプルがあります:

Node.JS Python 説明
PlayReady と Widevine DRM を使用して HLS と DASH をアップロード、ストリーミングする Node.JS PlayReady と Widevine DRM を使用して HLS と DASH をアップロード、ストリーミングする Python Widevine と PlayReady DRM を使用したエンコードとストリーミングの方法を示しています
Node.JS Basic Playready DRM コンテンツの保護とストリーミング Python Basic Playready DRM コンテンツの保護とストリーミング PlayReady DRM を使用したエンコードとストリーミングの方法を示します
Node.JS Basic Widevine DRM コンテンツの保護とストリーミング Python Basic Widevine DRM コンテンツの保護とストリーミング Widevine DRM を使用したエンコードとストリーミングの方法を示します

ヘルプとサポート

質問がある場合は Media Services に問い合わせるか、次のいずれかの方法で更新内容に従ってください。