

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS Elemental MediaPackageでの CDN 認可
<a name="cdn-auth"></a>

*コンテンツ配信ネットワーク (CDN) 認可*は、コンテンツを不正使用から保護するのに役立ちます。CDN 認可を設定する場合、MediaPackage は CDN と MediaPackage の間で認可された再生リクエストのみを実行します。これにより、ユーザーがオリジン上のコンテンツに直接アクセスするために CDN をバイパスするのを防ぐことができます。

## 仕組み
<a name="working-with-cdn-auth"></a>

MediaPackage へのコンテンツリクエストに*カスタム HTTP ヘッダー*を含めるように、Amazon CloudFront などの CDN を設定します。

カスタム HTTP ヘッダーと値の例。

```
X-MediaPackage-CDNIdentifier: 9ceebbe7-9607-4552-8764-876e47032660
```

ヘッダー値を、*シークレット*として AWS Secrets Managerに保存します。CDN から再生リクエストが送信されると、MediaPackage はシークレットの値がカスタム HTTP ヘッダーの値と一致することを確認します。MediaPackage には、アクセス許可ポリシーとロールを使用してシークレットを読み取る AWS Identity and Access Management アクセス許可が付与されます。

シークレットキーと値の例。

```
{“MediaPackageCDNIdentifier”: "9ceebbe7-9607-4552-8764-876e47032660"}
```

値が一致した場合には、MediaPackage は HTTP のステータスコード `200 OK` とともにコンテンツを提供します。一致しない場合、または承認リクエストが失敗した場合、MediaPackage はコンテンツを提供せず、HTTP のステータスコード `403 Unauthorized` を送信します。

次の図に、Amazon CloudFront による正常な CDN 認可を示します。

![\[この図は、正常な CDN 認証フローを示しています。左下には、Amazon CloudFront からコンテンツをリクエストする再生デバイスが矢印で示されています。CloudFront は、矢印で示された MediaPackage へのリクエストにカスタム HTTP ヘッダーと値を含めます。MediaPackage は AWS Secrets Manager、矢印で示される からシークレット情報をリクエストします。これは、IAM からのアクセス許可に依存します。 は、シークレット値を MediaPackage に AWS Secrets Manager 応答します。緑色のチェックボックスで示されているように、MediaPackage は、シークレットがヘッダー値と一致することを確認します。MediaPackage は、動画コンテンツとともに HTTP 200 OK ステータスコードを CloudFront に送信します。CloudFront は、再生デバイスにビデオコンテンツを提供します。\]](http://docs.aws.amazon.com/ja_jp/mediapackage/latest/ug/images/cdn_auth.png)


CDN 認可を設定する手順については、「[CDN 認可の設定](cdn-auth-setup.md)」を参照してください。

# CDN 認可の設定
<a name="cdn-auth-setup"></a>

CDN 認可を設定するには、次のステップを完了します。

**Topics**
+ [ステップ 1: CDN カスタムオリジン HTTP ヘッダーを設定する](#cdn-aut-setup-cdn)
+ [ステップ 2: 値をシークレットとして に保存する AWS Secrets Manager](#cdn-aut-setup-secret)
+ [ステップ 3: MediaPackage が Secrets Manager にアクセスするための IAM ポリシーとロールを作成する](#cdn-aut-setup-iam)
+ [ステップ 4: MediaPackage で CDN 認可を有効にする](#cdn-aut-setup-endpoint)

## ステップ 1: CDN カスタムオリジン HTTP ヘッダーを設定する
<a name="cdn-aut-setup-cdn"></a>

CDN で、ヘッダー **X-MediaPackage-CDNIdentifier** と値を含むカスタムオリジン HTTP ヘッダーを設定します。値には、36 文字の文字列を生成する [UUID バージョン 4](https://www.ietf.org/rfc/rfc4122.txt) 形式を使用することをお勧めします。UUID バージョン 4 形式を使用していない場合、値を 8～128 文字にする必要があります。

CDN に認証ヘッダーが設定されている場合、MediaPackage は、エンドポイントで CDN 認証が有効になるまでエラー 404 を返します。

**重要**  
選択する値は静的な値である必要があります。CDN と の間にネイティブ統合がないため AWS Secrets Manager、値は CDN と の両方で静的である必要があります AWS Secrets Manager。CDN とシークレットを設定した後、この値を変更する場合は、手動で値を更新する必要があります。詳細については、「[CDN ヘッダー値の更新](cdn-auth-rotate.md)」を参照してください。

**ヘッダーと値の例**

```
X-MediaPackage-CDNIdentifier: 9ceebbe7-9607-4552-8764-876e47032660
```

**Amazon CloudFront でカスタムヘッダーを作成するには**

1. にサインイン AWS マネジメントコンソール し、 で CloudFront コンソールを開きます[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home)。

1. ディストリビューションを作成または編集します。

1. [**オリジンの設定**] で、フィールドに入力します。この同じ値を、Secrets Manager のシークレットにも使用します。
   + [**ヘッダー名**] に **X-MediaPackage-CDNIdentifier** と入力します。
   + **[値]** に値を入力します。36 文字の文字列を生成する UUID バージョン 4 形式を使用することをお勧めします。UUID バージョン 4 形式を使用していない場合、値を 8～128 文字にする必要があります。

1. 残りのフィールドに入力し、ディストリビューションを保存します。

CloudFront のカスタムヘッダーの詳細については、*Amazon CloudFront デベロッパーガイド*の「[Forwarding customer headers to your origin](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/forward-custom-headers.html)」を参照してください。

## ステップ 2: 値をシークレットとして に保存する AWS Secrets Manager
<a name="cdn-aut-setup-secret"></a>

 AWS Secrets Managerの*シークレット*としてカスタムオリジンの HTTP ヘッダーに使用したものと、同じ値を保存します。シークレットは、 AWS Elemental MediaPackage リソースと同じ AWS アカウントおよびリージョン設定を使用する必要があります。MediaPackage は、アカウントまたはリージョン間でのシークレットの共有をサポートしていません。ただし、同じリージョン内および同じアカウントの複数のエンドポイントで同じシークレットを使用することはできます。

**Secrets Manager にシークレットを保存するには**

1. [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/) で AWS Secrets Manager コンソールにサインインします。

1. **新しいシークレットを保存** を選択します。**[シークレットのタイプ]** で、**[その他のシークレットのタイプ]** を選択します。

1. **[キー/値のペア]** に、キーと値の情報を入力します。
   + 左側のボックスに **MediaPackageCDNIdentifier** を入力します。
   + 右側のボックスに、カスタムオリジン HTTP ヘッダーに設定した値を入力します。例えば、`9ceebbe7-9607-4552-8764-876e47032660`。

1. **[暗号化キー]** は、デフォルト値の **[DefaultEncryptionKey]** のままにしておくことができます。

1. [**次へ**] を選択します。

1. **[Secret name]** (シークレット名) には、MediaPackage で使用するシークレットであることがわかるように、**MediaPackage/** をプレフィックスすることをお勧めします。例えば、**MediaPackage/cdn\$1auth\$1us-west-2**。

1. [**次へ**] を選択します。

1. [**自動ローテーションを設定する**] は、既定の [**自動ローテーションを無効にする**] 設定のままにします。

   認可コードを後でローテーションする必要がある場合は、「[CDN ヘッダー値の更新](cdn-auth-rotate.md)」を参照してください。

1. **[Next]** (次へ) を選択してから、**[Store]** (保存) を選択します。

   これにより、シークレットのリストに移動します。

1. シークレット名を選択して、[**シークレットの ARN**] を表示します。ARN は、`arn:aws:secretsmanager:us-west-2:123456789012:secret:MediaPackage/cdn_auth_test-xxxxxx` のような値です。シークレットの ARN は、「ステップ 4: MediaPackage で CDN 認可を有効にする」で、MediaPackage のために CDN 認可を設定する際に使用します。

## ステップ 3: MediaPackage が Secrets Manager にアクセスするための IAM ポリシーとロールを作成する
<a name="cdn-aut-setup-iam"></a>

MediaPackage に Secrets Manager への読み取りアクセスを許可する IAM ポリシーとロールを作成します。MediaPackage は CDN から再生リクエストを受信すると、保存されているシークレット値がカスタム HTTP ヘッダー内の値と一致することを確認します。[AWS Elemental MediaPackage に他の AWS サービスへのアクセスを許可する](setting-up-create-trust-rel.md) のステップに従って、ポリシーとロールを設定します。

## ステップ 4: MediaPackage で CDN 認可を有効にする
<a name="cdn-aut-setup-endpoint"></a>

MediaPackage コンソール、 AWS CLI、MediaPackage API を使用して、エンドポイントまたはビデオオンデマンド (VOD) パッケージグループ用の CDN 認可を有効にできます。「ステップ 3: MediaPackage が Secrets Manager にアクセスするための IAM ポリシーとロールを作成する」で作成した IAM ポリシーとロールの ARN を使用します。

**ヒント**  
同じリージョン内および同じアカウントの複数のエンドポイントでは、同じシークレットを使用します。ワークフローに必要な場合にのみ、新しいシークレットを作成することで、コストを削減します。

CDN に認証ヘッダーが設定されている場合、MediaPackage は、エンドポイントで CDN 認証が有効になるまでエラー 404 を返します。

**コンソールを使用してライブコンテンツの CDN 認可を有効にするには**

1. MediaPackage コンソール ([https://console.aws.amazon.com/mediapackage/](https://console.aws.amazon.com/mediapackage/)) を開きます。

1. チャネルがまだない場合は、チャネルを作成します。ヘルプについては、「[チャンネルの作成](channels-create.md)」を参照してください。

1. エンドポイントを作成または編集します。

1. **[アクセス制御の設定]** で、**[承認を使用する]** を選択します。フィールドに入力します。
   + **[シークレットロール ARN]** に、「[ステップ 3: MediaPackage が Secrets Manager にアクセスするための IAM ポリシーとロールを作成する](#cdn-aut-setup-iam)」で作成した IAM ロールの ARN を入力します。
   + **[CDN 識別子シークレット ARN]** に、CDN がエンドポイントへのアクセス認可に使用する Secrets Manager でのシークレットの ARN を入力します。

1. 必要に応じて残りのフィールドに入力し、エンドポイントを保存します。

**コンソールを使用して VOD コンテンツの CDN 認可を有効にするには**

1. MediaPackage コンソール ([https://console.aws.amazon.com/mediapackage/](https://console.aws.amazon.com/mediapackage/)) を開きます。

1. VOD パッケージンググループをまだ作成していない場合は、作成します。ヘルプについては、「[パッケージグループの作成](pkg-group-create.md)」を参照してください。

1. パッケージンググループを作成または編集します。

1. **[アクセスコントロールを設定]** で、**[認証を有効にする]** を選択します。フィールドに入力します。
   + **[シークレットロール ARN]** に、「[ステップ 3: MediaPackage が Secrets Manager にアクセスするための IAM ポリシーとロールを作成する](#cdn-aut-setup-iam)」で作成した IAM ロールの ARN を入力します。
   + **[CDN 識別子シークレット ARN]** に、CDN がエンドポイントへのアクセス認可に使用する Secrets Manager でのシークレットの ARN を入力します。

1. 必要に応じて残りのフィールドに入力し、パッケージンググループを保存します。

これで、CDN 認可のセットアップが完了しました。このエンドポイントへのリクエストには、Secrets Manager に保存したものと同じ認可コードが含まれている必要があります。

**MediaPackage API を使用して CDN 認可を有効にするには**  
MediaPackage API を使用して CDN 認可を有効にする方法については、以下の API リファレンスを参照してください。
+ [MediaPackage ライブ API リファレンス](https://docs.aws.amazon.com/mediapackage/latest/apireference/resources.html)
+ [MediaPackage VOD API リファレンス](https://docs.aws.amazon.com/mediapackage-vod/latest/apireference/)

# CDN ヘッダー値の更新
<a name="cdn-auth-rotate"></a>

CDN カスタムオリジン HTTP ヘッダーの値を変更する場合は、Secrets Manager に保存されているシークレット値を更新する必要があります。次の手順では、Secrets Manager 内の値を更新して、CDN の HTTP ヘッダー値と Secrets Manager に保存されているシークレット値が、同期していることを確認する方法について説明します。

**値を更新するには**

1. *AWS Secrets Manager ユーザーガイド*の「[シークレットの変更](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_update-secret.html)」にある説明に従って、Secrets Manager に格納されたシークレット値を更新します。

   アクティブストリームの再生に継続性を持たせるために、MediaPackage では、Secrets Manager にある現在の値、または 1 つ前のバージョンの値を使用するリクエストを承認します。

1. 10 分間待機し、Secrets Manager で値が変更されたことを MediaPackage に認識させます。

1. CDN で、`X-MediaPackage-CDNIdentifier` の値を新しい認可コードに更新します。

1. CDN が新しい値で完全に更新されるのを待ってから、この CDN 経由でリクエストを MediaPackage に送信します。

   前のシークレット値を無効にするには、新しいシークレット値を 2 回保存します。こうすることで、現在のシークレットバージョンと以前のシークレットバージョンの両方が同じ値を持ちます。