限制对 AWS Elemental MediaPackage v2 源的访问
CloudFront 提供源访问控制(OAC),用于限制对 MediaPackage v2 源的访问。
注意
CloudFront OAC 仅支持 MediaPackage v2。不支持 MediaPackage v1。
创建新的 OAC
完成以下主题中描述的步骤,在 CloudFront 中设置新的 OAC。
先决条件
在创建和设置 OAC 之前,您必须拥有带 MediaPackage v2 源的 CloudFront 分配。有关更多信息,请参阅使用 MediaStore 容器或 MediaPackage 通道。
向 OAC 授予访问 MediaPackage v2 源的权限
在创建 OAC 或在 CloudFront 分配中设置它之前,请确保 OAC 有权访问 MediaPackage v2 源。请在创建 CloudFront 分配后,但在分配配置中将 OAC 添加到 MediaPackage v2 源之前,执行此操作。
要授予 OAC 访问 MediaPackage v2 源的权限,请使用 IAM 策略,以允许 CloudFront 服务主体(cloudfront.amazonaws.com
)访问源。使用策略中的 Condition
元素,仅 在该请求代表包含 MediaPackage v2 源的 CloudFront 分配时,才允许 CloudFront 访问 MediaPackage v2 源。
例 :允许对 CloudFront 分配进行只读访问的 IAM 策略
以下策略允许 CloudFront 分配(
)访问 MediaPackage v2 源。该源是为 E1PDK09ESKHJWT
Resource
元素指定的 ARN。
{ "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
"} } } ] }
注意
如果您创建的分配无权访问您的 MediaPackage v2 源,则可以从 CloudFront 控制台中选择复制策略,然后选择更新端点权限。然后,您可以将复制的权限附加到端点。有关更多信息,请参阅《AWS Elemental MediaPackage 用户指南》中的端点策略字段。
创建 OAC
要创建 OAC,可以使用 Amazon Web Services Management Console、Amazon CloudFormation、Amazon CLI 或 CloudFront API。
源访问控制的高级设置
CloudFront OAC 功能包括仅适用于特定使用案例的高级设置。除非您特别需要高级设置,否则请使用推荐的设置。
OAC 包含一个名为签名行为(在控制台中)或 SigningBehavior
(在 API、CLI 和 Amazon CloudFormation 中)的设置。此设置提供以下选项:
- 始终签署源请求(推荐设置)
-
我们建议使用此设置,此设置在控制台中名为签署请求(推荐),在 API、CLI 和 Amazon CloudFormation 中名为
always
。使用此设置,CloudFront 将始终签署自己发送到 MediaPackage v2 源的所有请求。 - 切勿签署源请求
-
此设置在控制台中名为 Do not sign requests(请勿签署请求),在 API、CLI 和 Amazon CloudFormation 中名为
never
。使用此设置关闭所有使用此 OAC 的分配中所有源的 OAC。与从所有使用 OAC 的源和分配中逐一删除 OAC 相比,这可以节省时间和精力。使用此设置,CloudFront 不会签署自己发送到 MediaPackage v2 源的任何请求。警告
要使用此设置,MediaPackage v2 源必须可供公开访问。如果您将此设置用于不可公开访问的 MediaPackage v2 源,则 CloudFront 无法访问该源。MediaPackage v2 源向 CloudFront 返回错误,而 CloudFront 将这些错误传递给查看器。有关更多信息,请参阅《AWS Elemental MediaPackage 用户指南》中针对 MediaPackage 中的策略和权限的 MediaPackage v2 策略示例。
- 不要改写查看器(客户端)
Authorization
标头 -
此设置在控制台中名为 Do not override authorization header(请勿改写授权标头),在 API、CLI 和 Amazon CloudFormation 中名为
no-override
。如果您希望 CloudFront 仅在相应的查看器请求不包含Authorization
标头时签署源请求,请使用此设置。使用此设置,CloudFront 会在查看器请求中存在Authorization
标头时传递该标头,但在查看器请求不包含Authorization
标头时对源请求进行签名(添加自己的Authorization
标头)。警告
要传递查看器请求的
Authorization
标头,您必须 针对所有使用与此源访问控制关联的 MediaPackage v2 源的缓存行为将Authorization
标头添加到缓存策略中。