AWS Elemental MediaPackage v2 オリジンへのアクセス制限
CloudFront には、MediaPackage v2 オリジンへのアクセスを制限するためのオリジンアクセスコントロール (OAC) が用意されています。
CloudFront OAC は、MediaPackage v2 のみをサポートしています。MediaPackage v1 はサポートされていません。
CloudFront で新しい OAC を設定するには、以下のトピックに示す手順を実行します。
OAC を作成して設定する前に、MediaPackage v2 オリジンを持つ CloudFront ディストリビューションが必要です。詳細については、「MediaStore コンテナまたは MediaPackage チャネルを使用する」を参照してください。
CloudFront ディストリビューションで OAC を作成または設定する前に、CloudFront に MediaPackage v2 オリジンへのアクセス許可があることを確認してください。これは、CloudFront ディストリビューションを作成した後で、ディストリビューション設定で MediaPackage v2 オリジンに OAC を追加する前に行います。
IAM ポリシーを使用して、CloudFront サービスプリンシパル (cloudfront.amazonaws.com
) がオリジンにアクセスできるようにします。ポリシーの Condition
要素は、MediaPackage v2 オリジンを含む CloudFront ディストリビューションを対象とするリクエストに限り、MediaPackage v2 オリジンへのアクセスを CloudFront に許可します。これは、OAC を追加する MediaPackage v2 オリジンを持つディストリビューションです。
例 : OAC が有効になっている CloudFront ディストリビューションへの読み取り専用アクセスを許可する IAM ポリシー
次のポリシーは、CloudFront ディストリビューション (E1PDK09ESKHJWT
) に MediaPackage v2 オリジンへのアクセスを許可します。オリジンは、Resource
要素に指定された ARN です。
- JSON
-
-
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowCloudFrontServicePrincipal",
"Effect": "Allow",
"Principal": {"Service": "cloudfront.amazonaws.com"},
"Action": "mediapackagev2:GetObject",
"Resource": "arn:aws:mediapackagev2:us-east-1:123456789012:channelGroup/channel-group-name
/channel/channel-name
/originEndpoint/origin_endpoint_name
",
"Condition": {
"StringEquals": {"AWS:SourceArn": "arn:aws:cloudfront::123456789012:distribution/E1PDK09ESKHJWT
"}
}
}
]
}
-
MQAR 機能とオリジンアクセスコントロール (OAC) を有効にした場合は、IAM ポリシーに mediapackagev2:GetHeadObject
アクションを追加します。MQAR では MediaPackage v2 オリジンに HEAD
リクエストを送信するためにこのアクセス許可が必要です。MQAR の詳細については、「Media Quality-Aware Resiliency」を参照してください。
-
MediaPackage v2 オリジンへのアクセス許可がないディストリビューションを作成した場合は、CloudFront コンソールで [ポリシーをコピー] を選択し、[エンドポイントのアクセス許可を更新] を選択できます。次に、コピーしたアクセス許可をエンドポイントにアタッチできます。詳細については、「AWS Elemental MediaPackage ユーザーガイド」の「エンドポイントポリシーフィールド」を参照してください。
OAC を作成するには、AWS Management Console、AWS CloudFormation、AWS CLI、または CloudFront API を使用できます。
- Console
-
ディストリビューションの MediaPackage v2 オリジンに OAC を追加するには
CloudFront コンソール (https://console.aws.amazon.com/cloudfront/v4/home) を開きます。
-
OAC を追加する先の MediaPackage V2 オリジンがあるディストリビューションを選択し、[オリジン] タブを選択します。
-
OAC を追加する先の MediaPackage v2 オリジンを選択し、[編集] を選択します。
-
オリジンの [Protocol] (プロトコル) として [HTTPS only] (HTTPS のみ) を選択します。
-
[オリジンアクセスコントロール] ドロップダウンから、使用する OAC 名を選択します。
-
[Save changes] (変更の保存) をクリックします。
ディストリビューションは、すべての CloudFront エッジロケーションへのデプロイを開始します。エッジロケーションは、新しい設定を受け取ると、MediaPackage v2 オリジンに送信するすべてのリクエストに署名します。
- CloudFormation
-
AWS CloudFormation で OAC を作成するには、AWS::CloudFront::OriginAccessControl
リソースタイプを使用します。次の例は、OAC を作成するための AWS CloudFormation テンプレート構文を YAML 形式で示しています。
Type: AWS::CloudFront::OriginAccessControl
Properties:
OriginAccessControlConfig:
Description: An optional description for the origin access control
Name: ExampleOAC
OriginAccessControlOriginType: mediapackagev2
SigningBehavior: always
SigningProtocol: sigv4
詳細については、AWS CloudFormation ユーザーガイドの「AWS::CloudFront::OriginAccessControl」を参照してください。
- CLI
-
AWS Command Line Interface (AWS CLI) を使用してオリジンアクセスコントロールを作成するには、aws cloudfront create-origin-access-control コマンドを使用します。コマンドの入力パラメータは、コマンドライン入力として個別に指定せずに、入力ファイルを使用して指定できます。
オリジンアクセスコントロール (入力ファイルを含む CLI) を作成するには
-
次のコマンドを使用して、origin-access-control.yaml
という名前のファイルを作成します。このファイルには、create-origin-access-control コマンドのすべての入力パラメータが含まれます。
aws cloudfront create-origin-access-control --generate-cli-skeleton yaml-input > origin-access-control.yaml
-
先ほど作成した origin-access-control.yaml
ファイルを開きます。ファイルを編集して OAC の名前、説明 (オプション) を追加し、SigningBehavior
を always
に変更します。その後、ファイルを保存します。
その他の OAC の設定については、「オリジンアクセスコントロールの詳細設定」を参照してください。
-
次のコマンドを使用して、origin-access-control.yaml
ファイルの入力パラメータを使用し、オリジンアクセスコントロールを作成します。
aws cloudfront create-origin-access-control --cli-input-yaml file://origin-access-control.yaml
コマンド出力の Id
値を書き留めます。これは、CloudFront ディストリビューションで MediaPackage v2 オリジンに OAC を追加するために必要です。
既存のディストリビューションで MediaPackage v2 オリジンに OAC をアタッチするには (CLI で入力ファイルを使用する場合)
-
以下のコマンドを使用して、OAC を追加する CloudFront ディストリビューションのディストリビューション設定を保存します。ディストリビューションには MediaPackage v2 オリジンが必要です。
aws cloudfront get-distribution-config --id <CloudFront distribution ID>
--output yaml > dist-config.yaml
-
先ほど作成した dist-config.yaml
という名前のファイルを開きます。ファイルを編集し、以下の変更を加えます。
-
Origins
オブジェクトで、OriginAccessControlId
という名前のフィールドに OAC の ID を追加します。
-
OriginAccessIdentity
という名前のフィールドから値を削除します (存在する場合)。
-
ETag
フィールドの名前を IfMatch
に変更します。ただし、フィールドの値は変更しないでください。
完了したら、ファイルを保存します。
-
オリジンアクセスコントロールを使用するようにディストリビューションを更新するには、次のコマンドを使用します。
aws cloudfront update-distribution --id <CloudFront distribution ID>
--cli-input-yaml file://dist-config.yaml
ディストリビューションは、すべての CloudFront エッジロケーションへのデプロイを開始します。エッジロケーションは、新しい設定を受け取ると、MediaPackage v2 オリジンに送信するすべてのリクエストに署名します。
- API
-
CloudFront API で OAC を作成するには、CreateOriginAccessControl を使用します。この API コールで指定するフィールドの詳細については、AWS SDK やその他の API クライアントの API リファレンスドキュメントを参照してください。
OAC を作成したら、以下の API コールのいずれかを使用して、OAC をディストリビューションの MediaPackage v2 オリジンにアタッチできます。
これらの API コールの両方について、OriginAccessControlId
フィールドのオリジン内に OAC ID を指定します。これらの API コールで指定するその他フィールドの詳細については、「すべてのディストリビューション設定リファレンス」と、AWS SDK またはその他 API クライアントの API リファレンスドキュメントを参照してください。
CloudFront OAC 機能には、特定のユースケースのみを対象とした詳細設定が含まれています。詳細設定が特に必要でない限り、推奨設定を使用してください。
OAC には、[署名動作] (コンソール) または SigningBehavior
(API、CLI、AWS CloudFormation) という名前の設定が含まれています。この設定では、次のオプションを使用できます。
- オリジンリクエストに常に署名する (推奨設定)
-
コンソールの [Sign requests (recommended)] (署名リクエスト (推奨))、または API、CLI、および AWS CloudFormation の always
という設定を使用することをお勧めします。この設定の場合、CloudFront は MediaPackage v2 オリジンに送信するすべてのリクエストに常に署名します。
- オリジンリクエストに署名しない
-
この設定は、コンソールでは [リクエストに署名しない]、または API、CLI、およびAWS CloudFormation では never
です。この設定を使用して、この OAC を使用するすべてのディストリビューションですべてのオリジンの OAC をオフにします。OAC を使用するすべてのオリジンとディストリビューションから OAC を 1 つずつ削除する場合と比べて、この設定で時間と労力を節約できます。この設定の場合、CloudFront は MediaPackage v2 オリジンに送信するいずれのリクエストにも署名しません。
この設定を使用するには、MediaPackage v2 オリジンがパブリックにアクセス可能である必要があります。この設定を、パブリックにアクセスできない MediaPackage v2 オリジンで使用すると、CloudFront はオリジンにアクセスできません。MediaPackage v2 オリジンは CloudFront にエラーを返し、CloudFront はこれらのエラーをビューワーに渡します。詳細については、「AWS Elemental MediaPackage ユーザーガイド」の「MediaPackage のポリシーとアクセス許可」で MediaPackage v2 ポリシーの例を参照してください。
- ビューワー (クライアント) の
Authorization
ヘッダーを上書きしない
-
この設定は、コンソールでは [認可ヘッダーを上書きしない] で、API、CLI、および AWS CloudFormation では no-override
です。この設定は、対応するビューワーリクエストに Authorization
ヘッダーに含まれていない場合にのみ、CloudFront がオリジンリクエストに署名するよう指定する場合に使用します。この設定では、ビューワーリクエストが存在するが、ビューワーリクエストに Authorization
ヘッダーが含まれていないときにオリジンリクエストに署名する (独自の Authorization
ヘッダーを追加) ときに、CloudFront はビューワーリクエストから Authorization
ヘッダーを渡します。
ビューワーリクエストから Authorization
ヘッダーを渡すには、このオリジンアクセスコントロールに関連付けられた MediaPackage v2 オリジンを使用するすべてのキャッシュ動作で、Authorization
ヘッダーをキャッシュポリシーに追加する必要があります。