トークン認証による Azure CDN 資産の保護Securing Azure CDN assets with token authentication

重要

これは、Azure CDN Premium from Verizonのみの機能です。Azure CDN Standard 製品では利用できません。This is a feature of Azure CDN Premium from Verizon only, and is not available with Azure CDN standard products. CDN の機能の比較については、「Azure CDN product features」(Azure CDN 製品の機能) を参照してください。For a comparison of CDN features, see Azure CDN product features.

概要Overview

トークン認証メカニズムを使用すると、承認されていないクライアントに Azure Content Delivery Network (CDN) が資産を提供できないように指定できます。Token authentication is a mechanism that allows you to prevent the Azure Content Delivery Network (CDN) from serving assets to unauthorized clients. トークン認証は、通常、コンテンツの "ホットリンク" を防止するために行います。このホットリンクでは、自分の資産が他の Web サイト (掲示板など) によって許可なく使用されます。Token authentication is typically done to prevent hotlinking of content, in which a different website, such as a message board, uses your assets without permission. ホットリンクは、コンテンツの配信コストに影響を与えることがあります。Hotlinking can have an impact on your content delivery costs. CDN でトークン認証を有効にすると、CDN がコンテンツを配信する前に、CDN エッジ サーバーで要求が認証されます。By enabling token authentication on CDN, requests are authenticated by CDN edge server before the CDN delivers the content.

動作のしくみHow it works

トークン認証では、要求元に関するエンコードされた情報を含むトークン値を要求に求めることで、その要求が、信頼済みサイトによって生成されていることを確認します。Token authentication verifies that requests are generated by a trusted site by requiring requests to contain a token value that holds encoded information about the requester. コンテンツが要求元に提供されるのは、そのエンコードされた情報が要件を満たす場合だけです。それ以外の場合、要求は拒否されます。Content is served to a requester only if the encoded information meets the requirements; otherwise, requests are denied. 要件を設定するには、以下のパラメーターを 1 つ以上使用します。You can set up the requirements by using one or more of the following parameters:

  • 国: 国番号によって指定された国/地域から送信される要求を許可または拒否します。Country: Allow or deny requests that originate from the countries/regions specified by their country code.
  • URL:指定した資産またはパスと一致する要求のみを許可します。URL: Allow only requests that match the specified asset or path.
  • [Host](ホスト):要求ヘッダーで、指定したホストを使用する要求を許可または拒否します。Host: Allow or deny requests that use the specified hosts in the request header.
  • 参照元: 指定した参照元からの要求を許可または拒否します。Referrer: Allow or deny request from the specified referrer.
  • IP アドレス:特定の IP アドレスまたは IP サブネットからの要求のみを許可します。IP address: Allow only requests that originated from specific IP address or IP subnet.
  • プロトコル:コンテンツの要求に使用されたプロトコルに基づいて要求を許可または拒否します。Protocol: Allow or deny requests based on the protocol used to request the content.
  • 有効期限: 限られた期間だけリンクが有効になるように日付と期間を割り当てます。Expiration time: Assign a date and time period to ensure that a link remains valid only for a limited time period.

詳細については、「トークン認証の設定」で各パラメーターの詳しい構成例を参照してください。For more information, see the detailed configuration examples for each parameter in Setting up token authentication.

重要

このアカウントのいずれかのパスでトークン承認が有効になっている場合、クエリ文字列キャッシュに使用できるモードは standard-cache モードだけです。If token authorization is enabled for any path on this account, standard-cache mode is the only mode that can be used for query string caching. 詳細については、「クエリ文字列による Azure CDN キャッシュ動作の制御」を参照してください。For more information, see Control Azure CDN caching behavior with query strings.

参照アーキテクチャReference architecture

次のワークフロー図は、CDN がトークン認証を使用して Web アプリと連携するようすを示しています。The following workflow diagram describes how the CDN uses token authentication to work with your web app.

CDN トークン認証のワークフロー

CDN エンドポイントのトークン検証のロジックToken validation logic on CDN endpoint

次のフローチャートは、CDN エンドポイントでトークン認証が構成されている場合に、Azure CDN がクライアント要求を検証する方法を示しています。The following flowchart describes how Azure CDN validates a client request when token authentication is configured on CDN endpoint.

CDN トークン検証のロジック

トークン認証の設定Setting up token authentication

  1. Azure Portal で CDN プロファイルを参照し、 [管理] を選択して、補助ポータルを起動します。From the Azure portal, browse to your CDN profile, then select Manage to launch the supplemental portal.

    [CDN プロファイル] の [管理] ボタン

  2. [HTTP Large](HTTP ラージ) にポインターを置いて、ポップアップで [Token Auth](トークン認証) をクリックします。Hover over HTTP Large, then select Token Auth in the flyout. その後、次のように、暗号化キーと暗号化パラメーターを設定できます。You can then set up the encryption key and encryption parameters as follows:

    1. 1 つまたは複数の暗号化キーを作成します。Create one or more encryption keys. 暗号化キーは、大文字と小文字が区別され、任意の組み合わせの英数字を含めることができます。An encryption key is case-sensitive and can contain any combination of alphanumeric characters. スペースなどのその他の種類の文字は使用できません。Any other types of characters, including spaces, are not allowed. 最大長は 250 文字です。The maximum length is 250 characters. 暗号化キーが確実にランダムになるようにするには、OpenSSL ツールを使用して作成することをお勧めします。To ensure that your encryption keys are random, it is recommended that you create them by using the OpenSSL tool.

      OpenSSL ツールの構文は次のとおりです。The OpenSSL tool has the following syntax:

      rand -hex <key length>

      例:For example:

      OpenSSL> rand -hex 32

      ダウンタイムを避けるために、主キーとバックアップ キーの両方を作成します。To avoid downtime, create both a primary and a backup key. バックアップ キーは、主キーが更新されるときに、コンテンツへのアクセスが中断しないようにします。A backup key provides uninterrupted access to your content when your primary key is being updated.

    2. [主キー] ボックスに一意の暗号化キーを入力し、必要に応じて、 [Backup Key](バックアップ キー) ボックスにバックアップ キーを入力します。Enter a unique encryption key in the Primary Key box and optionally enter a backup key in the Backup Key box.

    3. 各キーの最小の暗号化バージョンを [Minimum Encryption Version](最小暗号化バージョン) リストから選び、 [更新] をクリックします。Select the minimum encryption version for each key from its Minimum Encryption Version list, then select Update:

      • V2: キーをバージョン 2.0 と 3.0 のトークンの生成に使用できることを示します。V2: Indicates that the key can be used to generate version 2.0 and 3.0 tokens. このオプションは、従来のバージョン 2.0 暗号化キーからバージョン 3.0 キーに切り替える場合にのみ使用します。Use this option only if you are transitioning from a legacy version 2.0 encryption key to a version 3.0 key.
      • V3: (推奨) キーをバージョン 3.0 のトークンの生成にのみ使用できることを示します。V3: (Recommended) Indicates that the key can only be used to generate version 3.0 tokens.

      CDN トークン認証のセットアップ キー

    4. 暗号化ツールを使用して、暗号化パラメーターを設定し、トークンを生成します。Use the encrypt tool to set up encryption parameters and generate a token. 暗号化ツールを使用して、有効期限、国/地域、参照元、プロトコル、クライアント IP アドレスなどに基づいて (それらを任意に組み合わせて)、要求を許可または拒否できます。With the encrypt tool, you can allow or deny requests based on expiration time, country/region, referrer, protocol, and client IP (in any combination). トークンを作成するために組み合わせることのできるパラメーターの数と組み合わせに制限はありませんが、トークンの合計の長さは 512 文字に制限されます。Although there is no limit to the number and combination of parameters that can be combined to form a token, the total length of a token is limited to 512 characters.

      CDN 暗号化ツール

      [暗号化ツール] セクションで、次の 1 つ以上の暗号化パラメーターに対して値を入力します。Enter values for one or more of the following encryption parameters in the Encrypt Tool section:

      パラメーター名Parameter name 説明Description
      ec_expireec_expire トークンが期限切れになるまでの有効期限を割り当てます。Assigns an expiration time to a token, after which the token expires. 有効期限の後に送信された要求は拒否されます。Requests submitted after the expiration time are denied. このパラメーターでは、Unix タイムスタンプが使用されます。これは、`1/1/1970 00:00:00 GMT` の標準 Unix エポックからの秒数に基づいていますThis parameter uses a Unix timestamp, which is based on the number of seconds since the standard Unix epoch of `1/1/1970 00:00:00 GMT`. (標準時間と Unix 時間は、オンライン ツールを使用して変換できます)。(You can use online tools to convert between standard time and Unix time.)> たとえば、トークンが `12/31/2016 12:00:00 GMT` に期限切れになるよう設定する場合は、Unix タイムスタンプの値として「`1483185600`」と入力します。For example, if you want the token to expire at `12/31/2016 12:00:00 GMT`, enter the Unix timestamp value, `1483185600`.
      ec_url_allowec_url_allow 特定の資産またはパスに合わせてトークンを調整できます。Allows you to tailor tokens to a particular asset or path. 特定の相対パスで始まる URL を持つ要求へのアクセスを制限します。It restricts access to requests whose URL start with a specific relative path. URL は大文字と小文字が区別されます。URLs are case-sensitive. 複数のパスを入力するには、各パスをコンマで区切ります。スペースを入れないでください。Input multiple paths by separating each path with a comma; do not add spaces. 要件に応じてさまざまな値を設定して、さまざまなレベルのアクセスを提供できます。Depending on your requirements, you can set up different values to provide different level of access.> たとえば、URL `http://www.mydomain.com/pictures/city/strasbourg.png` について、入力値と、許可される要求を次に示します。For example, for the URL `http://www.mydomain.com/pictures/city/strasbourg.png`, these requests are allowed for the following input values:
      • 入力値 `/`:すべての要求が許可されます。Input value `/`: All requests are allowed.
      • 入力値 `/pictures`: 以下の要求が許可されます。Input value `/pictures`, the following requests are allowed:
        • `http://www.mydomain.com/pictures.png`
        • `http://www.mydomain.com/pictures/city/strasbourg.png`
        • `http://www.mydomain.com/picturesnew/city/strasbourgh.png`
      • 入力値 `/pictures/`:`/pictures/` パスを含む要求のみが許可されます。Input value `/pictures/`: Only requests containing the `/pictures/` path are allowed. たとえば、「 `http://www.mydomain.com/pictures/city/strasbourg.png` 」のように入力します。For example, `http://www.mydomain.com/pictures/city/strasbourg.png`.
      • 入力値 `/pictures/city/strasbourg.png`:この特定のパスと資産に対する要求のみが許可されます。Input value `/pictures/city/strasbourg.png`: Only requests for this specific path and asset are allowed.
      ec_country_allowec_country_allow 1 つまたは複数の指定された国/地域から発信される要求のみを許可します。Only allows requests that originate from one or more specified countries/regions. その他のすべての国/地域から送信される要求は拒否されます。Requests that originate from all other countries/regions are denied. 各国の 2 文字の [ISO 3166 国コード](/previous-versions/azure/mt761717(v=azure.100))を使用し、それぞれをコンマで区切ります。スペースを追加しないでください。Use a two-letter [ISO 3166 country code](/previous-versions/azure/mt761717(v=azure.100)) for each country and separate each one with a comma; do not add a space. たとえば、米国とフランスからのアクセスのみを許可する場合は、「`US,FR`」と入力します。For example, if you want to allow access from only the United States and France, enter `US,FR`.
      ec_country_denyec_country_deny 1 つまたは複数の指定された国/地域から発信される要求のみを拒否します。Denies requests that originate from one or more specified countries/regions. その他のすべての国/地域から送信される要求は許可されます。Requests that originate from all other countries/regions are allowed. 実装は、ec_country_allow パラメーターと同じです。The implementation is the same as the ec_country_allow parameter. 国コードが ec_country_allowec_country_deny の両方のパラメーターに存在する場合、ec_country_allow パラメーターが優先されます。If a country code is present in both the ec_country_allow and ec_country_deny parameters, the ec_country_allow parameter takes precedence.
      ec_ref_allowec_ref_allow 指定した参照元からの要求のみを許可します。Only allows requests from the specified referrer. 要求されているリソースにリンクされた Web ページの URL が、参照元により特定されます。A referrer identifies the URL of the web page that is linked to the resource being requested. パラメーター値には、プロトコルを含めないでください。Do not include the protocol in the parameter value.> 許可されている入力の種類は次のとおりです。The following types of input are allowed:
      • ホスト名、またはホスト名とパス。A hostname or a hostname and a path.
      • 複数の参照元。Multiple referrers. 複数の参照元を追加するには、各参照元をコンマで区切ります。スペースを追加しないでください。To add multiple referrers, separate each referrer with a comma; do not add a space. 参照元の値を指定したにもかかわらず、ブラウザー構成のせいで参照元の情報が要求で送信されない場合、要求は既定で拒否されます。If you specify a referrer value, but the referrer information is not sent in the request due to the browser configuration, the request is denied by default.
      • 参照元情報がないか空白の要求。Requests with missing or blank referrer information. 既定では、ec_ref_allow パラメーターを指定すると、これらの種類の要求をブロックします。By default, the ec_ref_allow parameter blocks these types of requests. これらの要求を許可するには、「missing」というテキストか、(末尾のコンマを使用して) 空の値を入力します。To allow these requests, enter either the text, "missing", or enter a blank value (by using a trailing comma).
      • サブドメイン。Subdomains. サブドメインを許可するには、アスタリスク (\*) を入力します。To allow subdomains, enter an asterisk (\*). たとえば、`contoso.com` のすべてのサブドメインを許可するには、「`*.contoso.com`」と入力します。For example, to allow all subdomains of `contoso.com`, enter `*.contoso.com`.
      たとえば、`www.contoso.com`、`contoso2.com` のすべてのサブドメインからの要求と、参照元が空白か不明な要求にアクセスを許可するには、「`www.contoso.com,*.contoso.com,missing`」と入力します。For example, to allow access for requests from `www.contoso.com`, all subdomains under `contoso2.com`, and requests with blank or missing referrers, enter `www.contoso.com,*.contoso.com,missing`.
      ec_ref_denyec_ref_deny 指定した参照元からの要求を拒否します。Denies requests from the specified referrer. 実装は、ec_ref_allow パラメーターと同じです。The implementation is the same as the ec_ref_allow parameter. 参照元が ec_ref_allowec_ref_deny パラメーターの両方に存在する場合は、ec_ref_allow パラメーターが優先されます。If a referrer is present in both the ec_ref_allow and ec_ref_deny parameters, the ec_ref_allow parameter takes precedence.
      ec_proto_allowec_proto_allow 指定したプロトコルからの要求のみを許可します。Only allows requests from the specified protocol. 有効な値は、`http`、`https`、または `http,https` です。Valid values are `http`, `https`, or `http,https`.
      ec_proto_denyec_proto_deny 指定したプロトコルからの要求を拒否します。Denies requests from the specified protocol. 実装は、ec_proto_allow パラメーターと同じです。The implementation is the same as the ec_proto_allow parameter. プロトコルが ec_proto_allowec_proto_deny パラメーターの両方に存在する場合は、ec_proto_allow パラメーターが優先されます。If a protocol is present in both the ec_proto_allow and ec_proto_deny parameters, the ec_proto_allow parameter takes precedence.
      ec_clientipec_clientip 指定した要求元の IP アドレスへのアクセスを制限します。Restricts access to the specified requester's IP address. IPV4 と IPV6 の両方がサポートされています。Both IPV4 and IPV6 are supported. 1 つの要求 IP アドレスまたは特定のサブネットに関連付けられている IP アドレスのいずれかを指定することができます。You can specify either a single request IP address or IP addresses associated with a specific subnet. たとえば、`11.22.33.0/22` では、IP アドレス 11.22.32.1 から 11.22.35.254 の要求を許可します。For example, `11.22.33.0/22` allows requests from IP addresses 11.22.32.1 to 11.22.35.254.
    5. 暗号化パラメーター値の入力が完了したら、 [Key To Encrypt](暗号化キー) の一覧から暗号化キーを選びます (主キーとバックアップ キーの両方を作成した場合)。After you have finished entering encryption parameter values, select a key to encrypt (if you have created both a primary and a backup key) from the Key To Encrypt list.

    6. [Encryption Version](暗号化バージョン) の一覧から暗号化バージョンを選びます。V2 はバージョン 2 用、V3 はバージョン 3 用 (推奨) です。Select an encryption version from the Encryption Version list: V2 for version 2 or V3 for version 3 (recommended).

    7. [暗号化] を選択して、トークンを生成します。Select Encrypt to generate the token.

      トークンが生成されると、そのトークンが *[Generated Token](生成されたトークン)* ボックスに表示されます。After the token is generated, it is displayed in the Generated Token box. トークンを使用するには、そのトークンをクエリ文字列として URL パスのファイルの末尾に追加します。To use the token, append it as a query string to the end of the file in your URL path. たとえば、「 http://www.domain.com/content.mov?a4fbc3710fd3449a7c99986b 」のように入力します。For example, http://www.domain.com/content.mov?a4fbc3710fd3449a7c99986b.

    8. 必要に応じて、トークンのパラメーターを表示できるように、暗号化解除ツールでトークンをテストします。Optionally, test your token with the decrypt tool so that you can view your token's parameters. [Token to Decrypt](暗号化を解除するトークン) ボックスに、トークンの値を貼り付けます。Paste the token value in the Token to Decrypt box. [Key To Decrypt](暗号化を解除するキー) リストで暗号化キーを選び、 [暗号化解除] をクリックします。Select the encryption key to use from the Key To Decrypt list, then select Decrypt.

      トークンが暗号化解除されると、そのパラメーターが [元のパラメーター] ボックスに表示されます。After the token is decrypted, its parameters are displayed in the Original Parameters box.

    9. 必要に応じて、要求が拒否されたときに返される応答コードの種類をカスタマイズします。Optionally, customize the type of response code that is returned when a request is denied. [有効] を選択し、 [応答コード] リストから応答コードを選択します。Select Enabled, then select the response code from the Response Code list. [ヘッダー名] は、自動的に [場所] に設定されます。Header Name is automatically set to Location. [保存] を選択して新しい応答コードを実装します。Select Save to implement the new response code. 特定の応答コードについては、 [ヘッダー値] ボックスにエラー ページの URL も入力する必要があります。For certain response codes, you must also enter the URL of your error page in the Header Value box. 既定では、403 応答コード (許可されていません) が選択されています。The 403 response code (Forbidden) is selected by default.

  3. [HTTP Large](HTTP ラージ)[ルール エンジン] を選択します。Under HTTP Large, select Rules Engine. ルール エンジンを使用して、機能を適用するパスを定義したり、トークン認証機能や、追加のトークン認証関連機能を有効にしたりします。You use the rules engine to define paths to apply the feature, enable the token authentication feature, and enable additional token authentication-related capabilities. 詳細については、ルール エンジンのリファレンスを参照してください。For more information, see Rules engine reference.

    1. 既存のルールを選択するか、新しいルールを作成して、トークン認証を適用する資産またはパスを定義します。Select an existing rule or create a new rule to define the asset or path for which you want to apply token authentication.

    2. ルールでトークン認証を有効にするには、 [機能] リストから [Token Auth](トークン認証) を選択し、 [有効] を選択します。To enable token authentication on a rule, select Token Auth from the Features list, then select Enabled. ルールを更新する場合は [更新] を、ルールを作成する場合は [追加] を選択します。Select Update if you are updating a rule or Add if you are creating a rule.

      CDN ルール エンジンのトークン認証を有効にする例

  4. ルール エンジンで、追加のトークン認証関連機能を有効にすることもできます。In the rules engine, you can also enable additional token authentication-related features. 次の機能のいずれかを有効にするには、 [機能] リストからその機能を選択し、 [有効] を選択します。To enable any of the following features, select it from the Features list, then select Enabled.

    • トークン認証拒否コード :要求が拒否されたときにユーザーに返される応答の種類を決定します。Token Auth Denial Code: Determines the type of response that is returned to a user when a request is denied. トークン ベースの認証ページの [Custom Denial Handling](カスタム拒否の処理) セクションで設定された応答コードは、ここで設定されたルールでオーバーライドされます。Rules set here override the response code set in the Custom Denial Handling section on the token-based authentication page.

    • トークン認証の URL 大文字と小文字の無視 :トークンの検証に使用される URL で大文字と小文字が区別されるかどうかを決定します。Token Auth Ignore URL Case: Determines whether the URL used to validate the token is case-sensitive.

    • トークン認証パラメーター :要求された URL に表示されるトークン認証クエリ文字列パラメーターの名前を変更します。Token Auth Parameter: Renames the token auth query string parameter that appears in the requested URL.

      CDN ルール エンジンのトークン認証設定の例

  5. トークンをカスタマイズするには、GitHub でソース コードにアクセスします。You can customize your token by accessing source code in GitHub. 使用可能な言語は次のとおりです。Available languages include:

    • CC
    • C#C#
    • PHPPHP
    • PerlPerl
    • JavaJava
    • PythonPython

Azure CDN の機能とプロバイダーの価格Azure CDN features and provider pricing

機能については、Azure CDN 製品の機能に関する記事をご覧ください。For information about features, see Azure CDN product features. 価格については、「Content Delivery Network の価格」をご覧ください。For information about pricing, see Content Delivery Network pricing.