Azure Content Delivery Network と SAS の使用

コンテンツのキャッシュに使用する目的で Azure Content Delivery Network にストレージ アカウントを設定する場合、既定ではそのストレージ コンテナーの URL を知っているすべてのユーザーが、アップロードされたファイルにアクセスすることができます。 ストレージ アカウント内のファイルを保護するには、ストレージ コンテナーのアクセス設定をパブリックからプライベートに変更できます。 ただし、この設定では、どのユーザーもファイルにアクセスできません。

プライベート ストレージ コンテナーへの制限付きアクセス権限を付与するには、Azure Storage アカウントの Shared Access Signature (SAS) 機能を使用できます。 SAS は、アカウント キーを公開することなく Azure Storage リソースへの制限付きアクセス権を付与する URI です。 ストレージ アカウント キーで信頼していないが特定のストレージ アカウント リソースへのアクセスを委任するクライアントに SAS を提供できます。 これらのクライアントに Shared Access Signature URI を配布して、指定した期間中のリソースへのアクセスを許可します。

SAS を使用すると、開始時刻や有効期限、アクセス許可 (読み取り/書き込み)、IP 範囲など、BLOB へのアクセスに関するさまざまなパラメーターを定義することができます。 この記事では、Azure Content Delivery Network で SAS を使用する方法について説明します。 作成方法やパラメーター オプションなど、SAS について詳しくは、「Shared Access Signatures (SAS) の使用」をご覧ください。

ストレージ SAS と連携する Azure Content Delivery Network の設定

Azure Content Delivery Network で SAS を使用するには、次の 2 つのオプションをお勧めします。 すべてのオプションで、動作する SAS が既に作成されていることを前提としています (前提条件をご覧ください)。

前提条件

まず、ストレージ アカウントを作成し、資産の SAS を生成します。 保存されている 2 種類のアクセス署名 (サービス SAS またはアカウント SAS) を生成できます。 詳しくは、「共有アクセス署名の種類」をご覧ください。

SAS トークンが生成されたら、URL の末尾に ?sv=<SAS token> を追加することにより、BLOB ストレージ ファイルにアクセスできます。 この URL は、以下のフォーマットになります。

https://<account name>.blob.core.windows.net/<container>/<file>?sv=<SAS token>

次に例を示します。

https://democdnstorage1.blob.core.windows.net/container1/demo.jpg?sv=2017-07-29&ss=b&srt=co&sp=r&se=2038-01-02T21:30:49Z&st=2018-01-02T13:30:49Z&spr=https&sig=QehoetQFWUEd1lhU5iOMGrHBmE727xYAbKJl5ohSiWI%3D

パラメーターの設定について詳しくは、「SAS パラメーターに関する考慮事項」と Shared Access Signature パラメーターを参照してください。

コンテンツ配信ネットワークの SAS 設定のスクリーンショット。

オプション 1: Azure Content Delivery Network から BLOB ストレージへのパススルーで SAS を使用する

このオプションは最も簡単で、Azure Content Delivery Network から配信元サーバーに渡される 1 つの SAS トークンを使用します。

  1. エンドポイントを選択し、 [キャッシュ規則] をクリックしてから、 [クエリ文字列のキャッシュ] の一覧で [一意の URL をすべてキャッシュ] を選択します。

    コンテンツ配信ネットワーク キャッシュ ルールのスクリーンショット。

  2. ストレージ アカウント上に SAS を設定した後、ファイルにアクセスするには、コンテンツ配信ネットワーク エンドポイントと配信元サーバー URL で SAS トークンを使用する必要があります。

    生成されるコンテンツ配信ネットワーク エンドポイント URL の形式は次のとおりです: https://<endpoint hostname>.azureedge.net/<container>/<file>?sv=<SAS token>

    次に例を示します。

    https://demoendpoint.azureedge.net/container1/demo.jpg?sv=2017-07-29&ss=b&srt=c&sp=r&se=2027-12-19T17:35:58Z&st=2017-12-19T09:35:58Z&spr=https&sig=kquaXsAuCLXomN7R00b8CYM13UpDbAHcsRfGOW3Du1M%3D

  3. キャッシュ規則を使用するか、配信元サーバーに Cache-Control ヘッダーを追加して、キャッシュ期間を微調整します。 Azure Content Delivery Network では SAS トークンはプレーンなクエリ文字列として処理されるため、ベスト プラクティスとして、SAS の有効期限以前にキャッシュの有効期限が切れるように設定する必要があります。 そうしなければ、SAS がアクティブな期間よりも長くファイルがキャッシュされた場合、SAS の有効期限が過ぎた後も、Azure Content Delivery Network の配信元サーバーからそのファイルにアクセスすることができる場合があります。 この状況が発生した場合、キャッシュされたファイルにアクセスできないようにするには、ファイルに対し消去操作を実行して、キャッシュから削除する必要があります。 Azure Content Delivery Network 上のキャッシュ期間設定について詳しくは、「キャッシュ規則で Azure Content Delivery Network キャッシュの動作を制御する」を参照してください。

オプション 2: 書き換えルールでコンテンツ配信ネットワーク セキュリティ トークン認証を使用する

Azure Content Delivery Network セキュリティ トークン認証を使用するには、Azure CDN Premium from Edgio プロファイルが必要です。 このオプションは、最も安全かつカスタマイズ可能です。 クライアント アクセスは、セキュリティ トークンに設定されているセキュリティ パラメーターを使用して実行されます。 セキュリティ トークンを作成して設定すると、すべてのコンテンツ配信ネットワーク エンドポイント URL 上でそれが必要になります。 ただし、URL 書き換えルールにより、SAS トークンはコンテンツ配信ネットワーク エンドポイント上では必要ありません。 SAS トークンが後で無効になった場合、Azure Content Delivery Network は配信元サーバーからのコンテンツを再検証することはできません。

  1. Azure Content Delivery Network セキュリティ トークンを作成し、コンテンツ配信ネットワーク エンドポイントのルール エンジンと、ユーザーがファイルにアクセスすることができるパスを使用してそれをアクティブ化します。

    セキュリティ トークン エンドポイント URL は、次のような形式です。

    https://<endpoint hostname>.azureedge.net/<container>/<file>?<security_token>

    次に例を示します。

    https://sasstoragedemo.azureedge.net/container1/demo.jpg?a4fbc3710fd3449a7c99986bkquaXsAuCLXomN7R00b8CYM13UpDbAHcsRfGOW3Du1M%3D

    セキュリティ トークン認証のためのパラメーター オプションは、SAS トークンのパラメーター オプションとは異なります。 セキュリティ トークンを作成する際に有効期限を使用する場合は、SAS トークンの有効期限と同じ値に設定する必要があります。 これにより、有効期限が予測可能になります。

  2. コンテナー内のすべての BLOB にアクセスできる SAS トークンを有効にするには、ルール エンジンを使用して URL 書き換えルールを作成します。 新しいルールが反映されるまで最大で 4 時間かかります。

    次のサンプル URL 書き換えルールでは、キャプチャ グループを使用する正規表現パターンと、sasstoragedemo という名前のエンドポイントを使用します。

    ソース:

    (container1/.*)

    変換先:

    $1&sv=2017-07-29&ss=b&srt=c&sp=r&se=2027-12-19T17:35:58Z&st=2017-12-19T09:35:58Z&spr=https&sig=kquaXsAuCLXomN7R00b8CYM13UpDbAHcsRfGOW3Du1M%3Dコンテンツ配信ネットワーク URL 書き換えルールのスクリーンショット - 左。コンテンツ配信ネットワーク URL 書き換えルールのスクリーンショット - 右。

  3. SAS を更新する場合は、新しい SAS トークンを使用して URL 書き換えルールを確実に更新してください。

SAS パラメーターに関する考慮事項

SAS パラメーターは Azure Content Delivery Network には見えないため、Azure Content Delivery Network ではそれらに基づいてその配信動作を変更することはできません。 定義されたパラメーター制限は、Azure Content Delivery Network から配信元サーバーへの要求に対してのみ適用されます (クライアントから Azure Content Delivery Network への要求は対象外)。 この差は、SAS パラメーターを設定する際に重要になります。 これらの高度な機能が必要とされ、かつオプション 2 を採用している場合は、Azure Content Delivery Network セキュリティ トークンに対して適切な制限を設定します。

SAS パラメーター名 説明
スタート Azure Content Delivery Network が BLOB ファイルへのアクセスを開始することができる時間。 クロックのずれ (クロック シグナルが各コンポーネントで受信された時刻が異なる) のため、アセットをすぐ使用する必要がある場合は、15 分早い時刻を選択してください。
末尾 Azure Content Delivery Network が BLOB ファイルにアクセスすることができなくなる時間。 以前に Azure Content Delivery Network 上にキャッシュされたファイルには引き続きアクセスすることができます。 ファイルの有効期限を制御するには、Azure Content Delivery Network セキュリティ トークンに対して適切な有効期限を設定するか、その資産を消去します。
許可された IP アドレス 省略可能。 Azure CDN from Edgio を使用している場合は、このパラメーターを、Azure Content Delivery Network from Edgio の Edge サーバー IP 範囲の中で定義されている範囲に設定することができます。
許可されるプロトコル アカウント SAS を使用して行われた要求に対して許可されるプロトコル。 HTTPS 設定をお勧めします。

次のステップ

SAS の詳細については、次の記事を参照してください。

トークン認証設定の詳細については、「トークン認証による Azure Content Delivery Network 資産の保護」をご覧ください。