限制对AWS Elemental MediaStore源的访问
CloudFront 提供源访问控制(OAC),用于限制对 AWS Elemental MediaStore 源的访问。
创建新的源访问控制
完成以下主题中描述的步骤,在 CloudFront 中设置新的源访问控制。
先决条件
在创建和设置源访问控制之前,您必须拥有带有 MediaStore 源的 CloudFront 分配。
向源访问控制授予访问 MediaStore 源的权限
在创建源访问控制或在 CloudFront 分配中设置它之前,请确保 OAC 有权访问 MediaStore 源。请在创建 CloudFront 分配后,但在分配配置中将 OAC 添加到 MediaStore 源之前,执行此操作。
要授予 OAC 访问 MediaStore 源的权限,请使用 MediaStore 容器策略,以允许 CloudFront 服务主体(cloudfront.amazonaws.com
)访问源。使用策略中的 Condition
元素,仅在请求代表包含 MediaStore 源的 CloudFront 分配时,才允许 CloudFront 访问 MediaStore 容器。
以下是允许 CloudFront OAC 访问 MediaStore 源的 MediaStore 容器策略示例。
例 允许对 CloudFront OAC 进行只读访问的 MediaStore 容器策略
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCloudFrontServicePrincipalReadOnly", "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": [ "mediastore:GetObject" ], "Resource": "arn:aws:mediastore:
<region>
:111122223333
:container/<container name>
/*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::111122223333
:distribution/<CloudFront distribution ID>
" }, "Bool": { "aws:SecureTransport": "true" } } } ] }
例 允许对 CloudFront OAC 进行读写访问的 MediaStore 容器策略
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCloudFrontServicePrincipalReadWrite", "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": [ "mediastore:GetObject", "mediastore:PutObject" ], "Resource": "arn:aws:mediastore:
<region>
:111122223333
:container/<container name>
/*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::111122223333
:distribution/<CloudFront distribution ID>
" }, "Bool": { "aws:SecureTransport": "true" } } } ] }
注意
要允许写访问,您必须在 CloudFront 分配的行为设置中将 Allowed HTTP methods(允许的 HTTP 方法)配置为包含 PUT
。
创建源访问控制
要创建 OAC,可以使用 Amazon Web Services Management Console、Amazon CloudFormation、Amazon CLI 或 CloudFront API。
源访问控制的高级设置
CloudFront 源访问控制特征包括仅适用于特定使用案例的高级设置。除非您特别需要高级设置,否则请使用推荐的设置。
源访问控制包含一个名为 Signing behavior(签名行为)(在控制台中)或 SigningBehavior
(在 API、CLI 和 Amazon CloudFormation)的设置。此设置提供以下选项:
- 始终签署源请求(推荐设置)
-
我们建议使用此设置,此设置在控制台中名为签署请求(推荐),在 API、CLI 和 Amazon CloudFormation 中名为
always
。使用此设置,CloudFront 将始终签署其发送到 MediaStore 源的所有请求。 - 切勿签署源请求
-
此设置在控制台中名为 Do not sign requests(请勿签署请求),在 API、CLI 和 Amazon CloudFormation 中名为
never
。使用此设置关闭所有使用此源访问控制的分配中所有源的源访问控制。与从所有使用源访问控制的源和分配中逐一删除源访问控制相比,这可以节省时间和精力。使用此设置,CloudFront 不会签署其发送到 MediaStore 源的任何请求。警告
要使用此设置,MediaStore 源必须可供公开访问。如果您将此设置用于不可公开访问的 MediaStore 源,则 CloudFront 无法访问该源。MediaStore 源向 CloudFront 返回错误,而 CloudFront 将这些错误传递给查看器。有关更多信息,请参阅通过 HTTPS 进行公有读取访问的 MediaStore 容器策略示例。
- 不要改写查看器(客户端)
Authorization
标头 -
此设置在控制台中名为 Do not override authorization header(请勿改写授权标头),在 API、CLI 和 Amazon CloudFormation 中名为
no-override
。如果您希望 CloudFront 仅在相应的查看器请求不包含Authorization
标头时签署源请求,请使用此设置。使用此设置,CloudFront 会在查看器请求中存在Authorization
标头时传递该标头,但在查看器请求不包含Authorization
标头时对源请求进行签名(添加自己的Authorization
标头)。警告
要传递查看器请求的
Authorization
标头,您必须 针对所有使用与此源访问控制关联的 MediaStore 源的缓存行为将Authorization
标头添加到缓存策略中。