ApsaraVideo Liveでは、リファラーヘッダー、ユーザーエージェントヘッダー、またはIPアドレスに基づいてブラックリストまたはホワイトリストを設定することにより、アクセス制御を実装できます。 このトピックでは、ApsaraVideo Liveのアクセス制御機能を使用するタイミングと方法について説明します。
概要
アクセス制御機能を使用すると、クラウド上のビデオリソースのアクセスポリシーを設定できます。 この使いやすい機能は、シンプルな設定のみで済み、アクセスポリシーが迅速に有効になります。 次のタイプのアクセスポリシーがサポートされています。
リファラーブラックリストまたはホワイトリスト
User-Agent ブラックリストまたはホワイトリスト
IP アドレスのブラックリストまたはホワイトリスト
複雑な設定と誤操作のリスクがあるため、ApsaraVideo LiveコンソールでUser-Agentブラックリストまたはホワイトリストを設定することはできません。 User-Agentブラックリストまたはホワイトリストを設定する場合は、テクニカルサポートのためにAlibaba Cloudにチケットを起票してください。 チケットの起票方法については、「お問い合わせ」をご参照ください。
シナリオ
アクセス制御機能は、単純な構成のみを必要とします。 この機能は、サービス、特にwebサービスを不正アクセスから保護するのに役立ちます。
HTTPヘッダーは偽造されやすいため、リファラーとユーザーエージェントのブラックリストとホワイトリストの保護レベルは低くなります。
IPアドレスブラックリストとホワイトリストは、多数のコンシューマーにコンテンツを配布するシナリオには適していません。
リファラーブラックリストまたはホワイトリスト
概要
Refererは、サーバーがリクエストのソースを識別できるようにするHTTPリクエストヘッダーです。 リファラーブラックリストまたはホワイトリストを設定して、リファラーヘッダーに基づいてリソースアクセスを制御できます。
リクエストがAlibaba Cloud CDNポイントオブプレゼンス (POP) に送信された後、POPは事前設定されたリファラーホワイトリストまたはブラックリストに基づいてリクエストを認証します。 要求が認証に合格した場合、ビデオデータが返されます。 それ以外の場合、HTTPステータスコード403が返されます。
デフォルトでは、リファラーブラックリストまたはホワイトリストは使用されません。 ビジネス要件に基づいて、リファラーブラックリストまたはホワイトリストを設定できます。
リファラーブラックリストまたはホワイトリストにドメイン名を追加すると、すべてのサブドメインが自動的に追加されます。 たとえば、リファラーホワイトリストまたはブラックリストに
example.com
を追加した場合、このアクセスポリシーはワイルドカードサブドメイン* .example.com
に対して有効になります。空のRefererヘッダーを持つリクエストを許可するかどうかを指定できます。 これらのリクエストを許可すると、ユーザーはアドレスバーにURLを入力することで、ビデオリソースに直接アクセスできます。
設定
ApsaraVideo Liveコンソールでリファラーブラックリストまたはホワイトリストを設定できます。 詳細については、「ホットリンク保護の設定」をご参照ください。
BatchSetLiveDomainConfigsを呼び出して、複数のストリーミングドメインのリファラーブラックリストまたはホワイトリストを設定することもできます。
次のサンプルコードは、Java用サーバーSDKを使用してRefererホワイトリストを設定する方法の例を示しています。
// Replace the placeholder values with actual values. DefaultProfile profile = DefaultProfile.getProfile("<regionId>", "<ALIBABA_CLOUD_ACCESS_KEY_ID>", "<ALIBABA_CLOUD_ACCESS_KEY_SECRET>"); IAcsClient client = new DefaultAcsClient(profile); BatchSetLiveDomainConfigsRequest batchSetLiveDomainConfigsRequest =new BatchSetLiveDomainConfigsRequest(); batchSetLiveDomainConfigsRequest.setDomainNames("<DomainNames>"); batchSetLiveDomainConfigsRequest.setFunctions("[{\"functionArgs\":[{\"argName\":\"refer_domain_allow_list\",\"argValue\":\"<referer_white_domain_list>\"},{\"argName\":\"allow_empty\",\"argValue\":\"<off>\"}],\"functionName\":\"referer_white_list_set\"}]"); try { BatchSetLiveDomainConfigsResponse response = client.getAcsResponse(batchSetLiveDomainConfigsRequest); System.out.println(new Gson().toJson(response)); //todo something } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); }
説明上記のサンプルコードでは、DomainNamesパラメーターは、Refererホワイトリストが設定されているストリーミングドメインを指定します。 referer_white_domain_listフィールドには、リファラーホワイトリストに追加するドメイン名を指定します。 allow_emptyパラメーターはoffに設定され、空のRefererヘッダーが許可されないことを指定します。
Java用サーバーSDKの詳細については、「Java用サーバーSDKの使用」をご参照ください。
使用上の注意
重要ブラックリストとホワイトリストは相互に排他的であり、同時に使用することはできません。
ほとんどの場合、モバイルクライアントからのリクエストにはRefererヘッダーは含まれません。 デフォルトでは、サーバーはこれらの要求を許可します。 リファラーヘッダーが空のリクエストをブロックする場合、ApsaraVideo Playerを使用して、モバイルクライアントの信頼できるリファラーヘッダーを設定できます。
Refererヘッダーが空のリクエストをブロックする場合は、リクエストをHTTPからHTTPSに強制的にリダイレクトするようにHTTPSセキュアアクセラレーションとURLリダイレクトを設定する必要があります。 URLリダイレクトは、ブラウザがHTTPリソースのHTTPSリクエストからRefererヘッダーを削除したときに発生するアクセス失敗を防ぐのに役立ちます。
例:
demo.developer.aliyundoc.com
ストリーミングドメインのRefererホワイトリストにexample.com
を追加し、空のRefererヘッダーでリクエストをブロックします。空のRefererヘッダーを持つサンプルリクエスト:
curl -i 'http://demo.developer.aliyundoc.com/apptest/stream0000'
サンプルエラー応答:
X-Tengine-Error:denied by Referer ACL
信頼できるRefererヘッダーを含むサンプルリクエスト:
curl -i 'http://demo.developer.aliyundoc.com/apptest/stream0000' \ -H 'Referer: http://www.example.com'
User-Agent ブラックリストまたはホワイトリスト
概要
User − Agentヘッダは、サーバが、レンダリングエンジン、プログラミング言語、およびブラウザのプラグインを含む、要求しているユーザエージェントのオペレーティングシステム、CPU、およびブラウザを識別することを可能にする特徴的な文字列です。 User-Agentブラックリストまたはホワイトリストを設定して、特定のブラウザまたは端末からのアクセスを制御できます。
設定
User-Agentブラックリストまたはホワイトリストを設定するには、テクニカルサポートのためにAlibaba Cloudにチケットを起票してください。 チケットの起票方法については、「お問い合わせ」をご参照ください。
例:
リクエストがPC上のInternet Explorer 9から送信されたことを示すサンプルUser-Agentヘッダー:
User-Agent:Mozilla/5.0(compatible;MSIE9.0;WindowsNT6.1;Trident/5.0;
User-Agentヘッダーを含むサンプルリクエスト:
curl -i 'http://demo.developer.aliyundoc.com/apptest/stream0000' \ -H 'User-Agent: iPhone OS;MI 5'
IP アドレスのブラックリストまたはホワイトリスト
概要
ApsaraVideo Liveでは、高速化ドメイン名のIPアドレスブラックリストまたはホワイトリストを設定できます。
ブラックリストを設定した場合、ブラックリスト内のIPアドレスは高速化ドメイン名にアクセスできません。
ホワイトリストを設定すると、ホワイトリスト内のIPアドレスのみが高速化ドメイン名にアクセスできます。
IPアドレスまたはCIDRブロックのリストを追加できます。
たとえば、127.0.0.0/24をIPアドレスブラックリストまたはホワイトリストに追加できます。 「 /24」は、32ビットのIPアドレスの最初の24ビットがネットワーク部分に使用され、残りの8ビットがホスト部分に使用されることを示します。 したがって、サブネットは最大254台のホストを収容でき、サブネット内のIPアドレスの範囲は127.0.0.0から127.0.0.254です。
IPv6アドレスがサポートされています。
設定
ApsaraVideo LiveコンソールでIPアドレスブラックリストまたはホワイトリストを設定できます。 詳細については、「IPアドレスブラックリストまたはホワイトリストの設定」をご参照ください。
BatchSetLiveDomainConfigsを呼び出して、IPアドレスをブラックリストまたはホワイトリストに追加することもできます。
次のサンプルコードは、Java用サーバーSDKを使用してIPアドレスホワイトリストを設定する方法の例を示しています。
// Replace the placeholder values with actual values. DefaultProfile profile = DefaultProfile.getProfile("<regionId>", "<ALIBABA_CLOUD_ACCESS_KEY_ID>", "<ALIBABA_CLOUD_ACCESS_KEY_SECRET>"); IAcsClient client = new DefaultAcsClient(profile); BatchSetLiveDomainConfigsRequest batchSetLiveDomainConfigsRequest =new BatchSetLiveDomainConfigsRequest(); batchSetLiveDomainConfigsRequest.setDomainNames("<DomainNames>"); batchSetLiveDomainConfigsRequest.setFunctions("[{\"functionArgs\":[{\"argName\":\"ip_list\",\"argValue\":\"<127.0.0.0/24>\"}],\"functionName\":\"ip_allow_list_set\"}]"); try { BatchSetLiveDomainConfigsResponse response = client.getAcsResponse(batchSetLiveDomainConfigsRequest); System.out.println(new Gson().toJson(response)); //todo something } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); }
説明上記のサンプルコードでは、DomainNamesパラメーターは、ホワイトリストが設定されているストリーミングドメインを指定します。 127.0.0.0/24 CIDRブロックのIPアドレスがホワイトリストに追加されます。
Java用サーバーSDKの詳細については、「Java用サーバーSDKの使用」をご参照ください。
使用上の注意
重要ブラックリストとホワイトリストは相互に排他的であり、同時に使用することはできません。
最大1,000個のIPv6アドレスまたは3,000個のIPv4アドレスを追加できます。 IPv6アドレスは大文字と小文字を区別しません。 IPv6アドレスの表記は省略できません。